選択範囲をCSVファイルとして出力する
Excelで作業をしていて、特定の部分(範囲)をCSVファイルに出力し
他のアプリケーションのインポートデータとして使用することがあります。
仮にExcel内の一部のデータが対象データとして
その都度、それをCSVファイルに出力することは大変面倒だと思います。
そこで、範囲選択した部分をCSVファイルとして出力するVBAマクロをご紹介します。
サンプルコード
Private Sub SENTAKU_CSV()
Dim sname As String
Dim bookpath As String
Dim rng As String
Dim strCsvFile As String
‘ 選択範囲のセルアドレス
rng = Selection.Address
sname = ActiveSheet.Name ‘シート名
bookpath = ActiveWorkbook.Path ‘フォルダパス
‘ 保存CSVファイル名
strCsvFile = bookpath & “\” & sname & “.csv”
‘ 新しいシートを追加し、選択範囲をコピー
Worksheets(sname).Range(rng).Copy
Worksheets.Add.Range(“A1”).PasteSpecial Paste:=xlPasteValues
‘ 新しいブックを作成し、そこにシートを移動する
ActiveSheet.Move
‘ 上書きのメッセージを表示させない
Application.DisplayAlerts = False
‘ CSV形式でファイル保存
ActiveWorkbook.SaveAs Filename:=strCsvFile, FileFormat:=xlCSV
‘ 保存せずに閉じる
ActiveWorkbook.Close savechanges:=False
‘ メッセージ表示を戻す
Application.DisplayAlerts = True
End Sub
解説
「Selection.Address」で現在選択しているセルを取得します。
そして、
①「新規シート」作成
②「①」に選択したセルの内容を貼り付け
③新規Book作成、
④「②」の新規シートを「③」のBookに移動
⑤「④」をCSVファイル形式で保存
という流れで処理します。
ポイントは、保存のときに「Application.DisplayAlerts = False」で
保存ダイアログ画面を省略している点です。
これがデフォルトのままだと、上書き確認が行われて処理が中断してしまいます。
また、ファイル形式をCSVに指定しているのが
「ActiveWorkbook.SaveAs Filename:=strCsvFile, FileFormat:=xlCSV」の「FileFormat:=xlCSV」です。
まとめ
簡単にCSVファイルを出力することができます。
もちろん途中にデータを加工する処理をつけくわえれば
それだけ手作業の手間が減りますので、より業務の効率化等の幅が広がります。
また今後もExcelやVBAについてお役立ち情報などご紹介していきたいと思います!!
以上、「【Excel VBA】選択範囲をCSVファイルとして出力する」でした。