VBA基礎5':VS CODEでVBAを編集(XVBA)
1.概要
普段業務効率化のためにExcelのVBAを使用することが多いですが①VBEが使いにくい、②GitHub Copilotを購入しているため有効活用したい という理由でVS CODEを使用したいと思っております。
下記記事を参考にしながら、VS CODEでもVBAを編集できるようにしたいと思います。
なお別手法は下記記事に記載しましたのでご参考までに。
2.環境構築
環境構築として大きく分けて下記があります。
編集用のExcelマクロファイルを準備
VS CODEに必要なExtensionを追加(XVBA)
XVBAの"config.json"を修正
なお本当はgit(Version管理システム:変更箇所の差分を表示してくれるツール)を使った方が良いのですが、まだ勉強不足のため今回はgit無しで作成しました。
なお初期設定としてExcelの「開発者向けマクロの設定:VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」はチェック済みだとします。チェックされていない方は下記フローより事前にチェックが必要です。
2-1.編集用のExcelファイル準備
サンプル用として適当なExcelファイルを準備しました。ファイル名は「初期テスト1.xlsm」で下記マクロを記載済みです。
[Module1]
Sub おはよう()
MsgBox "おはようございます。"
End Sub
2-2.VS CODEでExtension追加:XVBA
今回の要となるExtensionは「XVBA - Live Server VBA」です。本機能を使用してExcelからモジュール(VBAコード)の抽出・統合をVS CODE上から実施します。
Extensionの追加は拡張機能ボタン(Ctrl+Shift+X)から”XVBA”と入力します。2つ出てきますが「XVBA - Live Server VBA」を選択します。これで準備は完了です。
設定が完了するとエクスプローラーの下に「XVBA-MACRO LIST」ができ、ここでVBAの抽出・実行・統合などができます(説明は後述)。
参考までに下記Extensionを合わせて追加しておくと便利だと思います。
VBA:VBA構文のハイライト
vba-snippets:VBAを書くための自動補完機能を追加
3.VS CODEでVBA編集準備
本章ではVBAを編集する前に必要な準備を説明します。
3-1.VS CODEのエクスプローラーでフォルダを開く
まず初めに編集したいExcelファイルが保管されているフォルダをVS CODEの作業場とします。手順はエクスプローラー(Ctrl+B)を開く->フォルダを開く を押す->作業ディレクトリを選択します。
問題なく開けると下図の状態となります。
3-2.VBA Projectの作成(XVBA)
XVBAの機能を使用してVBA編集の作業場を下記手順で作成します。
”XVBA – MACRO LIST”の”Bootstrap XVBA Config”を選択
メニューバーから”Create Excel VBA Project”を選択
処理が完了(Bootstrap Finish)すると複数のファイルが生成されます。
3-3.★config.jsonの設定(XVBA)
現状ではXVBAは処理すべきファイルを理解できないため"config.json"で編集するPathを指定します。
config.jsonを開き「"excel_file": "index.xlsb"」を「"excel_file": <Excelのファイル名.xlsm>」に編集します(編集後は上書き保存のこと)。
[config.json]
{
"app_name": "XVBA",
"description": "",
"author": "",
"email": "",
"create_ate": "Sun Jan 15 2023 13:14:06 GMT+0900 (日本標準時)",
"excel_file": <ここをExcelファイル名に編集>,
"vba_folder": "vba-files",
"ribbon_file": "customUI14",
"ribbon_folder": "ribbons",
"logs": "on",
"xvba_packages": {},
"xvba_dev_packages": {}
}
3-4.モジュールのインポート(XVBA):Import
"config.json"を編集・保存後、「”XVBA – MACRO LIST”の”Import -VA”を選択」することでModule(VBAコード)をインポートできます。
インポート完了後は"vba-filesフォルダ"内にクラスモジュールと標準モジュールが生成されます。
4.VBAの編集・実行・統合
本章では実際にコード修正・マクロの実行・統合までを紹介します。
4-1.VBAの修正
今回は元ファイルの標準モジュール(Module1)に追記してみます。適当に”こんにちは”を返すプロシージャを追加しました(初期動作はエンコードを日本語のShift-JISに変更しているだけです)。
[Module1.bas]
Attribute VB_Name = "Module1"
Sub おはよう()
MsgBox "おはようございます。"
End Sub
Sub こんにちは()
MsgBox "こんにちは。"
End Sub
プロシージャ追加後は”XVBA – MACRO LIST”内に同じ名前のものが追加されております。なお次項で説明しますがExportをしないと追加したばかりのプロシージャは実行されません。
4-2.マクロの実行(XVBA)
"config.json"で指定したExcelのマクロを実行するには”XVBA – MACRO LIST”に表示されたプロシージャの▶(Run Macro)ボタンを押すと実行できます。
【参考:Export前の編集VBAを実行】
実行できるプロシージャは”Excelファイル内のVBA”のみとなります。ExportしないとExcelには反映されないため、編集しただけではマクロは動きませんので注意が必要です。
4-3.Excelへの統合(XVBA):Export
Excelへの統合(編集したVBAを元のExcelファイルに反映)を下記手順で実施します。
”XVBA – MACRO LIST”の”Export VBA”を選択
メニューバーから”Development”を選択
Export後は先ほど編集したVBAも実行可能であることが確認できました。
【メモ:Export後のExcelファイルのシートが非表示になる】
原因は不明ですが私の環境ではExport後にExcelファイルからシートが非表示になります。「表示タブー>ウィンドウの再表示」でシートを元に戻すことができます。
参考資料・参考記事
あとがき
コーディング時は細かくチェックしたいので、VS CODE上から直接実行できるXVBAの方がariawaseより使いやすいかもしれない。
とりあえずは次のコーディング時に検証しよう。