Excel VBAを開発するときは、VBE(Visual Basic Editor)だけでなく、VS Codeを併用することで編集や検索、Gitによるバージョン管理などをしやすくなります。
ただし、VBEとVS Codeには標準で完全な双方向同期機能が用意されているわけではありません。
連携する方法としては、大きく分けて次の3種類があります。
- VBEからVBAモジュールを手動でエクスポート・インポートする方法
- VS Codeの同期系拡張機能を利用する方法
- Excelブック内部のVBAプロジェクトを直接読み書きする拡張機能を利用する方法
それぞれ特徴が異なるため、用途に合わせて選ぶことが重要です。
VBAエディタとVS Codeを連携する基本的な仕組み
ExcelのVBAコードはブック内部に保存されている
Excel VBAのコードは、通常のテキストファイルとして保存されているわけではありません。
.xlsmや.xlsbなどのExcelファイル内部に「VBAプロジェクト」として格納されています。
一方、VS Codeは基本的にファイルを編集するためのコードエディタです。
そのため、従来はVBAモジュールを外部ファイルとして取り出し、そのファイルをVS Codeで編集する方法が一般的でした。
代表的な流れは次のとおりです。
Excel
↓
VBAプロジェクト
↓
.bas・.cls・.frmとしてエクスポート
↓
VS Codeで編集
↓
Excelへインポート
現在では、この方法に加えて、拡張機能によってExcelブック内部のVBAを直接読み書きする方法も利用できます。
VBAモジュールで使用される主なファイル形式
標準モジュールは.bas形式
一般的な標準モジュールは、エクスポートすると.bas形式になります。
たとえばVBE上に「Module1」という標準モジュールがある場合は、次のようなファイルとして保存できます。
Module1.bas
クラスモジュールは.cls形式
クラスモジュールは、一般的に.cls形式でエクスポートされます。
Class1.cls
UserFormは.frmと.frxを使用することがある
UserFormは、一般的に.frm形式で保存されます。
さらに、フォーム内で使用している画像やその他のバイナリデータによっては、.frxファイルも一緒に生成されます。
UserForm1.frm
UserForm1.frx
そのため、UserFormをGitなどで管理する場合は、.frmだけでなく.frxの扱いにも注意が必要です。
方法1:VBEから手動でエクスポートしてVS Codeで編集する
最もシンプルで仕組みを理解しやすい方法
初めてVBAとVS Codeを連携する場合は、VBE標準のエクスポート・インポート機能を利用する方法が分かりやすいです。
特別な同期拡張機能を使わないため、トラブルが起きたときにも仕組みを把握しやすいメリットがあります。
VBEからVBAモジュールをエクスポートする
Excelを開き、Alt + F11を押してVBEを起動します。
プロジェクトエクスプローラーには、次のような構成が表示されます。
VBAProject
├ Microsoft Excel Objects
└ Modules
└ Module1
エクスポートしたいモジュールを右クリックし、「ファイルのエクスポート」を選択します。
たとえば、次の場所へ保存します。
C:\VBAProject\src\Module1.bas
これでVBAコードを通常のファイルとして扱えるようになります。
VS CodeでVBAファイルを編集する
VS Codeを起動し、「ファイル」から「フォルダーを開く」を選択します。
先ほど作成したフォルダーを開けば、次のように表示されます。
VBAProject
└ src
└ Module1.bas
.basファイルを開けば、VS Code上でVBAコードを編集できます。
編集後にVBEへ戻す
VS Codeで編集した内容をExcelへ反映する場合は、VBEからファイルをインポートします。
既存の標準モジュールを置き換える場合は、元のモジュールを削除してから、編集済みの.basファイルをインポートします。
ただし、ThisWorkbookやSheet1などのドキュメントモジュールは、標準モジュールと同じように単純な削除・インポートができない場合があります。
まずは標準モジュールから試す方が安全です。
方法2:VS Codeの同期系拡張機能を使用する
手動のエクスポート・インポートを減らせる
VBAを日常的に開発する場合は、毎回手動でエクスポート・インポートするのは手間がかかります。
その場合は、Excel VBAとVS Codeを同期できる拡張機能を利用すると便利です。
代表的な選択肢として、次のようなものがあります。
- EXCEL VBA module Sync
- XVBA
- XLIDE
対応機能は拡張機能やバージョンによって異なるため、導入前にVisual Studio Marketplaceや公式ドキュメントを確認することが重要です。
参考サイト
(2026年3月)Excel VBAをVS Codeで編集する – Excel VBA Extension #VSCode – Qiita
EXCEL VBA module Syncを利用する
ExcelとVS Codeの間でVBAモジュールをやり取りできる
EXCEL VBA module Syncは、Excelで開いているVBAモジュールをVS Codeへエクスポートし、編集後にExcelへ戻すための拡張機能です。
基本的な流れは次のようになります。
Excel
↓ Export
VS Code
↓ 編集
Excel
↑ Import
手動でモジュールを一つずつエクスポートする作業を減らせるため、複数の標準モジュールを扱う場合に便利です。
XVBAを利用する
VS Code側での編集をExcelへ反映できる
XVBAは、ExcelやAccessのVBA開発をVS Codeで行いやすくするための拡張機能です。
バージョンによって機能は異なりますが、VBAコードの取り込み、編集、Excelへの反映、補完機能などを提供しています。
構成によっては、VS Codeでコードを保存した際にExcel側へ反映する開発フローを作れます。
VS Codeで編集
↓
保存
↓
Excelへ反映
頻繁にVBAコードを変更する場合は、手動インポートより効率的です。
XLIDEを利用する
Excelブック内部のVBAを直接編集できる
XLIDEは、VS CodeからExcel VBAを扱うための比較的高機能な拡張機能です。
.xlsm、.xlsb、.xlamなどを認識し、Excelブック内部のVBAモジュールをVS Code上から編集できます。
一般的なエクスポート・インポート型とは異なり、ブック内部のVBAプロジェクトを直接扱えることが特徴です。
IntelliSenseやコード解析機能も利用できる
XLIDEは単なる同期ツールではなく、VBA開発を支援する機能も備えています。
バージョンによって異なりますが、次のような機能が提供されています。
- IntelliSense
- シンボル検索
- Go to Definition
- Find All References
- Rename Symbol
- 静的解析
- Diagnostics
- VBAモジュールのエクスポート
- VBAモジュールのインポート
- マクロ実行支援
VS Codeを中心にVBA開発を進めたい場合は、有力な選択肢の一つです。
VBA用のVS Code拡張機能も導入すると便利
VBA Supportでコードを読みやすくできる
同期機能とは別に、VBAコードの表示や編集を支援する拡張機能を導入することもできます。
たとえば「VBA Support」では、.bas、.cls、.frmなどをVBAとして認識し、シンタックスハイライトやスニペットを利用できます。
ただし、VBA Support自体がExcelとVS Codeを同期するわけではありません。
役割としては次のように考えると分かりやすいです。
VBA Support
=VBAコードの編集支援
同期系拡張機能
=ExcelとVS Codeの連携
両者は目的が異なります。
VBAプロジェクトへのアクセス許可が必要な場合がある
「VBAプロジェクト オブジェクト モデルへのアクセスを信頼する」とは
一部の同期ツールでは、ExcelのVBAプロジェクトを外部プログラムから操作するために、Excel側の設定変更が必要になることがあります。
Excelの設定画面から、次の項目を確認します。
ファイル
↓
オプション
↓
トラスト センター
↓
トラスト センターの設定
↓
マクロの設定
環境によっては、次の設定を有効にする必要があります。
VBA プロジェクト オブジェクト モデルへのアクセスを信頼する
すべての連携方法で必要なわけではない
この設定は、すべてのVS Code連携方法で必須というわけではありません。
COMやVBIDE経由でVBAプロジェクトを操作するツールでは必要になる場合があります。
一方、Excelファイル内部のVBAデータを直接読み書きするタイプのツールでは、不要な場合もあります。
使用する拡張機能の公式ドキュメントを確認したうえで設定してください。
セキュリティ面にも注意する
「VBAプロジェクト オブジェクト モデルへのアクセスを信頼する」を有効にすると、外部プログラムからVBAプロジェクトを操作できるようになります。
そのため、必要性を確認せずに常時有効にするのは避けた方が安全です。
必要なツールを使用するときだけ有効にするなど、セキュリティを意識して運用することが重要です。
日本語を含むVBAでは文字コードに注意する
日本語コメントや文字列が文字化けすることがある
VBAコードに日本語が含まれている場合は、VS CodeとVBEの間で文字コードの扱いが異なると文字化けすることがあります。
たとえば、次のようなコードです。
MsgBox "処理が完了しました。"
または、
' 最終行を取得する
といった日本語コメントも対象になります。
Shift_JISやWindows-31Jが関係する場合がある
特にVBEから手動でエクスポートしたVBAファイルでは、日本語Windowsのコードページとの関係で、Shift_JISやWindows-31J、CP932系の文字コードを意識する必要がある場合があります。
VS Codeの画面右下には、現在の文字コードが表示されています。
UTF-8
Shift JIS
Windows 1252
などの表示を確認できます。
ただし、同期ツールによっては文字コード変換を内部で処理している場合もあるため、必ずShift_JISに変更すればよいというわけではありません。
最初に小さなテスト用ファイルを使い、日本語コメントや文字列が正しく往復できるか確認するのがおすすめです。
ThisWorkbookやSheetモジュールは扱いに注意する
標準モジュールとは性質が異なる
Excel VBAには、通常の標準モジュール以外にも次のようなモジュールがあります。
ThisWorkbook
Sheet1
Sheet2
Sheet3
これらは「ドキュメントモジュール」と呼ばれ、Excelブックやワークシートそのものに紐づいています。
そのため、標準モジュールのModule1.basとまったく同じ感覚で削除・再インポートすることはできません。
同期ツールを選ぶ場合は、次の項目に対応しているか確認すると安全です。
- 標準モジュール
- クラスモジュール
- UserForm
- ThisWorkbook
- Worksheetモジュール
UserFormの同期ではさらに注意が必要
.frmだけでは完全に復元できない場合がある
UserFormは、.frmだけで構成されているとは限りません。
フォーム内の画像などによっては、.frxというバイナリファイルも生成されます。
そのため、
UserForm1.frm
だけをGit管理していると、フォームを完全に復元できない場合があります。
UserFormを利用しているプロジェクトでは、使用する同期ツールが.frxをどのように扱うかも確認してください。
VS CodeだけでVBAを直接実行しているわけではない
VBAの実行環境はExcelなどのOfficeアプリケーション
VS Code自体には、Excel VBAを実行するためのVBAランタイムは搭載されていません。
VBAを実際に実行するのは、基本的に次のようなOfficeアプリケーションです。
- Excel
- Word
- Access
- Outlook
そのため、基本的には次の役割分担になります。
VS Code
=VBAコードを編集・管理する
Excel / VBE
=VBAを実行する
VS CodeからExcel経由でマクロを実行できる場合もある
一部の拡張機能には、VS Codeからマクロ実行を指示する機能があります。
ただし、その場合でもVBAを実際に実行しているのはExcel側です。
したがって、「VS Code単体でVBAを実行している」と考えるのではなく、「VS CodeからExcelへ実行を依頼している」と理解すると分かりやすいです。
VBAのデバッグではVBEを併用するのがおすすめ
ランタイムデバッグはVBEが便利
VS Code側のVBA開発支援機能は進化していますが、VBA特有のデバッグではVBEが依然として便利です。
VBEでは次のような機能を利用できます。
- F8によるステップ実行
- ブレークポイント
- ウォッチ式
- ローカルウィンドウ
- イミディエイトウィンドウ
そのため、VS Codeへ完全移行するよりも、両方を使い分ける方法が実用的です。
VS CodeとVBEのおすすめの役割分担
VS Codeは編集と管理に向いている
VS Codeは、次のような作業に適しています。
- VBAコードの編集
- プロジェクト全体の検索
- 複数ファイルの一括置換
- Gitによるバージョン管理
- コード差分の確認
- 拡張機能による補完
- AIコーディング支援
VBEは実行とデバッグに向いている
一方、VBEは次の作業に向いています。
- VBAマクロの実行
- ステップ実行
- ブレークポイントによる停止
- 変数の確認
- イミディエイトウィンドウの利用
- Excelオブジェクトの確認
そのため、次のように使い分けると効率的です。
VS Code
→ コードを書く・検索する・管理する
VBE
→ VBAを実行する・デバッグする
VS CodeとGitを組み合わせるメリット
VBAコードの変更履歴を確認しやすくなる
VBAコードは通常、Excelファイル内部に保存されています。
そのため、.xlsmだけをGitで管理しても、一般的なテキストファイルのようにコードの差分を確認しにくいという問題があります。
VBAモジュールを外部ファイルとして管理すれば、Gitで変更内容を確認できます。
たとえば、次のような構成です。
VBAProject
├ src
│ ├ Main.bas
│ ├ FileUtils.bas
│ ├ ExcelUtils.bas
│ └ Config.cls
│
├ excel
│ └ MyTool.xlsm
│
├ .gitignore
└ README.md
この構成なら、.basや.clsの変更内容をGitで比較できます。
問題が起きたときに原因を追いやすい
VBAだけで開発していると、
「昨日までは動いていたのに、どこを変更して壊れたのか分からない」
という問題が発生することがあります。
Gitを利用していれば、
- どこを変更したか
- 誰が変更したか
- いつ変更したか
- 以前はどのようなコードだったか
を確認できます。
業務でVBAを運用する場合には、大きなメリットです。
最初はテスト用のExcelファイルで試す
本番ファイルでいきなり同期しない
VBA同期ツールを初めて使用する場合は、重要なExcelファイルでいきなり試さない方が安全です。
まずは、次のようなテスト用ファイルを作成します。
VbaTest.xlsm
標準モジュールに簡単なコードを書きます。
Option Explicit
Sub Test()
MsgBox "VS Code連携テスト"
End Sub
このコードをVS Codeへ取り込みます。
その後、次のように変更します。
Option Explicit
Sub Test()
MsgBox "VS Codeから変更しました"
End Sub
Excel側へ反映し、正常にマクロが実行できれば基本的な連携は成功です。
さらに、
- 日本語が文字化けしないか
- モジュール名が維持されるか
- ThisWorkbookが正しく扱えるか
- UserFormが壊れないか
なども確認しておくと安心です。
用途別のおすすめ連携方法
初心者なら手動Export・Import方式
VBAとVS Codeの連携を初めて試す場合は、VBE標準のエクスポート・インポートから始めるのがおすすめです。
仕組みが単純なので、VBAモジュールがどのように外部ファイル化されるのか理解できます。
Excel
↓
VBEからExport
↓
VS Code
↓
VBEへImport
頻繁に編集するなら同期系拡張機能
日常的にVBAを編集する場合は、EXCEL VBA module SyncやXVBAなどを利用すると作業を効率化できます。
Excel
↕
同期系拡張機能
↕
VS Code
↕
Git
手動のエクスポート・インポート回数を減らせることがメリットです。
VS Code中心で開発するならXLIDEも候補
VS Code側でより高度なVBA編集環境を構築したい場合は、XLIDEのような拡張機能も候補になります。
.xlsm / .xlsb / .xlam
↕
XLIDE
↕
VS Code
↕
Git
ブック内部のVBAを直接扱えるため、従来のエクスポート・インポート型とは異なる開発フローを構築できます。
VBAエディタとVS Codeは併用するのが実用的
VBAエディタとVS Codeを連携すると、VBEだけで開発する場合よりもコードの編集や管理がしやすくなります。
特にVS Codeには、検索、一括置換、Git、拡張機能など、VBEにはない便利な機能があります。
一方で、VBAの実行やランタイムデバッグではVBEが便利です。
そのため、実際のVBA開発では、
VS Code
→ 編集・検索・Git管理
VBE
→ 実行・デバッグ
という役割分担が扱いやすいでしょう。
最初は手動のExport・Import方式から試し、VBA開発の頻度が高くなってきたら同期系拡張機能を導入する方法がおすすめです。
また、VS Code中心のVBA開発環境を構築したい場合は、Excelブック内部のVBAを直接扱える拡張機能も選択肢になります。
どの方法を選ぶ場合でも、最初はテスト用のExcelファイルで動作確認し、バックアップを取ったうえで導入すると安全です。
以上、VBAエディタとVS Codeを連携する方法についてでした。
最後までお読みいただき、ありがとうございました。









