VBATips

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

選択した範囲をCSV出力したい

Excelで、特定の範囲をCSVファイルに出力し
他アプリケーションへインポートさせたいケースがあります。

下記のようにActiveSheetや、すべてのシートをCSVエクスポートするケースだけではなく、
シートの作成上、一部分だけCSV出力させたいケースもあるかと思います。

選択した範囲のCSV出力サンプルコード

範囲選択した部分(Range)をCSVファイルとして出力するマクロは以下です。

'■現在開いているシートをCSVデータで保存する
Public Sub call_RangeSaveCSV()
    Dim fPath As String
    Dim fName As String
    Dim rng As Range
    
    '■現在開いているブック情報をファイル名にするため、変数に格納
    fPath = ActiveWorkbook.Path & "\"
    fName = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".")) & "csv"
    
    Application.DisplayAlerts = False
    
    '■現在選択しているセル情報をrngに格納
    Set rng = Selection
    
    '■新規ブック作成→rngをA1にコピー→CSV保存→CSV閉じる
    Workbooks.Add
    rng.Copy ActiveSheet.Range("A1")
        
    ActiveWorkbook.SaveAs Filename:=fPath & fName, FileFormat:=xlCSV
    ActiveWindow.Close
    
    Application.DisplayAlerts = True

End Sub

[/vbnet]

注意点

  • 個人用マクロブックでご紹介していますが、アドイン化も一つの手です。
  • CSVは基本、ダブルクォーテーションでは囲いません
  • 数値がカンマ(,)区切りになっている場合は、該当値をダブルクォーテーションで囲います
  • 保存先のファイルが既に存在してた場合は、強制的に上書きします。

関連記事

コメント

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