{"id":51006215,"url":"https://github.com/shu1551/shu-vba-manager","last_synced_at":"2026-06-20T20:31:54.236Z","repository":{"id":357112880,"uuid":"1232898420","full_name":"shu1551/shu-vba-manager","owner":"shu1551","description":"Excel VBA を Python で操作するためのツールキット","archived":false,"fork":false,"pushed_at":"2026-06-13T00:17:25.000Z","size":423,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T02:16:30.477Z","etag":null,"topics":["ai-coding","automation","claude-code","excel","excel-vba","python","pywin32","vba"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shu1551.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-08T11:42:20.000Z","updated_at":"2026-06-13T00:17:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/shu1551/shu-vba-manager","commit_stats":null,"previous_names":["shu1551/shu-vba-manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shu1551/shu-vba-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shu1551%2Fshu-vba-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shu1551%2Fshu-vba-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shu1551%2Fshu-vba-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shu1551%2Fshu-vba-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shu1551","download_url":"https://codeload.github.com/shu1551/shu-vba-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shu1551%2Fshu-vba-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34585195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-coding","automation","claude-code","excel","excel-vba","python","pywin32","vba"],"created_at":"2026-06-20T20:31:53.399Z","updated_at":"2026-06-20T20:31:54.228Z","avatar_url":"https://github.com/shu1551.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VBAマネージャー — Python と Claude Code で Excel VBA を操作するツールキット\n\nExcel の VBA モジュールや UserForm を、**Python 経由でコマンドラインから操作する**ためのツールキットです。\nClaude Code（または他の AI コーディングアシスタント）と組み合わせれば、\n**「マクロを追加して」「フォームを直して」と話しかけるだけで** Excel の VBA が書き換わるという、\nまるで魔法のような開発環境を構築できます。\n\n\u003e 📝 **開発の背景や思想はこちらの Qiita 記事にまとめています**：\n\u003e [Excel VBA × Claude Code で「会話するだけでマクロが直る」開発環境を作った話](https://qiita.com/shu15511551/items/d3bbba2dac4007327db6)\n\n## ダウンロード\n\n### ワンクリックで ZIP ダウンロード（一般ユーザー向け）\n\n**[📦 最新版を ZIP でダウンロード](https://github.com/shu1551/shu-vba-manager/archive/refs/heads/main.zip)**\n\nダウンロードした ZIP を解凍すれば、すぐに使えます。\n\n### git で取得（開発者向け）\n\n```powershell\ngit clone https://github.com/shu1551/shu-vba-manager.git\n```\n\n---\n\n## このツールキットでできること\n\n- ✅ **VBA モジュール (.bas) の取り出し／差し替え／プロシージャ単位の置換**\n- ✅ **開いたままのブックを直接読み書き**（セル読取・書込・書式・行列操作・検索置換・印刷設定など）\n- ✅ **グラフ／ピボット／スライサー／PowerQuery／データモデル(DAX) まで CLI で操作**\n- ✅ **UserForm を Python コードで構築**（コントロール配置〜イベントコード注入まで）\n- ✅ **VBE と `.bas` ファイルのライブ同期**\n- ✅ **登録済みマクロの GUI ランチャー**（customtkinter 製）\n- ✅ **任意の `.xlsm` を対象にできる**（自分のブックでも、配布ブックでも）\n- ✅ **Claude Code 連携で「話しかけるだけ」開発が可能**\n\n---\n\n## ツール一覧（`作業ファイル/project/python_scripts/`）\n\n| ツール | 役割 |\n|---|---|\n| **`vba_manager.py`** | 中核ツール。VBA の `list / get / replace-module / replace-procedure` に加え、シート読取（`read-range` / `sheet-info` / `screenshot`）・編集（`write-range` / `format-range` / `find-replace` 等）・グラフ／ピボット／PowerQuery／データモデルまで約50コマンド |\n| **`form_builder.py`** | UserForm をコードで構築。`add_btn`, `add_lbl`, `add_txt`, `add_lst` などのヘルパー付き |\n| **`live_sync_vba.py`** | VBE と `.bas` ファイルをリアルタイム同期 |\n| **`menu_launcher.py`** / **`select_macro_gui.py`** | customtkinter 製のマクロ検索／実行 GUI |\n| **`bas_editor.py`** | `.bas` ファイル編集ヘルパー（プロシージャ単位の `replace_sub`, `read_bas`） |\n| **`format_bas.py`** | `.bas` 整形（空行・インデント正規化） |\n| **`optimize_vba_modules.py`** | VBA モジュール最適化 |\n\n---\n\n## 動作環境\n\n| 必須 | 備考 |\n|---|---|\n| Windows 10 / 11 | 日本語環境 |\n| Microsoft Excel | デスクトップ版（Microsoft 365 / Office 2019 以降）|\n| Python 3.9 以上 | `py` コマンドが使えること |\n| Claude Code（推奨） | \u003chttps://claude.com/claude-code\u003e 「話しかけるだけ」開発を実現するために |\n\n---\n\n## セットアップ\n\n### ① Python のインストール\n\n1. \u003chttps://www.python.org/downloads/\u003e から最新版を DL\n2. インストーラーで **「Add Python to PATH」を必ずチェック**\n3. PowerShell で `py --version` 確認\n\n### ② Python パッケージのインストール\n\n```powershell\ncd \"$env:USERPROFILE\\Desktop\\VBAマネージャー\"\npy -m pip install -r requirements.txt\n```\n\n依存パッケージ:\n- `pywin32` — Excel COM 操作\n- `customtkinter` — GUI ランチャー\n\n### ③ Excel のセキュリティ設定（★最重要★）\n\n**この設定をしないと Python から VBA を一切操作できません。**\n\n1. Excel を起動\n2. **ファイル → オプション → トラスト センター → トラスト センターの設定**\n3. **マクロの設定** タブを開く\n4. **「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェック**\n5. OK で閉じる\n\nここで詰まる人が多いので必ず確認してください。\n\n### ④ Claude Code のインストール（推奨）\n\n\u003chttps://claude.com/claude-code\u003e の手順に従ってインストール。\nインストール後、配布フォルダで `claude` コマンドを起動するとここを作業ディレクトリとして AI と対話できます。\n\n---\n\n## 主要ツールの使い方\n\n### `vba_manager.py` — VBA モジュール CRUD ＋ Excel 操作\n\n```powershell\ncd \"作業ファイル\\project\\python_scripts\"\n\n# 全モジュール一覧\npy vba_manager.py list \"C:\\path\\to\\任意.xlsm\"\n\n# .bas を取り出し\npy vba_manager.py get \"C:\\path\\to\\任意.xlsm\" モジュール名\n\n# .bas モジュールを置き換え（破壊的、自動バックアップあり）\npy vba_manager.py replace-module \"C:\\path\\to\\任意.xlsm\" モジュール名 ファイル.bas\n\n# プロシージャ単位で置き換え（既存プロシージャをピンポイント差し替え）\n# 非対話実行（Claude Code 連携等）では -y で確認プロンプトをスキップ\npy vba_manager.py replace-procedure -y \"C:\\path\\to\\任意.xlsm\" patched.vba\n```\n\nファイルパスを省略すると**アクティブな（今 Excel で開いている）ブック**を自動対象にする。\nVBA だけでなく、開いたままのブックのシートを直接読み書きできる：\n\n```powershell\n# 読む（目）：セル値・シート構成・範囲のPNG化\npy vba_manager.py read-range A1:D10\npy vba_manager.py sheet-info\npy vba_manager.py screenshot A1:H30\n\n# 書く（手）：値・数式・書式・行列・検索置換・印刷設定など\npy vba_manager.py write-range C1 \"=SUM(A1:A10)\"\npy vba_manager.py format-range A1:D1 --bold --bg \"#FFFF00\"\npy vba_manager.py find-replace 旧 新 A1:Z99\n\n# 重量級：グラフ・ピボット・スライサー・PowerQuery・データモデル(DAX)\npy vba_manager.py chart create A1:B5 --type column --title \"月別売上\"\npy vba_manager.py pivot create 元データ!A1:C100 --rows 部門 --values 売上\npy vba_manager.py powerquery list\npy vba_manager.py datamodel list\n```\n\n全コマンド（約50個）の一覧と使い方は `vba_manager.py` 冒頭のコマンド表を参照。\n※ Excel が未起動の状態でパス指定すると自動化用の Excel が新規起動される。この Excel には\nアドインや PERSONAL.XLSB が読み込まれないため、普段使いには手動起動した Excel を使うこと\n（ツールが警告を表示する）。\n\n### `form_builder.py` — UserForm をコードで構築\n\n```python\nfrom form_builder import FormBuilder, add_btn, add_lbl, add_txt, add_lst\n\nwith FormBuilder.connect(wb_keyword='ターゲットブック名') as fb:\n    fb.create_form('SampleForm', width=300, height=200)\n    add_lbl(fb, 'lblTitle', 'タイトル', x=10, y=10)\n    add_txt(fb, 'txtInput', x=10, y=40, width=200)\n    add_btn(fb, 'btnOK', 'OK', x=10, y=80)\n```\n\nこれで `SampleForm` という名前の UserForm がターゲットブックに作成されます。\nさらにイベントコード（`btnOK_Click` など）も Python から注入可能。\n\n### `live_sync_vba.py` — ライブ同期\n\n```powershell\npy live_sync_vba.py\n```\n\nVBE 上での編集が `.bas` ファイルへ即時反映されます。\n逆方向（`.bas` の変更 → VBE 反映）にも対応。\n\n### `menu_launcher.py` — GUI ランチャー\n\n```powershell\npy menu_launcher.py\n```\n\ncustomtkinter 製 GUI が起動。登録された Public Sub を一覧から検索・実行できます。\n\n---\n\n## Claude Code との連携：「話しかけるだけ」開発\n\n配布フォルダで `claude` を起動した状態で、たとえばこんなプロンプトを投げます：\n\n\u003e **「ターゲットブックの shu001 モジュールに、アクティブセルに今日の日付を入れるマクロを追加して」**\n\nClaude Code は自動的に：\n\n1. `vba_manager.py get` で既存モジュールを取得\n2. `.bas` を編集（CP932 エンコーディングで保存）\n3. `vba_manager.py replace-module` で Excel に反映\n\nこれで **手作業ゼロでマクロが追加** されます。\n\n### よく使うプロンプト例\n\n- 「`〇〇.xlsm` の `Module1` に △△ するマクロを追加して」\n- 「`データ入力フォーム` という UserForm を作って、ボタン3個とテキストボックス2個を配置して」\n- 「`計算表.bas` の `合計計算` プロシージャを高速化して」\n- 「マウスホイールでスクロールできるようにフォームに対応コードを追加して」\n\n### ガードレールは同梱済み（CLAUDE.md と専用スキル）\n\nこのリポジトリには、Claude Code が安全に VBA を操作するための設定が\n**最初から入っています**。クローン／解凍してそのまま使えます。\n\n- **`CLAUDE.md`**（リポジトリ直下）\n  Claude Code が起動時に自動で読み込むプロジェクトルール。\n  「`.bas` を Edit / Write ツールで編集して文字化けさせない」\n  「`get → replace-procedure` の手順を守る」「`python` ではなく `py` を使う」\n  などを Claude に指示します。\n\n- **`.claude/skills/shu-addin-manager/`**（同梱スキル）\n  「マクロを追加して」「フォームを直して」などのキーワードで自動的に起動し、\n  Claude に正しい作業フロー（`list → get → 修正 → replace-procedure`）を守らせます。\n\nどちらも自分で用意する必要はありません。このフォルダで `claude` を起動すれば、\nそのまま有効になります。\n\n---\n\n## サンプルとして同梱：`秀.xlsm`\n\n配布フォルダ直下の `秀.xlsm` は、**作者（shu）が個人利用しているサンプルアドイン**です。\nこのツールキットの動作確認用に同梱しています。\n\n### サンプルが提供する機能\n\n- `shu001〜005.bas` 内の Public Sub をメニュー自動表示\n- アドイン自身を `.xlam` に変換して登録／解除するマクロ（`アドインの更新登録`, `アドインの登録解除`）\n- カレンダー入力フォーム、マクロ一覧フォーム などの UserForm 例\n\n### サンプルを試す\n\n1. `秀.xlsm` をダブルクリックで通常ブックとして開く\n2. `Alt + F8` でマクロ一覧 → `アドインの更新登録` を実行\n3. `%AppData%\\Roaming\\Microsoft\\AddIns\\` に `秀.xlam` が保存・登録される\n4. Excel を再起動 → リボンに `秀` メニューが現れる\n\n**注意**：このサンプルは作者個人の業務用に組まれたもので、内部マクロは参考程度にご覧ください。\nこのツールキットの本体はあくまで `作業ファイル/project/python_scripts/` 配下の Python ツール群です。\n\n---\n\n## ファイル構成\n\n```\nVBAマネージャー/\n├── README.md                       ← このファイル\n├── CLAUDE.md                       ← Claude Code 用プロジェクトルール（同梱）\n├── LICENSE                         ← MIT\n├── requirements.txt\n├── 秀.xlsm                         ← サンプルアドイン（個人利用例）\n├── .claude/\n│   └── skills/\n│       └── shu-addin-manager/      ← Claude Code 用の同梱スキル\n└── 作業ファイル/\n    ├── VBAマネージャー起動.bat\n    ├── 一覧.bat\n    ├── 修正.bat\n    └── project/\n        └── python_scripts/         ← ★ ツールキット本体\n            ├── vba_manager.py      ← 中核：VBA モジュール CRUD\n            ├── form_builder.py     ← UserForm ビルダー\n            ├── live_sync_vba.py    ← ライブ同期\n            ├── menu_launcher.py    ← GUI ランチャー入口\n            ├── select_macro_gui.py ← customtkinter 製 GUI\n            ├── bas_editor.py       ← .bas 編集ヘルパー\n            ├── format_bas.py       ← .bas 整形\n            ├── optimize_vba_modules.py\n            └── *.bas / *.frm / *.frx  ← サンプル用 VBA モジュール／フォーム\n```\n\n---\n\n## 注意事項\n\n### `.bas` は **必ず CP932 (Shift-JIS)** で保存\n\nUTF-8 のエディタで開いて保存し直すと、日本語が全部文字化けして VBA モジュールが破壊されます。\n\n```python\nwith open(path, 'r', encoding='cp932') as f:\n    content = f.read()\n\nwith open(path, 'w', encoding='cp932') as f:\n    f.write(content)\n```\n\n### バックアップ\n\n`vba_manager.py replace-module` などの破壊的な操作は、事前に `backups/` フォルダへ自動でバックアップを作成します。\n\n---\n\n## トラブルシューティング\n\n| 症状 | 対処 |\n|---|---|\n| `プログラムによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます` | Excel のトラスト センター設定（手順③）を再確認 |\n| `pywin32` インストール後に `ImportError` | `py -m pywin32_postinstall -install` を実行 |\n| `.bas` を編集したら全部文字化けした | UTF-8 で保存してしまった。`backups/` から復元 |\n| `vba_manager.py list` が空を返す | 対象 `.xlsm` が開いていない or トラストセンター設定が未済 |\n\n---\n\n## ライセンス\n\nMIT License — [LICENSE](LICENSE) を参照してください。\n\n## 作者\n\nshu\n\nこのツールキットは個人開発で、**無保証** で公開しています。\nバグ報告や改善提案は歓迎ですが、対応を保証するものではありません。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshu1551%2Fshu-vba-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshu1551%2Fshu-vba-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshu1551%2Fshu-vba-manager/lists"}