見出し画像

VBA基礎5':VS CODEでVBAを編集(XVBA)

1.概要

 普段業務効率化のためにExcelのVBAを使用することが多いですが①VBEが使いにくい、②GitHub Copilotを購入しているため有効活用したい という理由でVS CODEを使用したいと思っております。
 下記記事を参考にしながら、VS CODEでもVBAを編集できるようにしたいと思います。

 なお別手法は下記記事に記載しましたのでご参考までに。

2.環境構築

 環境構築として大きく分けて下記があります。

  1. 編集用のExcelマクロファイルを準備

  2. VS CODEに必要なExtensionを追加(XVBA)

  3. 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編集の作業場を下記手順で作成します。

  1. XVBA – MACRO LIST”の”Bootstrap XVBA Config”を選択

  2. メニューバーから”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ファイルに反映)を下記手順で実施します。

  1. XVBA – MACRO LIST”の”Export VBA”を選択

  2. メニューバーから”Development”を選択

 Export後は先ほど編集したVBAも実行可能であることが確認できました。

【メモ:Export後のExcelファイルのシートが非表示になる】
 原因は不明ですが私の環境ではExport後にExcelファイルからシートが非表示になります。「表示タブー>ウィンドウの再表示」でシートを元に戻すことができます。


参考資料・参考記事

あとがき

 コーディング時は細かくチェックしたいので、VS CODE上から直接実行できるXVBAの方がariawaseより使いやすいかもしれない。
 とりあえずは次のコーディング時に検証しよう。


いいなと思ったら応援しよう!