VBATips

「指定した範囲をxlsx出力して保存する」【VBAマクロ】

選択した範囲を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 列挙体]

コメント

タイトルとURLをコピーしました