不明なVBAコードを調べる方法
ExcelでVBAマクロを作成していて「この動作をさせるコード、どう書いたらいいんだろう」とわからなくなることがあります。
そういった不明なコードを時に調べる方法として以下の方法があります。
- グーグルで調べる
- エクセルの本で調べる
- マクロを記録して実現したい作業を行ってみる
上2つは当たり前ですが、ある程度VBAのことを学習した人がコードを確認する方法としては3番目も非常に有効です。
動作のコードがそのまま入ってくれるため、どういうふうにコードを書けばいいのかといったことがわかりやすいです。
CSVに出力する方法を調べる
例として今回はCSV形式で保存する方法を調べます。
Excelでファイルを扱うときは基本的にxlsx形式で問題ありませんが、アプリケーションによってはCSV形式でのインポートのみに対応しているということは多々あります。
記録したい動作(ファイルをCSV UTF-8)で保存をし、マクロの記録を停止します。
記録されたコードを確認してみます。
このコードだとファイル名や保存先が固定されているので汎用性がありません。
記録したコードを利用してマクロを完成させる
ディレクトリ内のエクセルのシートを1つのブックにまとめるの応用となります。
今回は指定したディレクトリ内のxlsxファイルに含まれるシートを全てcsv形式で出力するマクロになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
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ファイルが出力されました。