ExcelのVBAソースをVSCodeで編集する
私の所属するプロジェクトでは、
仕様書・設計書・テスト仕様書などにExcelファイルを使用しており、体裁の統一や項目の集計、ソースコードの自動生成など、様々な処理にVBAマクロを活用しています。
Excelに組み込まれているエディタはステップ実行や入力補完などIDEとしての機能がある一方で、複数タブでの表示や、grepのような高度な検索機能が無く、個人的には保守やリファクタリングにあまり向いていない印象があります。
私がVBAソースを編集する際には、
VBAソースを一旦エクスポートして外部エディタで編集し、動作を確認する段階でExcelにインポートし直すという方法を取っています。
ここではエディタとしてVisual Studio Code(以下VSCode)を使用する場合の推奨設定や注意点を紹介します。
言語モードの設定
VSCodeにはVB(Visual Basic)の言語モードが搭載されていますが、Excel VBAで使用する [.frm][.cls]といった拡張子に対しては自動判別が効きません。
VSCodeの設定(settings.json)から[files.associations]に言語との関連付けを指定することで、これらのファイルについても自動的にVBとして開かれるようになります。
エンコードの設定
Excel VBAではエンコードがShift-JISとなっていますが、VSCodeはデフォルトではUTF-8でファイルを開くようになっています。
このため、自動判別が上手く効かないとファイルを開く度に手動でエンコードを選択し直すことになります。
VSCodeでは言語ごとに、ファイルを開く際のデフォルトのエンコードを設定することが可能です。
前述の言語モード設定と合わせ、[vb]に対して[files.encoding]を設定することで自動的にShift-JISで開かれるようになります。
1 2 3 4 5 6 7 8 9 |
settings.json "files.associations": { "*.bas":"vb", "*.cls":"vb", "*.frm":"vb" }, "[vb]": { "files.encoding": "shiftjis" } |
変数名・プロパティ名に関する注意点
Excel VBAでは変数名には大文字も小文字も使用可能ですが、Excel組み込みのエディタは、ファイル保存時に最初に使用された表記に自動的に統一するようになっています。
例えば、ファイル内に“ABC”という変数と”Abc“という変数が混在していた場合、プロシージャが異なっていても先に使用されていた方の表記に統一されます。
このため、外部エディタでの編集した直後と、動作確認用にExcelにインポートした後では表記が変化している場合があり注意が必要です。
◆WEB会議/セミナーシステム『Szia』
https://www.ois-yokohama.co.jp/szia/
◆サーバサイドで動作するミドルウェア『ReDois』
https://www.ois-yokohama.co.jp/redois/
◆AIがトレンドトピックをもとに、読まれそうな記事タイトルを自動生成『AI Title Maker』
https://ai-title.ois-yokohama.co.jp/