🛠️ 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管理下以外が推奨)任意のローカルフォルダ(OneDrive 管理下以外を推奨)に、以下の構成を作成します。
vba-personal/personal
├─ src/src
│ └─ Personal/Personal
│ └─ readme.md
├─ tools/tools
│ ├─ export-personal.xlsb2src.ps1
│ └─ import-personal.src2xlsb.ps1
└─ .vscode/vscode
└─ tasks.json
各ディレクトリの役割
- src/Personal
→
Git管理対象(VBAの正本)Git 管理対象(VBA ソースの正本) → 初期状態では .bas ファイルは存在しない - src/Personal/readme.md → この運用ルールを記載する README(Git 管理対象)
- tools
→ Excel
と同期するためのと同期する PowerShell スクリプト - .vscode
→
export-personal.ps1PowerShellやをワンキー実行するimport-personal.ps1を一発起動するtasks.json置き場tasks.json 置き場 - PERSONAL.XLSB
→
Gitには含めないGit 管理しない生成物
PERSONAL.XLSB を Git 管理しないでください。 環境依存・破損・競合の原因になります。
⚙️ 事前準備(Excel 側)
VBA プロジェクト操作の許可
Excel の設定で以下を必ず有効にします。の設定で、以下を必ず有効にします。
- ファイル
>→ オプション>→ トラストセンター - トラストセンターの設定
>→ マクロの設定 - 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」
をONを ON
この設定が OFF のままだと、import / exportPowerShell スクリプトは必ず失敗します。
📤 VBA を書き出す(を取り出す(PERSONAL.XLSB → テキスト)ソース)
export-personal.xlsb2src.ps1 の役割
- PERSONAL.XLSB を開く
- 標準モジュール(.bas)
のみを抽出のみを抽出 - src/Personal
配下に保存配下に書き出す
初回運用の重要ポイント
- src/Personal 配下の .bas は最初は空
- 初回は必ず xlsb2src.ps1 を実行してから編集を開始する
この操作により、Excel
内の VBA が完全に可視化されます。
最初に必ず export することで、この手順により、「Excel 側が最新」という前提を明確にできます。側が正」である初期状態を安全に取り込めます。
✏️ VS Code で編集する
できること
- 高速検索・置換
- 複数ファイル横断の修正
- Git
差分で変更点を正確に把握差分による正確な変更把握 コード整形・スニペット活用大量コードの整理・分割
推奨ルール
1ファイル1 ファイル =1用途1 用途- ファイル名で役割を明確にする
例:Shapes_Align.
bas /bas、Shapes_Color.bas
VBE の編集体験と比べると、戻れなくなるレベルで快適になります。での編集と比べると、作業効率と安全性が段違いです。
📥 VBA を取り込む(テキストを反映する(ソース → PERSONAL.XLSB)
import-personal.src2xlsb.ps1 の役割
- src/Personal の .bas を読み込む
同名モジュールがあれば削除同名モジュールが存在すれば削除- 最新コードを PERSONAL.XLSB に反映
重要な挙動
- モジュールの「増殖」を防ぐため、
必ず削除→必ず削除 → 追加 - Document
モジュールは一切触らないモジュールは一切操作しない
Excel が起動したままだと、PERSONAL.XLSB がロックされ失敗することがあります。
🚀 Auto_Open の扱い
推奨パターン
Startup.bas のような標準モジュールに定義します。などの標準モジュールに定義します。
- Excel
起動時に一度だけ処理したい場合はフラグ制御起動時に実行したい処理を集約 ホットキー登録などはここに集約必要に応じてフラグで多重実行を防止- ホットキー登録などもここに置く
ThisWorkbook に依存しないため、同期対象を .bas のみに保てます。
🔁 運用フローまとめ
- Excel
を閉じるを完全に終了する export-personal.xlsb2src.ps1実行を実行(初回・定期)- VS Code で編集
import-personal.src2xlsb.ps1実行を実行- Excel を起動して動作確認
「Excelは実行環境」Excel は実行環境」「VS Codeは開発環境」と割り切るのがコツです。Code は開発環境」と明確に分けるのがコツです。
🧯 よくあるトラブルと対策
Excel が裏で起動している
→ import/exportPowerShell 前に完全終了する実行前に完全終了する
モジュールが増殖する
→ importsrc2xlsb.ps1 時に同名削除を必ず行うの「同名削除」処理を省かない
OneDrive 配下で不安定
→ ローカル固定パスを使用するvba-personal フォルダはローカル固定パスに置く
OneDrive 同期フォルダで PERSONAL.XLSB を触るのは、破損リスクが高く非推奨です。を頻繁に操作すると、
破損リスクが高くなります。
🧩 この構成が向いているケース
- openpyxl + VBA の併用
- 個人用マクロの長期メンテナンス
- インストール制限のある業務端末
- GitHub 不可・ローカル Git のみ使用可能
「制約が多い現場」ほど、この構成の価値が出ます。制約が厳しい現場ほど、この構成の価値がはっきり出ます。