業務自動化とプログラミングのためのTips

自動化.work

Excel VBA

わからないVBAコードを調べる方法[VBA]

更新日:

不明なVBAコードを調べる方法

ExcelでVBAマクロを作成していて「この動作をさせるコード、どう書いたらいいんだろう」とわからなくなることがあります。
そういった不明なコードを時に調べる方法として以下の方法があります。

  1. グーグルで調べる
  2. エクセルの本で調べる
  3. マクロを記録して実現したい作業を行ってみる

上2つは当たり前ですが、ある程度VBAのことを学習した人がコードを確認する方法としては3番目も非常に有効です。
動作のコードがそのまま入ってくれるため、どういうふうにコードを書けばいいのかといったことがわかりやすいです。

CSVに出力する方法を調べる

例として今回はCSV形式で保存する方法を調べます。
Excelでファイルを扱うときは基本的にxlsx形式で問題ありませんが、アプリケーションによってはCSV形式でのインポートのみに対応しているということは多々あります。

コードを調べるためにまず、マクロの記録を開始します。

記録したい動作(ファイルをCSV UTF-8)で保存をし、マクロの記録を停止します。

記録されたコードを確認してみます。

このコードだとファイル名や保存先が固定されているので汎用性がありません。

記録したコードを利用してマクロを完成させる

ディレクトリ内のエクセルのシートを1つのブックにまとめるの応用となります。
今回は指定したディレクトリ内のxlsxファイルに含まれるシートを全てcsv形式で出力するマクロになります。

Option Explicit
    
Dim buf As String
Dim xlsxFile As String
Dim newFileName As String

    
Sub Macro1()
'
' Macro1 Macro
'

'
    '    指定したディレクトリ内にあるxlsxファイルをすべて列挙
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            buf = .SelectedItems(1)
            xlsxFile = Dir(buf & "\*.xlsx")
        End If
    End With
    
    '    xlsxファイルの数だけループ
    Do While xlsxFile <> ""
    
        '    xlsxファイルを開く
        Workbooks.Open buf & "\" & xlsxFile
        
        '    ファイル名の.xlsxを.csvにする
        newFileName = Replace(xlsxFile, ".xlsx", ".csv")
        
        '    CSV形式のUTF-8で保存
        Workbooks(xlsxFile).SaveAs Filename:= _
        buf & "\" & newFileName, FileFormat:=xlCSVUTF8, _
        CreateBackup:=False
       
        
        '    xlsxファイルを閉じる
        Workbooks(newFileName).Close
        
        '    次のxlsxファイルに移る
        xlsxFile = Dir()
    Loop


    
End Sub

実行結果

実行すると指定したフォルダにCSVファイルが出力されました。


-Excel, VBA
-

Copyright© 自動化.work , 2026 All Rights Reserved.