【ExcelVBA】指定した範囲のセルの値をCSVに出力する方法について

本記事は、指定した範囲のセルの値をCSVに出力する方法についてご説明します。

【動画】指定した範囲のセルの値をCSVに出力する実際の動き

本題に入る前に、まずは指定した範囲のセルの値をCSVに出力する実際の動きについて、次のツイートをご覧ください。

ツイート内の動画では、指定した範囲のセルの値をCSVに出力しています。

指定した範囲のセルの値をCSVに出力する方法

指定した範囲のセルの値をCSVに出力するには、次の流れの通りにコードを書いていきます。

STEP.1
CSVファイルの出力先の取得
CSVファイルの出力先を取得します。
STEP.2
CSVファイルへ出力する範囲の指定
CSVファイルへ出力する範囲を指定します。
STEP.3
新規ブックの作成
新規ブックを作成します。
なぜわざわざ新規ブックを作成するのかというと、新規ブックをCSVファイルとして保存(出力)するのに使うからです。
STEP.4
CSVファイルへ出力するデータのセル範囲を新規ブックにコピー
CSVファイルへ出力する(STEP2で指定した)データのセル範囲を新規ブックにコピーします。
STEP.5
FileSystemObjectオブジェクトのインスタンスの作成
FileSystemObjectオブジェクトのインスタンスを作成します。
STEP.6
新規ブックをCSVファイルとして保存(出力)
新規ブックをCSVファイルとして保存(出力)します。
ファイルを保存(出力)するのに必要な処理です。

コードの例

    Dim CSVFile As String       '出力するCSVファイル
    Dim dataRange As Range      '出力するデータのセル範囲
    Dim wb As Workbook          'ワークブック
    Dim fso As Object           'FileSystemObjectオブジェクトのインスタンス用変数
    
    'CSVファイルの出力先を取得
    CSVFile = Application.ThisWorkbook.Path & "\testData.csv"
    
    'CSVファイルへ出力する範囲を指定
    Set dataRange = Worksheets("data").Range("C22:K29").CurrentRegion
    
    '新規ブックを作成(新規ブックをCSVファイルとして保存(出力)するために行う)
    Set wb = Workbooks.Add
    
    'CSVファイルへ出力するデータのセル範囲を新規ブックにコピーする
    dataRange.Copy wb.Worksheets(1).Range("A1")
    
    'FileSystemObjectオブジェクトのインスタンスを作成する
    Set fso = CreateObject("Scripting.FileSystemObject")

    '新規ブックをCSVファイルとして保存(出力)する
    wb.SaveAs FileName:=CSVFile, FileFormat:=xlCSV
    
    '新規ブックを保存せずに閉じる(CSVファイルの保存(出力)が終われば、新規ブックは不要のため)
    wb.Close SaveChanges:=False
    
    '後処理
    Set fso = Nothing

コードの解説

このコードでまず見て頂きたいのは22行目です。

この22行目でCSVファイルの保存(出力)を行っています。

CSVファイルの保存(出力)先(の指定)は7行目で、出力したいセル(の範囲の指定)は10行目で行っています。

指定した範囲のセルの値をCSVに出力する処理の仕組み

今回説明した、指定した範囲のセルの値をCSVに出力する処理の仕組みをザックリと説明すると、次の通りです。

STEP.1
新規ブックを開く
新規ブックを開きます。
STEP.2
新規ブックにセルの範囲をコピー
新規ブックにセルの範囲をコピーします。
STEP.3
新規ブックをCSVファイル形式で保存
新規ブックをCSVファイル形式で保存します。

※上記のSTEP1からSTEP3は、先ほど説明したソースコードの13行目から22行目の部分にあたります。

以上の処理の仕組みのポイントは、STEP3の「新規ブックをCSVファイル形式で保存」の部分です。

新規ブックを開き、CSVファイルに出力したいデータを貼り付けて、CSVファイル形式で保存をマクロで行っています。

参考までに、手動で「新規ブックをCSVファイル形式で保存」をすると次の通りです。

手動で「新規ブックをCSVファイル形式で保存」

①「名前を付けて保存の確認」ダイアログで「はい」をクリック

②CSVファイルに出力したいデータを貼り付け

③「ファイル」タブをクリック→「名前を付けて保存」をクリック

④保存先を指定するため、「コンピュータ」→「参照」をクリック

⑤「名前を付けて保存」ダイアログでファイルの種類に「CSV(カンマ区切り) (*.csv)」を選択

⑥ファイル名を入力して「保存」ボタンをクリック

⑦確認ダイアログで「はい」をクリック

⑧開いているExcelのブックがCSVファイルに変わった

⑨保存しないで閉じる

⑩CSVファイルが保存(出力)されたことを確認

以上が手動で「新規ブックをCSVファイル形式で保存」の手順になります。

自動でCSVファイルに出力している処理のイメージを分かってもらえたら幸いです。

最後に

本記事では、指定した範囲のセルの値をCSVに出力する方法についてご説明しました。

セルの値を範囲指定してCSVに出力したい場合は参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら