![見出し画像](https://assets.st-note.com/production/uploads/images/95686587/rectangle_large_type_2_1743b0903eec202fb122b67a2036ef8f.jpeg?width=1200)
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
![](https://assets.st-note.com/img/1673755152459-8abTgKNloX.png?width=1200)
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」を選択します。これで準備は完了です。
![](https://assets.st-note.com/img/1673750604567-OxjD4blXTG.png?width=1200)
設定が完了するとエクスプローラーの下に「XVBA-MACRO LIST」ができ、ここでVBAの抽出・実行・統合などができます(説明は後述)。
![](https://assets.st-note.com/img/1673755670017-vycYledH7L.png?width=1200)
参考までに下記Extensionを合わせて追加しておくと便利だと思います。
VBA:VBA構文のハイライト
vba-snippets:VBAを書くための自動補完機能を追加
![](https://assets.st-note.com/img/1673749921300-11m7N33xKc.png?width=1200)
![](https://assets.st-note.com/img/1673749932061-P8AF1ffQGD.png?width=1200)
3.VS CODEでVBA編集準備
本章ではVBAを編集する前に必要な準備を説明します。
3-1.VS CODEのエクスプローラーでフォルダを開く
まず初めに編集したいExcelファイルが保管されているフォルダをVS CODEの作業場とします。手順はエクスプローラー(Ctrl+B)を開く->フォルダを開く を押す->作業ディレクトリを選択します。
![](https://assets.st-note.com/img/1673751879188-j3gCfmzvtF.png?width=1200)
![](https://assets.st-note.com/production/uploads/images/95682802/picture_pc_ecd267fa6322d04166688a22dbce118d.gif?width=1200)
問題なく開けると下図の状態となります。
![](https://assets.st-note.com/img/1673755892097-iTRvZtZb9t.png?width=1200)
3-2.VBA Projectの作成(XVBA)
XVBAの機能を使用してVBA編集の作業場を下記手順で作成します。
”XVBA – MACRO LIST”の”Bootstrap XVBA Config”を選択
メニューバーから”Create Excel VBA Project”を選択
![](https://assets.st-note.com/production/uploads/images/95683796/picture_pc_159677e6c18969c59335ddd8d87da9c4.gif?width=1200)
処理が完了(Bootstrap Finish)すると複数のファイルが生成されます。
![](https://assets.st-note.com/img/1673756351995-vOZtghLX9G.png?width=1200)
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": {}
}
![](https://assets.st-note.com/img/1673756596779-FbXylBdKUK.png?width=1200)
3-4.モジュールのインポート(XVBA):Import
"config.json"を編集・保存後、「”XVBA – MACRO LIST”の”Import -VA”を選択」することでModule(VBAコード)をインポートできます。
インポート完了後は"vba-filesフォルダ"内にクラスモジュールと標準モジュールが生成されます。
![](https://assets.st-note.com/production/uploads/images/95684522/picture_pc_355cf827f9713e64e80b297c81fab5d2.gif?width=1200)
4.VBAの編集・実行・統合
本章では実際にコード修正・マクロの実行・統合までを紹介します。
4-1.VBAの修正
今回は元ファイルの標準モジュール(Module1)に追記してみます。適当に”こんにちは”を返すプロシージャを追加しました(初期動作はエンコードを日本語のShift-JISに変更しているだけです)。
[Module1.bas]
Attribute VB_Name = "Module1"
Sub おはよう()
MsgBox "おはようございます。"
End Sub
Sub こんにちは()
MsgBox "こんにちは。"
End Sub
![](https://assets.st-note.com/production/uploads/images/95684817/picture_pc_a66c2c70ae416b17abd9c5b565e0468c.gif?width=1200)
プロシージャ追加後は”XVBA – MACRO LIST”内に同じ名前のものが追加されております。なお次項で説明しますがExportをしないと追加したばかりのプロシージャは実行されません。
![](https://assets.st-note.com/img/1673757386547-lw1iu7VY5R.png?width=1200)
4-2.マクロの実行(XVBA)
"config.json"で指定したExcelのマクロを実行するには”XVBA – MACRO LIST”に表示されたプロシージャの▶(Run Macro)ボタンを押すと実行できます。
![](https://assets.st-note.com/img/1673757591454-tuVi1F67Zm.png?width=1200)
【参考:Export前の編集VBAを実行】
実行できるプロシージャは”Excelファイル内のVBA”のみとなります。ExportしないとExcelには反映されないため、編集しただけではマクロは動きませんので注意が必要です。
![](https://assets.st-note.com/production/uploads/images/95685400/picture_pc_b5dffc31a0a8f5ff973cd67d4b5d5327.gif?width=1200)
4-3.Excelへの統合(XVBA):Export
Excelへの統合(編集したVBAを元のExcelファイルに反映)を下記手順で実施します。
”XVBA – MACRO LIST”の”Export VBA”を選択
メニューバーから”Development”を選択
Export後は先ほど編集したVBAも実行可能であることが確認できました。
![](https://assets.st-note.com/production/uploads/images/95686057/picture_pc_1d583ce79323b76da81854f414c9cb8f.gif?width=1200)
【メモ:Export後のExcelファイルのシートが非表示になる】
原因は不明ですが私の環境ではExport後にExcelファイルからシートが非表示になります。「表示タブー>ウィンドウの再表示」でシートを元に戻すことができます。
![](https://assets.st-note.com/img/1673757975696-sDYvlFHpbN.png?width=1200)
参考資料・参考記事
あとがき
コーディング時は細かくチェックしたいので、VS CODE上から直接実行できるXVBAの方がariawaseより使いやすいかもしれない。
とりあえずは次のコーディング時に検証しよう。
この記事が気に入ったらサポートをしてみませんか?