\Excelショートカット集もらえる/
VBAでExcelシートのデータをCSV出力する方法|サンプルコード付きで解説
今回はVBAを使ってExcelのデータをcsvファイルに出力する方法をご紹介します。本記事のコードをコピペするだけで簡単にcsvファイルにExcelのデータを出力できます。
csvの出力自体はExcelの機能でもできますが、他の作業と一緒にマクロで自動化したいとき(例:「データをcsv形式で出力してメールを送る」という作業をマクロで自動化したい)にVBAでcsv出力するコードを書く必要があるので、ぜひマスターしましょう。
今回実行したい動作:ExcelのデータをCSVファイルに自動出力
以下の表がExcelシートに入力されているとき、その内容をVBAを用いてボタン一つでCSV形式で別ファイルに出力します。
サンプルファイルはこちらからご利用ください。
※こちらのファイルはOneDrive下に置くと実行できない場合があります。その場合はローカルフォルダにファイルを保存してください。
本記事で解説するVBAのコードを実行すると、Excelファイルと同じフォルダに「sample.csv」というファイルが作成されます。
「sample.csv」をメモ帳で開いてみると・・・
Excelのテーブルの内容が、そのままCSV形式で出力されました。
CSVファイルに出力するコード
さっそくExcelのデータをcsvファイルに出力するコードを見ていきましょう。
少し複雑なコードになっていますが、ステップに分けて解説していくのでご安心ください。
step1 変数の定義
まず3~5行目で必要な変数を定義しています。
step2 csvファイルに書き込む準備
8行目はcsvに出力したいデータのあるシートをSetステートメントを使ってwsという変数に格納しています。数値や文字ではなく、ブックやシートなどのオブジェクトを代入するときはSetステートメントを使います。
11行目は出力するファイルのパスとファイル名を定義し、csvFileという変数に代入しています。ActiveWorkbook.Pathで開いているExcelファイルと同じパスを、csvファイルのパスに指定しています。csvファイル名は適宜決めてください。今回はsample.csvというファイル名にしています。
14行目でファイル番号を割り当てています。FreeFileで使用可能なファイル番号を取得しています。既に使われているファイル番号を指定すると、実行時エラーが発生します。FreeFileを使うことで、ファイル番号の重複を避けることができます。
step3 最終行・最終列の取得
17・18行目で最終行、最終列を取得しています。
Rows.Countはシートの行数です。Excel 2007以降の形式のブックならワークシートの行数は1048576です。(Excel 2003なら65536です。)つまり最終行の1048576行1列目のセルからEnd(xlUp)で上方向に探索し、データの最終行のセルの行数を.Rowで取得しています。.End(xlUp)はCtrl+↑と同じ操作です。
最終列の取得も同様で、シートの最終列から.End(xlToLeft)で左方向に探索して、.Columnでデータの最終列を取得しています。.End(xlToLeft)はシートの右端からCtrl + ←でデータの最終列にたどり着くのと同じ操作です。
今回は起点となるセルをA1セルとしているので、(最終行, 1列)、(1行, 最終列)から探索していますが、データに合わせて基準となるセルは変更してください。(Cells(Rows.Count, 1)やCells(1, Columns.Count)の1を起点となるセルの列・行に変更)
step4 ファイルへの書き出し
21行目のOpenメソッドでファイルを開きます。指定したファイルが存在しない場合新規作成されます。
23~32行目でFor文を使って書き出しています。書き出しにはPrint#ステートメントを使用します。
Print #filenumber, [ outputlist ]
outputlistがファイルに出力する内容です。通常、Print #ステートメントを使ってデータを出力した場合、改行コードが含まれます。改行されないようにするためにはステートメントの最後に「;(セミコロン)」を入力します。
19行目のif文は、データが最終列“でないとき”はセルの内容と「,(カンマ)」を出力します。最終列のときはセルの内容とカンマのかわりに改行コード(vbCr)で改行し、それを最終行まで繰り返しファイルに出力していきます。
step5 ファイルを閉じる
最後に出力したファイルを閉じて完了です。
まとめ
今回はVBAでExcelのデータをCSVファイルに出力する方法を解説しました。ぜひコードの内容を理解して使用してみてください。
ユースフルではオンライン動画講座ExcelPro(エクセルプロ)講座を提供しています。
「実務でVBAを使っている」
「無料でVBAを学びたい」
そんな方にはユースフルの公式LINEがオススメです!元伊藤忠商事経理でExcel実務のプロ、長内孝平(おさ)が運営しており
- VBAを含むExcel無料講義動画480分
- ExcelPro講座VBAコースにも使える!講座割引クーポン
などLINE会員限定の豪華4大特典を無料でプレゼント中です!ぜひコチラ↓の画像をタップして受け取ってくださいね!