ExcelVBA シート上の指定した範囲をCSVファイルへ出力する

別ブックをつくってコピーしてCSV出力、保存せず閉じるという技。

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ファイルへ出力する範囲を指定 ※例としてシート「sample」のセル「B2」から続く一連の範囲を指定
    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

ネタ元

excel-vba.work