VBAで
・シート上の指定した範囲を
・CSVファイルへ出力
できます!
ここでは私が
・1番シンプルと考える方法
を記載します!
※実現方法は複数あります。
※ひとまずシンプルな方法を知っておけばよいです。
またこの方法は
・1度にまるっと出力する方法であるため
・高速にCSVファイルへ出力できます!
※繰り返し処理により1行ずつ出力するのではないため、高速に出力できます。
※他サイトに記載の方法は、繰り返し処理より1行ずつ出力しています。
※そのため他サイトに記載の方法では、時間が掛かってしまいます。
VBAコード
ここでは例として、
・シート「sample」のセル「B2」から続く一連の範囲を
・デスクトップ配下へファイル「sample.csv」として出力
します。
Option Explicit
Sub sample()
Dim csvFile As String
Dim targetRange As Range
Dim wb As Workbook
Dim fso As Object
'出力するCSVファイルを指定
csvFile = "C:\Users\user\Desktop\sample.csv"
'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(csvFile) Then
fso.deleteFile csvFile
End If
'新規ブックをCSVファイルとして出力
wb.SaveAs fileName:=csvFile, FileFormat:=xlCSV, Local:=True
'新規ブックを保存せずに閉じる
wb.Close SaveChanges:=False
'後片付け
Set fso = Nothing
End Sub
実行結果
シート上の指定した範囲をCSVファイルへ出力できました。
参考①
上記では「FileFormat:=」に「xlCSV」を指定することで、CSVファイルを出力しました。
指定する値を変更することで、様々な形式のファイルを出力できます。
詳細は公式サイトをご確認ください。
参考②
CSVファイルの読み込みもできます。
詳細は以下の記事をご確認ください。
参考③
CSVファイルとして出力する前に、データを並び替え(ソート)したほうが良いかもしれません。
データを並び替える(ソートする)方法は、以下の記事をご確認ください。
参考④
CSVファイルとして出力する前に、不要なデータを削除したほうが良いかもしれません。
オートフィルタを使用して不要なデータを削除できます。
詳細は以下の記事をご確認ください。
参考⑤
CSVファイルとして出力する前に、出力するデータの一部を置換したい時もあるかもしれません。
置換する方法は、以下の記事をご確認ください。
参考⑥
上記のVBAコードで実施している「ファイルの存在有無の確認」は、以下の記事を参考にしています。
参考⑦
処理を高速化させる方法について、以下の記事にまとめています。
参考⑧
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「Rangeオブジェクト」の「CurrentRegion」プロパティ
●「Workbooksオブジェクト」の「Add」メソッド
●「Rangeオブジェクト」の「Copy」メソッド
●「Workbookオブジェクト」の「SaveAs」メソッド
●「Workbookオブジェクト」の「Close」メソッド