選択した範囲をxlsx出力したい
Excelで、特定の範囲を別のExcelファイル(xlsx/xlsm/xls)に出力したいケースがあります。
下記のようにActiveSheetや、すべてのシートをCSVエクスポートするケースだけではなく、
シートの作成上、一部分だけCSV出力させたいケースもあるかと思います。
「ブックをシート毎にxlsx保存(分割保存)する処理」をパーツ化する。【エクセルVBA】
今回は、範囲選択した部分(Range)をxlsxファイルとして出力するマクロは以下です。
選択した範囲のxlsx出力サンプルコード
'■現在開いているシートをxlsxデータで保存する
Public Sub call_RangeSaveXLSX()
Dim fPath As String
Dim fName As String
Dim rng As Range
'■現在開いているブック情報をファイル名にするため、変数に格納
'今回は既存ファイル名の末尾に当日日付をyymmdd形式で付与して保存(21/02/04なら_210204を末尾に付与)
fPath = ActiveWorkbook.Path & "\"
fName = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1) & "_" & Format(Now(), "yymmdd") & ".xlsx"
Application.DisplayAlerts = False
'■現在選択しているセル情報をrngに格納
Set rng = Selection
'■新規ブック作成→rngをA1にコピー→xlsx保存→xlsx閉じる
Workbooks.Add
rng.Copy ActiveSheet.Range("A1")
ActiveWorkbook.SaveAs Filename:=fPath & fName, FileFormat:=xlWorkbookDefault
ActiveWindow.Close
Application.DisplayAlerts = True
End Sub
[/vbnet]注意点
- 個人用マクロブックでご紹介していますが、アドイン化も一つの手です。
- 保存先のファイルが既に存在してた場合は、強制的に上書きします。
関連記事
「指定した範囲をタブ区切り(TSV)テキスト出力して保存する」【VBAマクロ】
「指定した範囲をCSV出力して保存する」【VBAマクロ】
【VBA一覧】「名前を付けて保存」「ファイルを保存する」に使う拡張子[XlFileFormat 列挙体]



コメント