不明なVBAコードを調べる方法
ExcelでVBAマクロを作成していて「この動作をさせるコード、どう書いたらいいんだろう」とわからなくなることがあります。
そういった不明なコードを時に調べる方法として以下の方法があります。
- グーグルで調べる
- エクセルの本で調べる
- マクロを記録して実現したい作業を行ってみる
上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ファイルが出力されました。



