もりさんのプログラミング手帳

教えることは、二度学ぶこと

スポンサーリンク

【ExcelVBA】エクセルブックの全シートを一括でCSV(テキスト)ファイルにするマクロ

エクセルブックのデータを何らかのシステムに取り込む(アップロードする)ために、CSVファイル or テキストファイルを作成することがありますよね。

手作業でコツコツ…はやめて、マクロでサクッと一括出力しちゃいましょう!

f:id:excel-accounting:20180621200511p:plain:w400

この記事でできること

ブック内の全シートシート毎にCSVファイル(またはテキストファイル)にして保存します。

f:id:excel-accounting:20180621192945p:plain

ファイル作成元のExcelブックと同じ階層に出力します。

ソースコード

Sub ファイル一括作成()

    Application.ScreenUpdating = False
        
    '対象ブックをダイアログで指定する
    Dim FName As String
    FName = Application.GetOpenFilename _
        (FileFilter:="Microsoft Excelブック,*.xls*")
    
    If FName <> "False" Then
        Workbooks.Open FileName:=FName
    Else
        Exit Sub 'ファイルが選択されていない場合は終了
    End If
    
    Dim ws As Worksheet
    For Each ws In Worksheets '各シートに対して処理を繰り返す
    
        ws.Activate
        '元のブックと同じ階層に出力
        ActiveWorkbook.SaveAs _
        FileName:=ActiveWorkbook.Path & "\" & ws.Name & ".csv", _
        FileFormat:=xlCSV
    
    Next ws

    ActiveWorkbook.Close SaveChanges:=False

    MsgBox "ファイル作成が完了しました。"

End Sub

マクロの使い方

マクロを実行すると「ファイルを開く」ダイアログが出現します。

①作成元のファイルを選択
②「開く」を押す
f:id:excel-accounting:20180621192954p:plain:w500

③終了メッセージを確認
f:id:excel-accounting:20180621193005p:plain:w150

以上!お手軽ですね!

テキストファイルを作成したい場合

上記のソースコードをちょこっとだけ書き換えます。

ActiveWorkbook.SaveAs _
FileName:=ActiveWorkbook.Path & "\" & ws.Name & ".csv", _
FileFormat:=xlCSV

↓2か所修正

①拡張子
.csv.txt

②ファイルフォーマット
xlCSVxlText

ActiveWorkbook.SaveAs _
FileName:=ActiveWorkbook.Path & "\" & ws.Name & ".txt", _
FileFormat:=xlText

これでタブ区切りのテキストファイルを作成できます。

f:id:excel-accounting:20180621193837p:plain

スポンサーリンク


ファイル出力のパターン

今回の記事で紹介したのは、ファイル作成をするための独立したツールです。

このパターンだと、様々な場面で使えるので便利ですね。

f:id:excel-accounting:20180621194909p:plain:w400


その一方で、作成元のファイルに直接マクロを含ませることで、ファイルを読み込ませる手間を省く方法もあります。

f:id:excel-accounting:20180621195020p:plain:w350

こちらの記事もぜひご覧ください。

スポンサーリンク