メインコンテンツへスキップ
見出し画像

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より使いやすいかもしれない。
     とりあえずは次のコーディング時に検証しよう。


     
     

    KIYO

     
     
    普段は製造業で企画/開発/設計しております。記事はプログラミング・機械学習、IoT関係の記事をメインで作成し、なるべく1つの記事で知りたいことを網羅していきます。内容は学術的より実装・アウトプット(ほしくなるもの)を重視して作成しています。 面白そうな仕事があればやりたいです!

    あなたへのおすすめ