もりさんのプログラミング日記

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

スポンサーリンク

【ExcelVBA】複数のCSVファイルを一括でExcelファイルに変換する

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

システムからダウンロードしたCSVファイルをひとつずつ手作業でExcelに変換...してる人いませんか?

(恥ずかしながら私自身がつい最近までやっていたことです)

そんな退屈なことはマクロにやらせましょう!

この記事で紹介すること

複数のCSVファイルを、一括でExcel形式に変換して保存します。

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

参照設定

[Microsoft Scripting Runtime] を使用します。
f:id:excel-accounting:20180809222555p:plain:w400

コード

Sub CSVファイルをExcelファイルに変換する()

    Application.ScreenUpdating = False
    
    Dim OpenFileName As Variant
    OpenFileName = Application.GetOpenFilename _
            ("CSVファイル,*.csv*", MultiSelect:=True)
    
    If Not IsArray(OpenFileName) Then
        MsgBox "キャンセルしました。": Exit Sub
    End If
  
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    
    Dim n As Long '選択したファイル数、処理を繰り返す
    For n = LBound(OpenFileName) To UBound(OpenFileName)
    
        Dim wb As Workbook
        Set wb = Workbooks.Open(OpenFileName(n))
        
        Dim strBaseName As String
        strBaseName = fso.GetBaseName(wb.Name) '拡張子を除くファイル名を取得
        
        '同じファイル名で同じ階層にExcel形式で保存する
        wb.SaveAs _
        Filename:=wb.Path & "\" & strBaseName, FileFormat:=xlWorkbookDefault

        wb.Close SaveChanges:=False

        Set wb = Nothing 'いったん解放
    
    Next n

    Application.ScreenUpdating = True

    MsgBox "終了しました。"

End Sub

使い方

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

1.変換元のCSVファイルを選択
複数ファイル選択可(Ctrlキー or Shiftキーを使用)
2.「開く」を押す

f:id:excel-accounting:20180809222205p:plain:w500


これでまとめてExcel形式で保存されます。


まぁ、5ファイルくらいだし、そんなに頻度も高くないから手作業でいいよね…

STOP!NO MORE 手作業!

この類の作業は、一度ツールを作れば半永久的に使いまわせます。

退屈な作業はどんどんマクロ化していきましょう!


その他オフィスワーク効率化のネタものぞいていってくださいね

スポンサーリンク