【VBA】指定した範囲をCSVファイルへ出力する

VBAを使用して
 ・指定した範囲を
 ・CSVファイルへ出力する
方法を記載します!

PR

VBAコード

ここでは例として、
 ・シート「sample」のセル「B2」から続く一連の範囲
 ・デスクトップ配下へファイル「sample.csv」として出力
します。

シート「sample」の内容
Option Explicit

Sub sample()

    '出力するCSVファイル
    Const CSV_FILE As String = "C:\Users\user\Desktop\sample.csv"

    Dim targetRange As Range
    Dim wb As Workbook
    Dim fso As Object
    
    'CSVファイルへ出力する範囲を指定
    Set targetRange = Worksheets("sample").Range("B2").CurrentRegion
    
    '新規ブックを作成
    Set wb = Workbooks.Add
    
    'CSVファイルへ出力する範囲を新規ブックへコピー
    targetRange.Copy wb.Worksheets(1).Range("A1")
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    '出力するCSVファイルが既に存在する場合は削除
    If fso.FileExists(CSV_FILE) Then
        fso.deleteFile CSV_FILE
    End If

    '新規ブックをCSVファイルとして出力
    wb.SaveAs Filename:=CSV_FILE, FileFormat:=xlCSV
    
    '新規ブックを保存せずに閉じる
    wb.Close SaveChanges:=False
    
    '後片付け
    Set fso = Nothing

End Sub
処理の大まかな流れ
  1. 新規ブックを作成し出力する内容をコピペ
  2. 新規ブックをCSVファイルとして出力
  3. 新規ブックは保存せずに閉じる

「Range(“B2”).CurrentRegion」により、セル「B2」から続く一連の範囲を取得できます。

既に同名のCSVファイルが存在する場合、出力前に削除しています。
※メッセージ「ファイルが既にあります。置き換えますか?」の表示により、処理が停止することを防止するため。

「FileFormat:=」に「xlCSV」または「xlCSVUTF8」を指定することで、CSVファイルとして出力できます。
※「xlCSV」・・・・・文字コードは「Shift_JIS」となります。
※「xlCSVUTF8」・・文字コードは「UTF-8」となります。

PR

実行結果

指定した範囲をCSVファイルへ出力できました。

出力されたCSVファイルの内容
PR

参考①

上記では「FileFormat:=」に「xlCSV」を指定することで、CSVファイルを出力しました。

指定する値を変更することで、様々な形式のファイルを出力できます。

詳細は公式サイトをご確認ください。

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