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

🛠️ 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 は標準モジュールで定義する

なぜこの構成か

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

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


📁 ディレクトリ構成

任意のローカルフォルダに、任意のローカルフォルダ(OneDrive管理下以外が推奨)に、以下の構成を作成します。

vba-personalpersonal/
├─ srcsrc/
│  └─ PersonalPersonal/
│     ├─ Shapes.bas.git/ ※src/Personal/をGit管理したら自然にできる
│     ├─ Utils.Module1.bas (標準モジュール)
│     ├─ ThisWorkbook.cls (必要なら)
│     └─ Startup.bas(.cls/.frm もここ)
├─ toolstools/
│  ├─ export-personal.ps1
│  └─ import-personal.ps1
└─ README.md.vscode/
   └─ tasks.json
  • src/Personal → Git管理対象(VBAの正本)
  • tools → Excel と同期するための PowerShell スクリプト
  • PERSONAL.XLSB → Gitには含めない

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


⚙️ 事前準備(Excel 側)

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

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

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

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


📤 VBA を書き出す(PERSONAL.XLSB → テキスト)

export-personal.ps1 の役割

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

この操作により、Excel 内の VBA が完全に可視化されます。

最初に必ず export することで、「Excel 側が最新」という前提を明確にできます。


✏️ VS Code で編集する

できること

  • 高速検索・置換
  • 複数ファイル横断の修正
  • Git 差分で変更点を正確に把握
  • コード整形・スニペット活用

推奨ルール

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

VBE の編集体験と比べると、戻れなくなるレベルで快適になります。


📥 VBA を取り込む(テキスト → PERSONAL.XLSB)

import-personal.ps1 の役割

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

重要な挙動

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

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


🚀 Auto_Open の扱い

推奨パターン

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

  • Excel 起動時に一度だけ処理したい場合はフラグ制御
  • ホットキー登録などはここに集約

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


🔁 運用フローまとめ

  1. Excel を閉じる
  2. export-personal.ps1 実行
  3. VS Code で編集
  4. import-personal.ps1 実行
  5. Excel を起動して動作確認

「Excelは実行環境」「VS Codeは開発環境」と割り切るのがコツです。


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

Excel が裏で起動している

→ import/export 前に完全終了する

モジュールが増殖する

→ import 時に同名削除を必ず行う

OneDrive 配下で不安定

→ ローカル固定パスを使用する

OneDrive 同期フォルダで PERSONAL.XLSB を触るのは、破損リスクが高く非推奨です。


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

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

「制約が多い現場」ほど、この構成の価値が出ます。