6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCode にて Excel VBA を編集する (excel-vba-sync)

Last updated at Posted at 2025-10-05

はじめに

Excel にて VBAマクロ を編集する際のエディタである VBE はエディタ機能が貧弱で、これを補う為にVisualStudioCode の拡張機能である XVBA1 などが用いられている。
ただ、XVBAも初期の設定が意外と面倒なため、excel-vba-sync2として自前で作成してみた。
ここでは、インストールから基本的な使い方、注意点までを記述。

概要 / 特長

  • excel-vba-sync は、Excel 上の VBA モジュールを VSCode 上で編集可能にし、編集後のコードを Excel 側に再インポートできるVSCode拡張機能。
  • VSCodeとVBAのコードがすぐに連携できるので、GithubCopilot と連携させコードアシストを利用することでコーディングパフォーマンスが飛躍的に向上
  • エクスポートしたファイルはUTF-8形式 の為、Gitによる管理も容易
  • マクロ実行(List & Run Macro)コード検索機能(Search VBA Code) については発展途上の為、今回は詳細せず。

主な機能:

  • Excel → .bas / .cls / .frm ファイルへのエクスポート
  • エクスポートされたファイルは VSCode 上でコード編集可能
  • 編集後のモジュールを再び Excel に取り込み(モジュール差し替え方式)
  • エクスポートファイルは UTF-8 形式で保存
  • モジュール / プロシージャ 指定でマクロ実行 ※未紹介
  • 全モジュール対象のコード検索(正規表現対応) ※未紹介

対応環境:

  • Windows 10/11(24H2)
  • Microsoft Excel
  • Visual Studio Code

インストール方法

Visual Studio Code Marketplace からインストール

  1. VSCode を開き、Ctrl + Shift + X にて拡張機能ビューを開く
  2. “excel-vba-sync” を検索してインストール
  3. 必要に応じて VSCode を再起動

基本的な使い方

1. 準備( *.xlsm ブックの作成)

※すでにマクロのブックがある場合は飛ばしてもよい

  • EXCEL のツールバー「開発」より VisualBasic を起動
  • 右クリックでモジュールを追加
  • ダミーの sub を作る
  • 保存する
  • ファイルの形式を「Excel マクロ有効ブック(*.xlsm)」 で保存
    ここでは C:\Sample\excel-vba.xlsm として保存

Excel ファイルは開いたままにしておく

2. Visual Studio Code の起動

  • Win + R でファイル名を指定して実行画面を開き、「code」 を入力

3. 拡張機能の起動

  • ツールバーの「表示」⇒「ビューを開く」より、「Excel VBA VSCode Sync」を選択

4. エクスポート

  • エクスポートフォルダの選択
  • 今回はExcelファイルと同じフォルダを指定(C:\Sample
  • エクスポートの実行
  • モジュールにパスワードが設定されている場合は、先にVBE上でパスワード入力し、モジュールを開いておく必要あり
  • 「ファイル」⇒「オプション」⇒「トラストセンター」⇒「トラストセンター設定」にて以下をチェック済であること
    • VBAマクロを有効にする
    • VBA プロジェクト オブジェクト モデルへのアクセスを信頼する
  • C:\sample\excel-vba\Module1.bas」 としてエクスポートファイルが作成される

5. インポート

  • VSCode 上で 1 行追加し、Ctrl + S で保存

ファイル保存していないとVBA側に反映されない

  • インポートの実行
    exvba9.png

  • インポート終了

  • VBE側に反映されているかを確認、問題なければExcelファイルを保存

VBA(Excel)の保存を忘れるとVBA側とVSCode側の内容が不一致になる

状態まとめ

状態 VBA側コード VSCode側コード 一致状況
エクスポート前 既存コード なし 不一致
エクスポート後 既存コード 既存コード 一致
VSCode編集・保存 既存コード 改修コード 不一致
インポート後 改修コード 改修コード 一致

注意事項

  • エクスポートした .frm / .cls / .bas ファイルの属性行 (VERSION, Begin…End, Attribute VB_* 等) を編集しないこと。これを改変するとインポートに失敗したり、フォームとの紐付けが崩れたりする

  • 新しいモジュール/クラス/フォームの追加はこのツール上では未サポート。まず Excel 側で空モジュールと空の sub を作成し、それをエクスポートしてから編集。

  • Excel ファイルは必ずバックアップを取ってから連携を行う。外部操作によって破損する可能性あり。

  • 長時間操作せず放置してから再操作すると COM 呼び出しで RPC_E_CALL_REJECTED などのエラーが出ることがある。その場合は Excel を再起動。

【参考】拡張機能の構造

  • Export/Import
  • List & Run Macro/Search VBA Code
  1. https://marketplace.visualstudio.com/items?itemName=local-smart.excel-live-server

  2. https://marketplace.visualstudio.com/items?itemName=9kv8xiyi.excel-vba-sync&ssr=false#overview

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?