器用貧乏の独り言

器用貧乏なおっさんが気の向くままに。

【VBA】ExcelデータをCSV出力するマクロ

◇前置き

Excelで加工したデータを他アプリに取り込む際、一旦CSVに変換することってありませんか?

加工したデータをCSV変換用ファイルに移して、名前を付けて保存するだけの作業ではありますが、頻繁にやっていると結構めんどうくさいと思います。

そこで今日は、ワンクリックでCSV出力できるマクロを紹介します。

◇概要

今回はこんな感じのExcelを用意しました。
CSV出力したい表とボタンだけあればOKです。

列(項目)は使う分だけ設定しておいて、行は少し余分に作っておくのがオススメです。
※空白のセルは無視されますので。


また、CSVの出力先としてデスクトップにフォルダを用意しました。
出力されるファイル名はyyyymmdd.csvとしています。

ソースコード

今回のソースコードはこんな感じです。

Sub CSV_Output()
   
Dim Output_File As String
Dim Output_Range As Range
Dim New_Book As Workbook
Dim fso As Object
Dim To_Date As String
 
   To_Date = Format(Date, "yyyymmdd")
   
   '出力するCSVのファイルパスを指定
   Output_File = "C:\Users\user\Desktop\CSV出力\" & To_Date & ".csv"
   
   Set Output_Range = Worksheets("Sheet1").Range("B2:F16")
   Set New_Book = Workbooks.Add
   
   'CSVファイルへ出力するデータを新規ブックへコピー
   Output_Range.Copy New_Book.Worksheets(1).Range("A1")
   
   Set fso = CreateObject("Scripting.FileSystemObject")
   
   '同名のCSVファイルが既に存在する場合は削除する
   If fso.FileExists(Output_File) Then
       fso.deleteFile Output_File
   End If
 
   New_Book.SaveAs Filename:=Output_File, FileFormat:=xlCSV, Local:=True
   New_Book.Close SaveChanges:=False
   Set fso = Nothing
 
   Worksheets("Sheet1").Range("B3:F16").ClearContents
 
   MsgBox "CSV出力が完了しました。"
 
End Sub


コピペして使われる方は、アウトプット先のファイルパス・ファイル名、出力範囲などを使いたい条件に編集して使ってください。

◇使い方

さて、実際に動かしてみましょう。
まずは適当なデータを表に入力します。

入力ができたら出力ボタンをクリックします。

すると、こんなメッセージボックスが出てきます。

デスクトップに作った出力用フォルダを確認すると・・・

無事CSV出力されました!

一応中身を確認してみると・・・

ちゃんと入力した内容が出力されていますね!

◇最後に

システム間の連携には意外とCSVが良く使われています。
ちょっとした小技ではありますが、誰かの役に立つと嬉しいです。