メインコンテンツへスキップ

🛠️ PERSONAL.XLSB を VS Code で快適に編集する方法

🧭 はじめに

このページでは、Excel の個人用マクロブック(PERSONAL.XLSB)を、VS Code を使って安全かつ快適に編集・管理する方法を解説します。

対象は次のようなケースです。

  • オートシェイプ操作など、一部だけ VBA が必要
  • VBA は PERSONAL.XLSB に集約している
  • 業務端末でアプリのインストール制限がある
  • GitHub 等の外部サービスは使えず、ローカル Git リポジトリのみ利用可能

この手順では、追加アプリのインストールなしで、

VS Code で編集 → PowerShell で Excel に反映 という、安全で再現性の高い運用を実現します。


🎯 この記事でできること

  • PERSONAL.XLSB 内の VBA を テキストファイルとして管理
  • VS Code の検索・置換・差分確認を最大限活用
  • Excel 側は「実行・デバッグ専用」に割り切る
  • ローカル Git による履歴管理(GitHub 不要)

PERSONAL.XLSB を「成果物」、VBA テキストを「ソースコード」として扱うことで、事故が激減します。


🧱 全体構成(考え方)

基本方針

  • 同期対象は標準モジュール(.bas)のみ
  • ThisWorkbook / Sheet モジュールは扱わない
  • Auto_Open は標準モジュールで定義する
  • VBA ソースは Git 管理、PERSONAL.XLSB は生成物扱い

なぜこの構成か

  • Document モジュールは削除・再生成できず事故要因になりやすい
  • 個人マクロ用途では標準モジュールで十分
  • PowerShell だけで完結し、環境依存が極めて少ない

Excel は標準モジュールに定義された Auto_Open も正しく実行します。


📁 ディレクトリ構成

任意のローカルフォルダ(OneDrive 管理下以外を推奨)に、vba-personal.zipを展開して以下の構成を作成します。

vba-personal
├ src
│  └ Personal
├ tools
│  ├ xlsb2src.ps1
│  ├ src2xlsb.ps1
│  └ readme.md
└ .vscode
   └ tasks.json

各ディレクトリの役割

  • src/Personal → Git 管理対象(VBA ソースの正本) → 初期状態では .bas ファイルは存在しない
  • tools/readme.md → toolsの使い方を記載する README
  • tools → Excel と同期する PowerShell スクリプト
  • .vscode → PowerShell をワンキー実行する tasks.json 置き場
  • PERSONAL.XLSB → Git 管理しない生成物

PERSONAL.XLSB を Git 管理しないでください。 環境依存・破損・競合の原因になります。


🧾 Git リポジトリの初期化(初回のみ)

ターミナルから下記を実行

cd src/Personal
git init
git add readme.md
git commit -m "Initial commit: add README"

下記のように.gitフォルダが作成される

vba-personal
├ src
│  └ Personal
│     └ .git
:

⚙️ 事前準備(Excel 側)

VBA プロジェクト操作の許可

Excel の設定で、以下を必ず有効にします。

  • ファイル → オプション → トラストセンター
  • トラストセンターの設定 → マクロの設定
  • 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」を ON

この設定が OFF のままだと、PowerShell スクリプトは必ず失敗します。


📤 VBA を取り出す(PERSONAL.XLSB → ソース)

xlsb2src.ps1 の役割

  • PERSONAL.XLSB を開く
  • 標準モジュール(.bas)のみを抽出
  • src/Personal 配下に書き出す

初回運用の重要ポイント

  • src/Personal 配下の .bas は最初は空
  • 初回は必ず xlsb2src.ps1 を実行してから編集を開始する

実行方法

  • ターミナル > タスクの実行
  • VBA: xlsb → src (PERSONAL.XLSB から取り込み) を選択

間違えてVBA: src → xlsb (PERSONAL.XLSB へ反映) を選択すると書き込みに行ってしまうので初回起動時は十分に注意すること

(VBA を取り込んだらコミットしておく)

cd src/Personal
git add .
git commit -m "Import VBA modules from PERSONAL.XLSB"

この手順により、「Excel 側が正」である初期状態を安全に取り込めます。


✏️ VS Code で編集する

できること

  • 高速検索・置換
  • 複数ファイル横断の修正
  • Git 差分による正確な変更把握
  • 大量コードの整理・分割

推奨ルール

  • 1 ファイル = 1 用途
  • ファイル名で役割を明確にする 例:Shapes_Align.bas、Shapes_Color.bas

VBE での編集と比べると、作業効率と安全性が段違いです。


📥 VBA を反映する(ソース → PERSONAL.XLSB)

src2xlsb.ps1 の役割

  • src/Personal の .bas を読み込む
  • 同名モジュールが存在すれば削除
  • 最新コードを PERSONAL.XLSB に反映

重要な挙動

  • モジュールの「増殖」を防ぐため、必ず削除 → 追加
  • Document モジュールは一切操作しない

Excel が起動したままだと、PERSONAL.XLSB がロックされ失敗することがあります。


🚀 Auto_Open の扱い

推奨パターン

Startup.bas などの標準モジュールに定義します。

  • Excel 起動時に実行したい処理を集約
  • 必要に応じてフラグで多重実行を防止
  • ホットキー登録などもここに置く

ThisWorkbook に依存しないため、同期対象を .bas のみに保てます。


🔁 運用フローまとめ

  1. Excel を完全に終了する
  2. xlsb2src.ps1 を実行(初回・定期)
  3. VS Code で編集
  4. src2xlsb.ps1 を実行
  5. Excel を起動して動作確認

「Excel は実行環境」「VS Code は開発環境」と明確に分けるのがコツです。


🧯 よくあるトラブルと対策

Excel が裏で起動している

→ PowerShell 実行前に完全終了する

モジュールが増殖する

→ src2xlsb.ps1 の「同名削除」処理を省かない

OneDrive 配下で不安定

→ vba-personal フォルダはローカル固定パスに置く

OneDrive 同期フォルダで PERSONAL.XLSB を頻繁に操作すると、 破損リスクが高くなります。


🧩 この構成が向いているケース

  • openpyxl + VBA の併用
  • 個人用マクロの長期メンテナンス
  • インストール制限のある業務端末
  • GitHub 不可・ローカル Git のみ使用可能

制約が厳しい現場ほど、この構成の価値がはっきり出ます。