Excelでのデータ管理や集計作業において、特定の範囲だけをCSVファイルとして保存したい場面は少なくありません。しかし、毎回手作業で範囲を選択し、新しいブックにコピーしてCSV形式で保存するのは手間がかかります。
この記事では、Excel VBAマクロを使って、指定したセル範囲のデータをボタン一つでCSVファイルとして書き出す方法を、初心者の方にも分かりやすく解説します。
サンプルコードを交えながら丁寧に説明しますので、ぜひご自身の業務効率化にお役立てください。
完成したVBAコード
まずは、今回作成するVBAコードの全体像です。このコードを標準モジュールにコピー&ペーストするだけで、すぐに利用できます。
Sub ExportRangeToCsv()
' 変数を宣言します
Dim targetRange As Range
Dim newWb As Workbook
' --- 設定箇所 ここから ---
' CSVに出力したいセル範囲を指定します
' この例では、アクティブなシートのB2からH12の範囲を指定しています
Set targetRange = ThisWorkbook.ActiveSheet.Range("B2:H12")
' --- 設定箇所 ここまで ---
' 新しいワークブックを追加します
Set newWb = Workbooks.Add
' 指定した範囲を、新しいワークブックの最初のシートのA1セルにコピーします
targetRange.Copy newWb.Worksheets(1).Range("A1")
' 新しいワークブックをCSV形式で保存します
' ファイル名は「ExportData.csv」とし、マクロを実行したExcelファイルと同じ場所に保存されます
newWb.SaveAs ThisWorkbook.Path & "\ExportData.csv", FileFormat:=xlCSV
' 保存した新しいワークブックを、変更を保存せずに閉じます
newWb.Close SaveChanges:=False
' 完了メッセージを表示します
MsgBox "指定範囲のCSV書き出しが完了しました。"
End Sub
VBAコードの詳しい解説
次に、上記のコードがどのような処理を行っているのかを一つずつ見ていきましょう。
1. 変数の宣言
' 変数を宣言します
Dim targetRange As Range
Dim newWb As Workbook
はじめに、VBAで使用する「変数」を宣言しています。変数とは、データを入れておくための箱のようなものです。
- targetRange: CSVに出力したいセル範囲の情報を格納します。
Rangeオブジェクト型で宣言します。 - newWb: CSVとして保存するための一時的なワークブックの情報を格納します。
Workbookオブジェクト型で宣言します。
2. 出力範囲の指定
' CSVに出力したいセル範囲を指定します
' この例では、アクティブなシートのB2からH12の範囲を指定しています
Set targetRange = ThisWorkbook.ActiveSheet.Range("B2:H12")
ここで、CSVファイルとして書き出したいデータの範囲を具体的に指定します。 ThisWorkbook.ActiveSheet.Range("B2:H12") の部分は、**「このマクロが書かれているExcelファイル(ThisWorkbook)の、現在開いているシート(ActiveSheet)の、セルB2からH12の範囲」**という意味になります。
ご自身のデータに合わせて、"B2:H12"の部分を自由に変更してください。
3. 新しいワークブックの準備とデータコピー
' 新しいワークブックを追加します
Set newWb = Workbooks.Add
' 指定した範囲を、新しいワークブックの最初のシートのA1セルにコピーします
targetRange.Copy newWb.Worksheets(1).Range("A1")
指定した範囲のデータだけをCSVにするため、まずWorkbooks.Addでまっさらな新しいワークブックを作成します。 その後、targetRange.Copyを使って、先ほど指定したセル範囲のデータを、新しいワークブックの1枚目のシート(newWb.Worksheets(1))のA1セルを起点として貼り付けます。
4. CSV形式で保存
' 新しいワークブックをCSV形式で保存します
' ファイル名は「ExportData.csv」とし、マクロを実行したExcelファイルと同じ場所に保存されます
newWb.SaveAs ThisWorkbook.Path & "\ExportData.csv", FileFormat:=xlCSV
ここが処理の核となる部分です。 newWb.SaveAsメソッドを使い、データをコピーした新しいワークブックを保存します。
ThisWorkbook.Path & "\ExportData.csv":ThisWorkbook.Pathは、マクロを実行しているExcelファイルが保存されているフォルダの場所(パス)を取得します。& "\ExportData.csv"で、その場所に「ExportData.csv」というファイル名で保存するように指定しています。ファイル名は自由に変更可能です。
FileFormat:=xlCSV:- 保存するファイルの形式を指定する重要な引数です。
xlCSVと指定することで、CSV形式で保存されます。
- 保存するファイルの形式を指定する重要な引数です。
5. 後処理
' 保存した新しいワークブックを、変更を保存せずに閉じます
newWb.Close SaveChanges:=False
' 完了メッセージを表示します
MsgBox "指定範囲のCSV書き出しが完了しました。"
CSVファイルの保存が完了したため、作業用に作成した新しいワークブック(newWb)はもう不要です。newWb.Closeでこのワークブックを閉じます。その際、SaveChanges:=Falseとすることで、保存に関する確認メッセージを表示させずに閉じることができます。
最後にMsgBoxで処理が完了したことをユーザーに知らせます。
まとめ
今回は、Excel VBAを使用して特定のセル範囲をCSVファイルとして書き出す方法について解説しました。
このマクロを活用することで、
- 手作業によるコピー&ペーストの手間が省ける
- 毎回同じ範囲・同じファイル名で出力でき、作業ミスを防げる
- ボタン一つで処理が完了し、大幅な時間短縮につながる
といったメリットがあります。
ぜひ、ご自身のExcelファイルにこのマクロを導入して、日々の業務を効率化してみてください。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
