xlcraft — VBA for ExcelEnglish
A VS Code extension for comfortable Excel VBA development. Provides syntax highlighting, IntelliSense, linting, and formatter for free, with bi-directional Excel sync and "Run Macro in Excel" as Pro features (one-time purchase ¥750, ~$4.75 USD).
Free / Pro
From the first install, a 5-day trial lets you try all Pro features. Editor features (Free) remain available during and after the trial. Purchasing and Activating Pro1. PurchasePay ¥750 JPY (~$4.75 USD) at xlcraft Pro Checkout and you will receive a license key ( 2. ActivateOpen the Command Palette in VS Code (
Paste your license key. The status bar will change to 3. Transferring to Another MachineEach license allows 1 machine. To use on a different PC, first run 4. RefundRefunds are available within 14 days of purchase, per Polar's default policy. License Commands
You can also click the ScreenshotsKey Features (Free)Language Support
IntelliSense
Lint (7 Rules with QuickFix)
Formatter (
|
| Command | Description |
|---|---|
VBA: Add "Option Explicit" to All Modules |
Insert Option Explicit into every VBA module in the workspace that does not already declare it. |
VBA: Sort Procedures by Name / Visibility |
Reorder procedures alphabetically or by Public → Private + Sub/Function → Property. Keeps Property Get/Let/Set triplets adjacent. |
Wrap with "On Error GoTo ErrHandler" handler (Quick Fix) |
On the gotoOveruse diagnostic, wrap the enclosing procedure with On Error GoTo boilerplate (Exit + label + Debug.Print + Resume Next). |
Generate Property accessors for X (Refactor) |
In a .cls, generate Property Get/Let (value types) or Get/Set (object types) from a Private mFoo As T field. |
VBA: Safe Delete Symbol at Cursor |
Delete the symbol only if it has zero references across the workspace. Function name = expr return-value assignments are excluded from call detection. |
VBA: Inline Local Variable |
Replace a single-assignment local variable with its right-hand expression. Refuses on function calls, multiple assignments, indexed access. |
VBA: Extract Selection to Procedure... |
Extract the selected lines into a new procedure. Parameters and return value inferred. |
VBA: Move Procedure to Module... |
Move a procedure between .bas modules, promoting Private → Public and qualifying call sites. |
Known refactoring limits: dynamic call sites (Application.Run "ModuleName.Foo", CallByName) are not detected, so Safe Delete and Inline may not see every reference. Sort Procedures becomes a no-op if the module contains #If ... #End If blocks. Move Procedure is limited to .bas modules and refuses procedures bound by Implements naming.
Stack Trace Code Action (v2.4.0)
| Action | Description |
|---|---|
Insert Err.Source / Erl stack-trace handler (ErrHandler) (Refactor) |
Inject a richer error handler than the v2.3.0 quick fix: Debug.Print "[" & Err.Source & "] " & Err.Number & " at line " & Erl & ": " & Err.Description. Generates a comment noting that Erl requires explicit line numbering (100: ...) to be non-zero. Coexists with the existing Wrap with "On Error GoTo" quick fix. |
Key Features (Pro)
Excel ⇄ VS Code Bi-directional Sync
| Command | Action |
|---|---|
VBA: Run Macro in Excel |
Imports the current module into Excel and runs the specified macro (with argument support) |
VBA: Sync Current File to Excel |
Pushes the current .bas to Excel (no execution, with progress notification) |
VBA: Sync ALL Modules to Excel |
Pushes every .bas / .cls / .frm in a selected folder to Excel (non-recursive). Auto-detects the matching workbook (<folder>.xlsm sibling) so you skip the workbook picker. |
VBA: Export Module from Excel |
Select a module from Excel via QuickPick and export as .bas (UTF-8 BOM, with overwrite confirmation). Output goes to <chosenRoot>/<WorkbookBaseName>/<Module>.bas so multiple workbooks coexist cleanly. |
- Workbook-named subfolder convention (v2.4.2):
Export Module from Excel(both single and "Export ALL") creates a subfolder named after the workbook (Book1.xlsm→<root>/Book1/).Sync ALL Modules to Excelthen auto-detects that sibling workbook when you point it at<root>/Book1/, enabling clean round-trip workflows. - CodeLens: Shows "Run Macro" and "Sync to Excel" buttons above Sub/Function declarations (Windows only, toggle with
vbaExcel.codeLens.enabled) - Workbook selection: Lists open workbooks via QuickPick, or select via file dialog
- Preflight checks: Validates platform and workbook path in advance
- Error diagnostics: Auto-detects missing Trust Access, bitness mismatch, and Excel not found, and displays resolution steps
Auto-sync is not implemented. Both VS Code → Excel and Excel → VS Code transfers are triggered only by explicit user command.
Debug & Run Experience (v2.4.0)
| Command / View | Description |
|---|---|
Run History sidebar (xlcraft.history) |
The 5th sidebar view. Records every vba.runMacro invocation with timestamp, args, success/failure, and duration. Default 20 entries, configurable up to 200. |
VBA: Save Run Profile / VBA: Run from Profile… / VBA: Delete Run Profile |
Save macro + args under a name, then re-run later via QuickPick or one-click from the sidebar. Sorted by last-used. |
VBA: Batch Run Macros… |
Multi-select Subs/Functions from the current file and run them sequentially. vbaExcel.batch.stopOnFailure toggles fail-fast vs continue. |
VBA: Capture Watch Snapshot (vbaExcel.watch.targets) |
Dump the values of one or more ranges (Sheet1!A1:B10,Sheet2!Total) to the VBA: Watch Snapshot output channel as JSON. vbaExcel.watch.maxCells (default 5000) guards against accidentally serializing huge ranges. |
VBA: Immediate Window (Evaluate Expression)… |
? expr style one-shot evaluation. Generates a transient .bas module that pipes the result back via Application.StatusBar. Rejects assignment statements / Set / multi-line input (single-expression scope). |
vbaExcel.profile.enabled (setting) |
Re-routes vba.runMacro through Profile-Macro.ps1, a Stopwatch-wrapped variant that emits [[XLC-PROFILE]] {macro, durationMs}. The Run History entry's duration switches from wall-clock to VBA-measured. |
Clear Run History |
Wipe the entire history with a modal confirmation. |
Output Channel marker protocol: [[XLC-WATCH]], [[XLC-IMM]], [[XLC-IMM-ERROR]], [[XLC-PROFILE]] lines on PowerShell stdout are parsed by runPowerShell.onStdoutLine and routed to the appropriate UI surface. Other lines flow into the regular output channel unchanged.
Known debug limits: Breakpoint sync and silent Debug.Print capture were deferred — VBE Automation has no programmatic Breakpoint.Add, and Excel's COM surface does not expose Immediate-Window output. Use Capture Watch Snapshot or Immediate Window to inspect state from outside the VBE.
Project Management (v2.5.0)
xlcraft v2.5.0 ships nine project-management features to make multi-module VBA codebases easier to organize, document, and track. Eight are Free; the diff-only sync mode is the single Pro addition. See CHANGELOG.md for the full breakdown.
| Command / View | Tier | Description |
|---|---|---|
Project Explorer sidebar (xlcraft.project) |
Free | The 6th sidebar view. Reads .xlcraft-project.json (created via xlcraft.initProject) and shows entrypoints, target workbook, and module globs in a collapsible tree. FileSystemWatcher keeps it live. |
VBA: Show Module Map (Mermaid) |
Free | Writes a Mermaid graph LR of module dependencies to docs/module-map.md and opens the Markdown preview. Rendered by VS Code 1.85+'s built-in Mermaid support. |
VBA: Show Module Graph (WebView) |
Free | Interactive version of the same graph — Mermaid loaded via CDN inside a WebView. Click a node to open the corresponding .bas / .cls / .frm. |
VBA: Show VBA Procedure Diff |
Free | Procedure-level diff between HEAD and the working tree. Uses the built-in vscode.git API. WebView table flags signature / body changes per procedure. |
VBA: New From Template… |
Free | QuickPick scaffold for Class > Singleton, Module > Repository, and Form > Wizard. Writes UTF-8 BOM .cls / .bas / .frm with placeholder substitution. |
VBA: Insert .gitattributes Presets |
Free | Conservative merge of *.bas / *.cls / *.frm rules into .gitattributes to lock CRLF + UTF-8 BOM (the encoding Excel round-trips cleanly). |
VBA: Generate API Documentation |
Free | Enumerates public procedures across the workspace into docs/api.md, parsing <summary> / <param> / <returns> xmldoc comments into Markdown tables. |
Sync ALL Modules to Excel (diff mode, default ON) |
Pro | SHA-1 content hashes of each module are persisted to workspaceState after a successful sync. Subsequent syncs only push modules that changed since the last run. normalizeForHash strips Attribute VB_*, CRLF, and trailing blanks so the VBE round-trip does not produce false positives. Toggle via QuickPick or vbaExcel.sync.diffOnly: false. |
| Workbook Lock preflight | Pro infra | Detects ~$<workbook>.xlsm lock files before every Pro Excel command. vbaExcel.workbookLock.action: warn (default modal continue / cancel), block (hard stop), ignore. |
Testing & Team Development (v2.6.0)
v2.6.0 adds five Free features focused on testing, team workflows, and a starter sample library.
| Command / Surface | Tier | Description |
|---|---|---|
Unit Tests sidebar (xlcraft.tests) |
Free | The 7th sidebar view. Detects Test_* Subs (configurable via vbaExcel.tests.namePattern) and groups them as module → test with pass / fail / skip / running badges. TestSetup / TestTeardown Subs are detected per-module. |
VBA: Run All Tests / Run Single Test |
Free | Drives Run-Tests.ps1 + the bundled xlcraft-test.bas Assert helpers (Assert_Equal, Assert_True, Assert_NotNothing, ...). Each test runs with try/catch + Stopwatch; results stream back through [[XLC-TEST]] markers and update the sidebar badges live. Requires Windows + Excel with VBA project access enabled. |
VBA: Install Pre-Commit Hook |
Free | Writes .git/hooks/pre-commit (POSIX bash) that calls node out/src/cli/formatCheck.js on every staged .bas/.cls/.frm. Aborts the commit when formatter drift is detected. Existing hooks are preserved as pre-commit.bak. Set vbaExcel.preCommit.failOnError: false to warn instead. |
VBA: Extract Comments to Bundle |
Free | Writes every comment (leading ' / Rem / trailing) to docs/i18n/<lang>/comments.json (schema v1). String literals are masked via the tokenizer's maskLine so apostrophes inside strings never get mistaken for comments. |
VBA: Apply Translated Comments |
Free | Reads the bundle back and rewrites each .bas/.cls/.frm. Entries whose original no longer matches the file are skipped, so stale bundles can't corrupt source. |
VBA: Insert Sample… |
Free | QuickPick from the bundled sample library (10 ready-to-use .bas files covering ADO, file I/O, Outlook, PowerPoint, Dictionary, error handling, Range loops, WinHttp). Selected sample is saved to the workspace with UTF-8 BOM. |
| ADO / I/O / Outlook / PowerPoint snippets | Free | 20 new snippets across four categories — ado-connect, ado-recordset, ado-query, ado-bulkinsert, ado-disconnect, fio-readlines, fio-writelines, fio-fso-foreach, fio-tempfile, fio-binaryread, ol-mail, ol-massmail, ol-getinbox, ol-meeting, ol-template, pp-newslide, pp-export-png, pp-replace-text, pp-applytheme, pp-batchexport. |
Upgrade note (v2.6.x → v3.0.x): The
xlcraft.objectBrowserview (8th in the sidebar, introduced in v2.7.0) can trigger a "No view is registered with id: xlcraft.objectBrowser" message after an in-place install — VS Code's internal manifest cache lags one launch behind. Reinstall withcode --uninstall-extension AmaneMikoto.xlcraft && code --install-extension xlcraft-3.2.1.vsix(or fully restart VS Code) to clear it.
AI Completion (v3.2.0) — BYOK
v3.2.0 adds three AI commands powered by your own API key (Bring Your Own Key). xlcraft stores the key locally in VS Code SecretStorage and sends your selected VBA code directly to the provider's API — no intermediate server.
Setup
- Enable AI: open Settings and set
vbaExcel.ai.enabledtotrue - Set your API key: run xlcraft AI: Set API Key… (Command Palette)
- Choose provider:
vbaExcel.ai.provider(anthropic/openai/gemini)
Commands
| Command | Description |
|---|---|
VBA: AI Refactor |
Select a VBA procedure → optional instruction → AI refactored code shown in a side-by-side diff WebView with an "Apply" button |
VBA: AI Generate Procedure |
Describe a procedure in natural language → generated VBA code inserted at cursor |
VBA: AI Explain Procedure |
Select a VBA procedure → concise markdown explanation in a read-only WebView beside the editor |
Providers & Default Models
| Provider | Default model |
|---|---|
| Anthropic (Claude) | claude-haiku-4-5-20251001 |
| OpenAI (GPT) | gpt-4o-mini |
| Google Gemini | gemini-1.5-flash |
Override with vbaExcel.ai.model (leave empty for the default).
Requirements
- VS Code 1.85.0 or later
- Windows + Excel (only required for Pro Excel integration commands; Free editor features are OS-independent)
- Web (vscode.dev / github.dev): Free editor features run in the browser with no install of any runtime. Pro / Excel automation requires the desktop app (the browser has no Excel COM).
Prerequisites for Excel Integration
- Allow access to the VBA project: File → Options → Trust Center → Trust Center Settings → Macro Settings → Check "Trust access to the VBA project object model"
- Match PowerShell and Excel bitness (32/64 bit)
- File encoding:
.basfiles with non-ASCII comments (e.g. Japanese) should be saved as UTF-8 with BOM (the Export command enforces BOM)
Compatible Editors / AI Coding Workflows
xlcraft is a VS Code extension, but its ecosystem extends to AI-powered editors and CLIs — pair them with xlcraft and ship Excel VBA at AI-coding speed:
| Editor / Tool | xlcraft Support | Recommended Workflow |
|---|---|---|
| VS Code (Stable / Insiders) | ✅ Native | Full features — open .bas and everything just works |
| vscode.dev / github.dev (browser) | ✅ Free features (Web) | Read, lint, format, and scaffold VBA in the browser — Pro / Excel automation is desktop-only |
| Cursor / Windsurf | ✅ VS Code extension-API compatible | AI completion and xlcraft IntelliSense / Lint / Run Macro in the same window |
| Claude Code / OpenAI Codex CLI | ⚠ File editing only | AI edits .bas from the terminal → switch to VS Code (or Cursor) + xlcraft for IntelliSense, Lint, and Run Macro |
| Xcode / JetBrains Fleet / IntelliJ | ❌ Cannot load VS Code extensions | Not supported |
Ditch the VBE. With Cursor or Claude Code generating
.bas, and xlcraft providing language intelligence + one-click Run Macro in Excel, VBA finally gets a modern editor stack.
Settings
| Key | Default | Description |
|---|---|---|
vbaExcel.workbookPath |
"" |
Path to target workbook (.xlsm/.xlsb). Leave empty to select each time |
vbaExcel.keepExcelVisible |
true |
Show Excel window during macro execution |
vbaExcel.codeLens.enabled |
true |
Show CodeLens actions above Sub/Function (Windows only) |
vbaExcel.linting.rules.optionExplicit |
warning |
error / warning / information / hint / off |
vbaExcel.linting.rules.unusedVariable |
warning |
Same as above |
vbaExcel.linting.rules.implicitVariant |
information |
Same as above |
vbaExcel.linting.rules.gotoOveruse |
information |
Same as above |
vbaExcel.linting.rules.duplicateDeclaration |
warning |
Same as above |
vbaExcel.linting.rules.unreachableCode |
information |
Same as above |
vbaExcel.linting.rules.unqualifiedRange |
information |
Same as above |
vbaExcel.format.indentSize |
4 |
Indent width (1–8) |
vbaExcel.format.useTabs |
false |
Use tabs for indentation |
vbaExcel.format.operatorSpacing |
true |
Normalize spacing around operators |
vbaExcel.format.alignDeclarations |
false |
Vertically align As in consecutive Dim lines |
Privacy
xlcraft does not collect telemetry. External communications: license validation with Polar (api.polar.sh) and, when AI commands are used, your selected VBA code sent to the AI provider you configured.
Data Sent
License validation
When activating, validating, or deactivating a Pro license, HTTPS requests are sent to api.polar.sh.
| Field | Value |
|---|---|
key |
The license key you entered |
organization_id |
Polar organization ID (hardcoded in the extension) |
label |
A short string derived from vscode.env.machineId (e.g. vscode-abcdef12) — sent only during activation |
activation_id |
UUID returned by Polar during activation (used for validation and deactivation) |
Source code, file paths, document content, and other workspace data are never sent to Polar.
AI commands (opt-in, BYOK)
When you run VBA: AI Refactor, VBA: AI Generate Procedure, or VBA: AI Explain Procedure, the selected VBA text is sent directly to the API endpoint of the provider you chose (api.anthropic.com / api.openai.com / generativelanguage.googleapis.com). xlcraft does not store or forward your code — the request goes from VS Code to the provider's API with your API key. AI commands are disabled by default (vbaExcel.ai.enabled: false); a one-time consent modal is shown before the first request.
Third-party Services
- Polar is the license issuer and payment processor. Polar's privacy policy: https://polar.sh/legal/privacy
- Anthropic / OpenAI / Google — only contacted when AI commands are enabled and an API key is configured. Their respective privacy policies apply to data you send via BYOK
- No other data is shared with any third party
Data Deletion
- Running
xlcraft: Deactivate License(Command Palette) clears the local license key and validation cache, and notifies Polar to release the activation
Locally Stored Data
In addition to the VS Code-managed globalState, xlcraft stores a small amount of license-state metadata in your user account's standard application-data area. No license key, source code, file paths, or workspace contents are stored, and nothing in these files is sent anywhere.
Support Diagnostics
xlcraft: Copy License Diagnosticscopies anonymized diagnostic info about license state to the clipboard. No license key or machine ID is included (only tier, reason, VS Code version, and platform info)
Troubleshooting
Excel Integration
| Symptom | Cause and Resolution |
|---|---|
| "Programmatic access to VBA project is not trusted" | Excel > File > Options > Trust Center > Macro Settings > Check "Trust access to the VBA project object model" |
New-Object Excel.Application fails / 0x80040154 error |
Match PowerShell and Excel bitness (32/64 bit). For 64-bit Excel, use 64-bit PowerShell |
| Non-ASCII comments are garbled | Save .bas as UTF-8 with BOM. VS Code setting: "files.encoding": "utf8bom" |
| Excel not found | Verify that Microsoft Excel is installed and COM automation is available |
| Workbook not found | Check the path in vbaExcel.workbookPath. Leave empty to select via dialog |
| Macro security warning | Excel > File > Options > Trust Center > Macro Settings > "Enable all macros" |
| CodeLens not showing | CodeLens is hidden on non-Windows OS. Verify vbaExcel.codeLens.enabled is true |
License
| Symptom | Cause and Resolution |
|---|---|
| "License key has reached activation limit" | Run xlcraft: Deactivate License on the original PC, then activate on the new one |
xlcraft: Pro → reverted to Free after going offline |
Exceeded the 5-day offline grace period. Reconnect and it will re-validate automatically |
| Activation fails (network error) | Check your internet connection and click "Retry" |
| Key reported as invalid | Verify the license key is correct (XXXX-XXXX-XXXX-XXXX-XXXX format) |
| Need to contact support | Copy diagnostics with xlcraft: Copy License Diagnostics and attach to an Issue |
Pro User Guide
Refund
Refunds are available within 14 days of purchase, per Polar's default policy. Use the link in the Polar checkout email to request a refund. After a refund, the license is invalidated and you revert to the Free tier.
Activation Reset
Each license is limited to 1 machine. If you no longer have access to the original machine (e.g. replaced PC, reinstalled OS):
- If possible, run
xlcraft: Deactivate Licenseon the original machine - If not accessible, request a reset on GitHub Issues with the last 4 digits of your license key and diagnostics (
xlcraft: Copy License Diagnostics)
Offline Usage
- Pro licenses are re-validated online every 24 hours
- Pro features remain available for 5 days while offline (grace period)
- After 5 days offline, you revert to Free, but Pro restores automatically upon reconnection
For Developers
npm install
npm run compile # tsc -p ./ → out/extension.js
npm run watch # tsc -w; recommended to start before F5 debugging
npm run test:unit # vscode-free unit tests (301 tests)
npm test # E2E via @vscode/test-electron (3 tests)
- Mocha uses TDD UI (
suite()/test()) - GitHub Actions CI runs compile, test, and VSIX artifact on Node 18/20
- See
CONTRIBUTING.mdandCLAUDE.mdfor details
License
Commercial License © 2026 Mikoto Amane
日本語
VBE を捨てて VS Code で Excel VBA を書く。¥750 買い切り、5日間トライアル。
レビューキャンペーン — 先着 15 名のレビュアーに Pro 75% OFF。 2026-06-21 までに Marketplace で評価・レビューを投稿し、レビュー本文に連絡先をご記載ください。評価入力・レビュー記入のどちらか、もしくは両方を実施いただいた方に、75% 割引コード(1 回限り)をお送りします。先着 15 名限定。
- Free / Pro
- Pro の購入とアクティベート
- ライセンスコマンド
- スクリーンショット
- 主な機能 (Free)
- 主な機能 (Pro)
- 動作要件
- 設定項目
- プライバシー
- トラブルシューティング
- Pro ユーザーガイド
- 開発者向け
- ライセンス
VS Code で Excel VBA を快適に開発するための拡張機能です。シンタックスハイライト・IntelliSense・リント・フォーマッタを 無料 で提供し、Excel との双方向同期と「Run Macro in Excel」を Pro 機能 (買い切り ¥750) として提供します。
Free / Pro
| カテゴリ | Free | Pro (¥750 買い切り) |
|---|---|---|
| シンタックスハイライト・スニペット | ✅ | ✅ |
| 補完 / 定義ジャンプ (F12) / ホバー / 参照 (Shift+F12) | ✅ | ✅ |
| ドキュメントハイライト / リネームシンボル | ✅ | ✅ |
| アウトライン / ワークスペースシンボル | ✅ | ✅ |
型推論ドット補完 (Dim ws As Worksheet → ws.) + With ブロック補完 |
✅ | ✅ |
| ユーザー定義クラス / .frm コントロールのメンバ補完 | ✅ | ✅ |
| Set 代入型推論 / コレクションアイテムヒント / シグネチャヘルプ | ✅ | ✅ |
| Lint 7 ルール + クイックフィックス | ✅ | ✅ |
| フォーマッタ (継続行・演算子スペーシング・宣言揃え) | ✅ | ✅ |
| 日本語 / 英語 UI (i18n) | ✅ | ✅ |
VBA: Run Macro in Excel (引数サポート付き) |
— | ✅ |
VBA: Sync Current File to Excel |
— | ✅ |
VBA: Sync ALL Modules to Excel |
— | ✅ |
VBA: Export Module from Excel |
— | ✅ |
| CodeLens: Sub/Function 上に Run/Sync アクション表示 | — | ✅ |
| 5 日間トライアル | ✅ Pro 機能を全開放 | — |
初回インストール時から 5 日間のトライアル で Pro 機能を試せます。トライアル期間中・終了後ともに、エディタ機能 (Free) は引き続き利用可能です。
Pro の購入とアクティベート
1. 購入
xlcraft Pro チェックアウト で ¥750 を支払うと、メールでライセンスキー (XXXX-XXXX-XXXX-XXXX-XXXX 形式) が届きます。
2. アクティベート
VS Code 内でコマンドパレット (Ctrl/Cmd+Shift+P) を開き:
xlcraft: Activate License
を実行 → ライセンスキーを貼り付け。ステータスバーが xlcraft: Pro に変わります。
3. 機械の移動
1 ライセンスにつき 1 台までです。別の PC で使う場合は、まず元の PC で xlcraft: Deactivate License を実行してから新しい PC でアクティベートしてください。
4. リファンド
Polar のデフォルトに従い 購入から 14 日以内 ならリファンド可能です。
ライセンスコマンド
| コマンド | 動作 |
|---|---|
xlcraft: Activate License |
ライセンスキーを入力して Pro をアクティベート |
xlcraft: Deactivate License |
このマシンの Pro を無効化 (キー自体は再利用可能) |
xlcraft: Show License Status |
現在のティアと操作メニューを表示 |
xlcraft: Buy xlcraft Pro |
チェックアウトページをブラウザで開く |
xlcraft: Copy License Diagnostics |
サポート用の匿名化診断情報をクリップボードにコピー |
ステータスバーの xlcraft: … 表示をクリックしても同じ操作メニューが開きます。
スクリーンショット
主な機能 (Free)
言語サポート
.bas/.cls/.frm/.vbaのシンタックスハイライト- ブロック構造に応じた自動インデント・コメント切替・括弧マッチング
- スニペット (
sub,func,for,errhandler,lastrowほか)
IntelliSense
- 補完: 同ファイル内の Sub/Function/Property/Dim/Const、ワークスペース内の
Publicシンボル、Excel 組み込みオブジェクトモデル (20+ 型: Application, Worksheet, Range, ListObject, Font, Dictionary 等) を統合 - 型推論ドット補完:
Dim ws As Worksheet→ws./With ws ... .Range/Set ws = Worksheets(1)→ws./Worksheets(1).(コレクションアイテム) / ユーザー定義.clsクラスメンバ /.frmコントロールメンバ - シグネチャヘルプ:
MsgBox(で引数情報をポップアップ表示 (20 組み込み関数 + ユーザー定義関数) - ホバー: シグネチャ・定数値・Enum メンバ値・パラメータデフォルト値・宣言直前のコメントを表示
- F12 定義ジャンプ: スコープ優先 (ローカル → モジュール → ワークスペース)、複数候補時はピッカー表示
- Shift+F12 参照検索 / Ctrl+Shift+O アウトライン / Ctrl+T ワークスペースシンボル
- ドキュメントハイライト: カーソル下の識別子の全出現箇所をハイライト
- リネームシンボル (
F2): VBA スコープ境界内でのリネーム (予約語チェック付き)
Lint (7 ルール、QuickFix 付き)
| ルール | 既定の重大度 | クイックフィックス |
|---|---|---|
Option Explicit 不在 |
warning | "Add Option Explicit at module top" |
| 未使用ローカル変数 (スコープ対応) | warning | "Remove unused variable declaration" (同一行の複数宣言にも対応) |
暗黙の Variant (As 句なし) |
information | "Add As Variant" |
On Error GoTo 以外の GoTo 過剰使用 |
information | — |
| 重複宣言 (同一スコープ内) | warning | "Remove duplicate declaration" |
到達不能コード (Exit Sub/GoTo 後) |
information | — |
修飾なし Range/Cells |
information | "Qualify with ActiveSheet." |
フォーマッタ (Shift+Alt+F)
- ブロックインデント正規化 (Sub/If/For/With/Select Case/Type/Enum 等)
_継続行のインデント (+1 段)- 演算子スペーシング (
=,+,-,*,/,&,,,:=,<>,<=,>=— 単項-/+は除外) - 宣言揃え: 連続
Dim行のAsを縦位置揃え (vbaExcel.format.alignDeclarations) - 行末空白除去、文字列・コメント保護、CRLF/LF・末尾改行の保持
リファクタリング支援 (v2.3.0)
| コマンド | 説明 |
|---|---|
VBA: Add "Option Explicit" to All Modules |
ワークスペース内の全 VBA モジュールに Option Explicit を一括追加(既存宣言モジュールはスキップ)。 |
VBA: Sort Procedures by Name / Visibility |
プロシージャを名前順または可視性順(Public → Private + Sub/Function → Property)に並び替え。Property Get/Let/Set は同名で隣接化。 |
Wrap with "On Error GoTo ErrHandler" handler (Quick Fix) |
gotoOveruse 診断に対して、包含プロシージャに On Error GoTo 雛形(Exit + ラベル + Debug.Print + Resume Next)を導入。 |
Generate Property accessors for X (Refactor) |
.cls の Private mFoo As T フィールドから Property Get/Let(値型)または Get/Set(オブジェクト型)を生成。 |
VBA: Safe Delete Symbol at Cursor |
参照 0 件のシンボルのみ削除。Function name = expr 戻り値代入は呼び出しから除外。 |
VBA: Inline Local Variable |
単一代入のローカル変数を右辺式で展開。関数呼び出し / 複数代入 / 配列添字は拒否。 |
VBA: Extract Selection to Procedure... |
選択範囲を新規プロシージャに抽出。引数・戻り値を自動推論。 |
VBA: Move Procedure to Module... |
プロシージャを別の .bas モジュールへ移動。Private → Public 昇格、呼び出し箇所を <TargetModule>.<Proc> に修飾。 |
リファクタの限界: Application.Run "ModuleName.Foo" や CallByName 経由の動的呼び出しは参照検出できないため、Safe Delete / Inline が全参照を捕捉できない場合があります。Sort Procedures は #If ... #End If ブロックを含むモジュールでは no-op になります。Move Procedure は .bas 標準モジュール間のみで、Implements 命名規約のプロシージャは拒否します。
Stack Trace Code Action (v2.4.0)
| アクション | 説明 |
|---|---|
Insert Err.Source / Erl stack-trace handler (ErrHandler) (Refactor) |
v2.3.0 の Quick Fix よりリッチなハンドラを注入: Debug.Print "[" & Err.Source & "] " & Err.Number & " at line " & Erl & ": " & Err.Description。Erl は明示的な行番号 (100: ...) を付けないと常に 0 を返す制約をコメントで明示。既存の Wrap with "On Error GoTo" Quick Fix と共存。 |
主な機能 (Pro)
Excel ⇄ VS Code 双方向同期
| コマンド | 動作 |
|---|---|
VBA: Run Macro in Excel |
編集中のモジュールを Excel に取り込み、指定したマクロを実行 (引数サポート付き) |
VBA: Sync Current File to Excel |
編集中の .bas を Excel に反映 (実行はしない、進捗通知付き) |
VBA: Sync ALL Modules to Excel |
選択フォルダ内の .bas / .cls / .frm を非再帰でまとめて Excel に反映。フォルダ名と同名の <folder>.xlsm(兄弟ファイル)を自動検出し、ワークブック選択をスキップ |
VBA: Export Module from Excel |
Excel 上のモジュールを QuickPick で選んで .bas 出力 (UTF-8 BOM、上書き確認付き)。出力先は <選択ルート>/<ワークブック名>/<Module>.bas の構成で、複数ワークブックを混在させても整理される |
- ワークブック名サブフォルダ規約 (v2.4.2):
Export Module from Excel(単体・全件いずれも) はワークブック名のサブフォルダを自動作成 (Book1.xlsm→<root>/Book1/)。Sync ALL Modules to Excelで<root>/Book1/を指定すれば兄弟ワークブックを自動検出し、Round-trip ワークフローがそのまま成立する。 - CodeLens: Sub/Function 宣言の上に「Run Macro」「Sync to Excel」ボタンを表示 (Windows のみ、
vbaExcel.codeLens.enabledで切替) - ワークブック選択: 開いているワークブックを QuickPick で一覧表示、またはファイルダイアログで選択
- プリフライトチェック: プラットフォーム・ワークブックパスを事前検証
- エラー診断: Trust Access 欠落・ビット数不一致・Excel 未検出を自動検出し、解決手順を表示
自動同期は実装していません。VS Code → Excel、Excel → VS Code いずれもユーザー指示でのみ実行されます。
デバッグ・実行体験 (v2.4.0)
| コマンド / ビュー | 説明 |
|---|---|
Run History サイドバー (xlcraft.history) |
サイドバー 5 番目の view。vba.runMacro 実行ごとに timestamp / 引数 / 成否 / 所要時間を記録 (既定 20 件、最大 200 件)。 |
VBA: Save Run Profile / VBA: Run from Profile… / VBA: Delete Run Profile |
マクロ + 引数の組をプロファイル名で保存。QuickPick またはサイドバーのクリックで再実行。最終使用日時順で並び替え。 |
VBA: Batch Run Macros… |
編集中ファイルの Sub/Function を QuickPick で複数選択し順次実行。vbaExcel.batch.stopOnFailure で最初の失敗で停止 / 継続を切替。 |
VBA: Capture Watch Snapshot (vbaExcel.watch.targets) |
複数の Sheet!Address (Sheet1!A1:B10,Sheet2!Total 形式) の値を VBA: Watch Snapshot Output Channel に JSON ダンプ。vbaExcel.watch.maxCells (既定 5000) で巨大 Range を安全ガード。 |
VBA: Immediate Window (Evaluate Expression)… |
? expr 形式の 1-shot 式評価。一時 .bas モジュールを生成し Application.StatusBar 経由で結果取得。代入文 / Set / 複数行入力は拒否。 |
vbaExcel.profile.enabled (設定) |
vba.runMacro を Stopwatch 計測版の Profile-Macro.ps1 経由に切替。[[XLC-PROFILE]] {macro, durationMs} を出力し、履歴の所要時間が wall-clock から VBA 実測値に変わる。 |
Clear Run History |
モーダル確認後に履歴を全削除。 |
Output Channel マーカープロトコル: PowerShell stdout 上の [[XLC-WATCH]] / [[XLC-IMM]] / [[XLC-IMM-ERROR]] / [[XLC-PROFILE]] 行は runPowerShell.onStdoutLine でパースして対応 UI に流す。それ以外の行は通常通り Output Channel に出力。
デバッグの限界: ブレークポイント連携と Debug.Print 軽量キャプチャは見送り — VBE オートメーション API に Breakpoint.Add 相当はなく、Excel の COM サーフェスも Immediate Window 出力を露出しない。VBE 外から状態を見るには Capture Watch Snapshot または Immediate Window を利用。
プロジェクト管理 (v2.5.0)
v2.5.0 ではプロジェクト管理 9 機能を導入。ライセンスティアの分布は 8 Free / 1 Pro で、複数モジュールの可視化・ドキュメント化・追跡を Free 機能で広くカバーします。詳細は CHANGELOG.md 参照。
| コマンド / ビュー | ティア | 説明 |
|---|---|---|
Project Explorer サイドバー (xlcraft.project) |
Free | サイドバー 6 番目の view。xlcraft.initProject で雛形作成した .xlcraft-project.json を読み込み、エントリポイント・対象ワークブック・モジュール glob を階層表示。FileSystemWatcher で自動更新。 |
VBA: モジュールマップ (Mermaid) を表示 |
Free | モジュール依存関係を Mermaid graph LR フェンスとして docs/module-map.md に書き出し、Markdown プレビューを起動。VS Code 1.85+ の built-in Mermaid が描画。 |
VBA: モジュールグラフ (WebView) を表示 |
Free | 上記と同じグラフを WebView (Mermaid CDN) で対話表示。ノードクリックで対応する .bas / .cls / .frm を開く。 |
VBA: プロシージャ差分を表示 |
Free | HEAD vs working tree のプロシージャ単位差分。built-in vscode.git API 利用。WebView テーブルで「シグネチャ変更」「本体変更」を明示。 |
VBA: テンプレートから新規作成… |
Free | Class > Singleton / Module > Repository / Form > Wizard の 3 種を QuickPick → InputBox → UTF-8 BOM 付き .cls / .bas / .frm 新規作成。プレースホルダ置換対応。 |
VBA: .gitattributes プリセットを挿入 |
Free | *.bas / *.cls / *.frm に text eol=crlf working-tree-encoding=UTF-8-BOM 属性を保守的マージ。既存パターンは温存して不足分のみ追記。Excel と round-trip しやすい改行・エンコーディングを保持。 |
VBA: API ドキュメントを生成 |
Free | ワークスペース全体の Public プロシージャを docs/api.md に列挙。<summary> / <param> / <returns> xmldoc コメントを Markdown テーブルに展開。 |
すべてのモジュールを Excel に同期 (差分モード、既定 ON) |
Pro | 同期成功後にモジュール内容の SHA-1 を workspaceState に保存。次回以降は変更されたモジュールのみ push。normalizeForHash で Attribute VB_* / CRLF / 末尾空白を吸収するため、VBE 往復で false positive が出ない。QuickPick で「全件再同期」切替、または vbaExcel.sync.diffOnly: false でデフォルト解除。 |
| Workbook Lock preflight | Pro 全コマンド共通 | Pro 系コマンド実行前に ~$<workbook>.xlsm ロックファイルを検出。vbaExcel.workbookLock.action で warn (既定: モーダル続行確認) / block (強制中止) / ignore (検出無視) を切替。 |
テスト・チーム開発 (v2.6.0)
v2.6.0 ではテスト・チーム開発・コミュニティ向け 5 機能を追加(すべて Free)。
| コマンド / サーフェス | ティア | 説明 |
|---|---|---|
Unit Tests サイドバー (xlcraft.tests) |
Free | サイドバー 7 番目の view。Test_* Sub (vbaExcel.tests.namePattern でカスタマイズ可) を検出して「モジュール → テスト」の 2 段ツリーに表示。pass / fail / skip / running バッジ付き。TestSetup / TestTeardown Sub をモジュール毎に検出。 |
VBA: すべてのテストを実行 / 単体テストを実行 |
Free | Run-Tests.ps1 + 同梱の xlcraft-test.bas Assert ヘルパー (Assert_Equal / Assert_True / Assert_NotNothing 等) を実行。各テストを try/catch + Stopwatch で実行し、[[XLC-TEST]] マーカー経由でサイドバーバッジをライブ更新。Windows + Excel と VBA プロジェクトアクセス許可が必要。 |
VBA: Pre-Commit フックをインストール |
Free | .git/hooks/pre-commit (POSIX bash) を生成。ステージ済み .bas/.cls/.frm を node out/src/cli/formatCheck.js で検査し、フォーマット差分があれば commit を abort。既存フックは pre-commit.bak に退避。vbaExcel.preCommit.failOnError: false で警告のみに切替可能。 |
VBA: コメントを翻訳バンドルに抽出 |
Free | 全コメント (leading ' / Rem / trailing) を docs/i18n/<lang>/comments.json (schema v1) に書き出し。tokenizer の maskLine で文字列リテラル内 ' を除外。 |
VBA: 翻訳済みコメントを適用 |
Free | バンドルを読み戻して .bas/.cls/.frm を書き換え。original テキストが現在のファイルと一致しないエントリはスキップされ、stale バンドルが原本を破壊しない設計。 |
VBA: サンプルを挿入… |
Free | QuickPick で 10 個のバンドルサンプル (ADO / ファイル I/O / Outlook / PowerPoint / Dictionary / エラーハンドラ / Range / WinHttp) から選択。UTF-8 BOM 付きでワークスペースに保存。 |
| ADO / I/O / Outlook / PowerPoint スニペット | Free | 4 カテゴリ × 5 個 = 20 スニペット追加 (ado-connect, ado-recordset, ado-query, ado-bulkinsert, ado-disconnect, fio-readlines, fio-writelines, fio-fso-foreach, fio-tempfile, fio-binaryread, ol-mail, ol-massmail, ol-getinbox, ol-meeting, ol-template, pp-newslide, pp-export-png, pp-replace-text, pp-applytheme, pp-batchexport)。 |
アップグレード注意 (v2.6.x → v3.0.x):
xlcraft.objectBrowserview (8 つ目、v2.7.0 で追加) は VS Code 内部 manifest キャッシュの遅延で「No view is registered with id: xlcraft.objectBrowser」エラーが起動直後に出ることがあります。code --uninstall-extension AmaneMikoto.xlcraft && code --install-extension xlcraft-3.2.1.vsixで再インストールするか、VS Code を完全再起動してキャッシュをクリアしてください。
AI 補完 (v3.2.0) — BYOK
v3.2.0 は BYOK (Bring Your Own Key) AI 機能を追加するマイナーリリースです。Anthropic / OpenAI / Google Gemini の 3 プロバイダーに対応し、VBA コードの リファクタリング・プロシージャ生成・コード解説 の 3 コマンドを Free 機能として提供します。API キーはユーザーが用意し、xlcraft は VS Code SecretStorage にのみ保管します。
セットアップ
- 設定で
vbaExcel.ai.enabledをtrueに - xlcraft AI: API キーを設定… (コマンドパレット) を実行
- プロバイダーを選択:
vbaExcel.ai.provider(anthropic/openai/gemini)
コマンド
| コマンド | 説明 |
|---|---|
VBA: AI Refactor |
VBA プロシージャを選択 → 任意の追加指示 → AI がリファクタリング提案を差分 WebView で表示。"Apply" で反映 |
VBA: AI Generate Procedure |
自然言語で説明を入力 → VBA プロシージャを生成してカーソル位置に挿入 |
VBA: AI Explain Procedure |
VBA プロシージャを選択 → 動作を解説するテキスト WebView を隣接ペインに表示 |
動作要件
- VS Code 1.85.0 以降
- Windows + Excel (Pro の Excel 連携コマンドの実行時のみ。Free のエディタ機能は OS 非依存)
- Web (vscode.dev / github.dev): Free のエディタ機能はランタイムのインストール不要でブラウザだけで動作します。Pro / Excel 自動化はデスクトップアプリが必要です (ブラウザには Excel COM がないため)。
Excel 連携の前提条件
- VBA プロジェクトへのアクセスを許可: ファイル → オプション → セキュリティセンター → セキュリティセンターの設定 → マクロの設定 → 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェック
- PowerShell と Excel のビット数を一致 (32/64 bit)
- ファイルエンコーディング: 日本語コメントを含む
.basは UTF-8 BOM 付きで保存 (Export コマンドは BOM を強制)
対応エディタ / AI コーディング併用
xlcraft は VS Code 拡張機能ですが、エコシステムは AI コーディングエディタや CLI にも広がります。組み合わせれば AI コーディング時代のスピードで Excel VBA を書き出せます:
| エディタ / ツール | xlcraft サポート | 推奨ワークフロー |
|---|---|---|
| VS Code (Stable / Insiders) | ✅ ネイティブ | 全機能 — .bas を開けばそのまま動作 |
| vscode.dev / github.dev (ブラウザ) | ✅ Free 機能 (Web) | ブラウザで VBA の閲覧・Lint・整形・雛形生成。Pro / Excel 自動化はデスクトップ専用 |
| Cursor / Windsurf | ✅ VS Code 拡張 API 互換 | AI 補完 と xlcraft の IntelliSense / Lint / Run Macro を同じウィンドウで |
| Claude Code / OpenAI Codex CLI | ⚠ ファイル編集のみ | ターミナルから AI が .bas を編集 → VS Code (または Cursor) + xlcraft 側で IntelliSense・Lint・Run Macro |
| Xcode / JetBrains Fleet / IntelliJ | ❌ VS Code 拡張を読み込めない | 非対応 |
VBE を捨てる。 Cursor / Claude Code に
.basを書かせ、xlcraft が言語インテリジェンスとワンクリック Run Macro を提供する — VBA がついにモダンなエディタスタックを手に入れます。
設定項目
| キー | 既定値 | 説明 |
|---|---|---|
vbaExcel.workbookPath |
"" |
対象ワークブック (.xlsm/.xlsb) のパス。空にすると毎回選択 |
vbaExcel.keepExcelVisible |
true |
マクロ実行中に Excel ウィンドウを表示 |
vbaExcel.codeLens.enabled |
true |
Sub/Function 上の CodeLens アクション表示 (Windows のみ) |
vbaExcel.linting.rules.optionExplicit |
warning |
error / warning / information / hint / off |
vbaExcel.linting.rules.unusedVariable |
warning |
同上 |
vbaExcel.linting.rules.implicitVariant |
information |
同上 |
vbaExcel.linting.rules.gotoOveruse |
information |
同上 |
vbaExcel.linting.rules.duplicateDeclaration |
warning |
同上 |
vbaExcel.linting.rules.unreachableCode |
information |
同上 |
vbaExcel.linting.rules.unqualifiedRange |
information |
同上 |
vbaExcel.format.indentSize |
4 |
インデント幅 (1〜8) |
vbaExcel.format.useTabs |
false |
インデントにタブを使用 |
vbaExcel.format.operatorSpacing |
true |
演算子周辺のスペース正規化 |
vbaExcel.format.alignDeclarations |
false |
連続 Dim 行の As を縦揃え |
プライバシー
xlcraft はテレメトリを収集しません。外部通信は Polar へのライセンス検証 (api.polar.sh) と、AI コマンド使用時の 選択した VBA コードの AI プロバイダーへの送信 の 2 種類です。
送信されるデータ
ライセンス検証
Pro ライセンスのアクティベート・検証・ディアクティベート時に、api.polar.sh へ HTTPS リクエストを送信します。
| フィールド | 値 |
|---|---|
key |
入力したライセンスキー |
organization_id |
Polar の組織 ID (拡張機能にハードコード) |
label |
vscode.env.machineId から生成した短い文字列 (例: vscode-abcdef12) — アクティベート時のみ送信 |
activation_id |
アクティベート時に Polar が返す UUID (検証・ディアクティベート時に使用) |
ソースコード、ファイルパス、ドキュメント内容、その他のワークスペースデータは Polar へ送信されません。
AI コマンド (オプトイン・BYOK)
VBA: AI Refactor / VBA: AI Generate Procedure / VBA: AI Explain Procedure を実行すると、選択した VBA テキストが設定したプロバイダーの API エンドポイント (api.anthropic.com / api.openai.com / generativelanguage.googleapis.com) に直接送信されます。xlcraft のサーバーを経由しません。AI コマンドはデフォルト無効 (vbaExcel.ai.enabled: false) で、初回実行時に同意モーダルを表示します。
第三者サービス
- Polar がライセンス発行および決済の事業者です。Polar のプライバシーポリシー: https://polar.sh/legal/privacy
- Anthropic / OpenAI / Google — AI コマンドを有効化して API キーを設定した場合のみ接続されます。各社のプライバシーポリシーが適用されます
- それ以外の第三者とデータを共有することはありません
データの削除
xlcraft: Deactivate License(コマンドパレット) を実行すると、ローカルのライセンスキー・検証キャッシュを消去し、Polar にアクティベーション解除を通知します
ローカル保存されるデータ
VS Code が管理する globalState に加えて、xlcraft はライセンス状態に関する少量のメタデータをユーザーアカウント標準のアプリケーションデータ領域に保存します。ライセンスキー・ソースコード・ファイルパス・ワークスペースの内容は一切保存されず、これらのファイルの中身が外部に送信されることもありません。
サポート用診断情報
xlcraft: Copy License Diagnosticsでライセンス状態の匿名化された診断情報をクリップボードにコピーできます。ライセンスキーやマシンIDは含まれません(ティア・理由・VS Codeバージョン・プラットフォーム情報のみ)
トラブルシューティング
Excel 連携
| 症状 | 原因と対処 |
|---|---|
| 「プログラミングによるアクセスは信頼されていません」 | Excel > ファイル > オプション > トラストセンター > マクロの設定 > 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェック |
New-Object Excel.Application で失敗 / 0x80040154 エラー |
PowerShell と Excel のビット数 (32/64 bit) を揃える。64bit Excel なら 64bit PowerShell を使用 |
| 日本語コメントが文字化け | .bas を UTF-8 BOM 付き で保存。VS Code 設定: "files.encoding": "utf8bom" |
| Excel が見つからない | Microsoft Excel がインストールされ、COM オートメーションが利用可能か確認 |
| ワークブックが見つからない | vbaExcel.workbookPath 設定のパスを確認。空にしてダイアログから選択も可能 |
| マクロのセキュリティ警告 | Excel > ファイル > オプション > トラストセンター > マクロの設定 > 「すべてのマクロを有効にする」 |
| CodeLens が表示されない | Windows 以外の OS では非表示。vbaExcel.codeLens.enabled が true か確認 |
ライセンス
| 症状 | 原因と対処 |
|---|---|
| 「ライセンスキーが活性化上限に達しています」 | 元の PC で xlcraft: Deactivate License を実行してから新しい PC でアクティベート |
xlcraft: Pro → オフライン後 Free に戻った |
5 日のオフライン猶予を超過。再接続後に自動で再検証されます |
| アクティベーションが失敗する (ネットワークエラー) | インターネット接続を確認して「Retry」をクリック |
| 無効なキーと言われる | ライセンスキーが正しいか確認 (XXXX-XXXX-XXXX-XXXX-XXXX 形式) |
| サポートに問い合わせたい | xlcraft: Copy License Diagnostics で診断情報をコピーし、Issue に添付 |
Pro ユーザーガイド
リファンド
Polar のデフォルトに従い 購入から 14 日以内 ならリファンド可能です。Polar のチェックアウトメールに記載のリンクから手続きしてください。リファンド後はライセンスが無効化され、Free ティアに戻ります。
アクティベーションリセット
1 ライセンスにつき 1 台の制限があります。PC を買い替えた・再インストールしたなどで以前のマシンにアクセスできない場合:
- 可能であれば、元のマシンで
xlcraft: Deactivate Licenseを実行 - アクセスできない場合は、GitHub Issues でライセンスキーの下4桁と診断情報 (
xlcraft: Copy License Diagnostics) を添えてリセットを依頼してください
オフライン利用
- Pro ライセンスは 24 時間ごとにオンラインで再検証されます
- オフラインでも 5 日間 は Pro 機能を利用可能 (オフライン猶予期間)
- 5 日を超えてオフラインの場合は Free に戻りますが、再接続後に自動復帰します
開発者向け
npm install
npm run compile # tsc -p ./ → out/extension.js
npm run watch # tsc -w; F5 デバッグ時は事前に起動を推奨
npm run test:unit # vscode 非依存のユニットテスト (301 tests)
npm test # @vscode/test-electron による E2E (3 tests)
- Mocha は TDD UI (
suite()/test()) を使用 - GitHub Actions CI で Node 18/20 のコンパイル・テスト・VSIX アーティファクトを自動実行
- 詳細は
CONTRIBUTING.md・CLAUDE.mdを参照
ライセンス
Commercial License © 2026 Mikoto Amane
简体中文
告别 VBE,在 VS Code 中编写 Excel VBA。¥750 日元 (约 32 元) 一次性付费,5 天试用。
评论活动 — 前 15 名评论者享 Pro 75% 折扣。 请在 2026-06-21 之前于 Marketplace 发布评分或评论,并在评论正文中留下联系方式。凡留下评分、评论或两者皆有的用户,我们都会发送一个一次性 75% 折扣码。仅限前 15 名评论者。
适用于 VS Code 的 Excel VBA 开发扩展。免费 提供语法高亮、IntelliSense、Lint、格式化器,Pro 功能 (一次性买断 ¥750 日元,约 32 元) 提供 Excel 双向同步与「在 Excel 中运行宏」。
Polar 实际收款币种为 ¥750 日元。本 README 中标注的其他币种金额仅为 参考价格 (2026-05-17 汇率),最终结算金额由您的发卡机构决定。
Free / Pro
| 类别 | 免费版 | Pro 版 (¥750 日元 / 约 32 元 买断) |
|---|---|---|
| 语法高亮与代码片段 | ✅ | ✅ |
| 补全 / 跳转到定义 (F12) / 悬停 / 查找引用 (Shift+F12) | ✅ | ✅ |
| 文档高亮 / 重命名符号 | ✅ | ✅ |
| 大纲 / 工作区符号 | ✅ | ✅ |
类型推断的点补全 (Dim ws As Worksheet → ws.) + With 块补全 |
✅ | ✅ |
| 用户自定义类 / .frm 控件成员补全 | ✅ | ✅ |
| Set 赋值类型推断 / 集合元素提示 / 签名帮助 | ✅ | ✅ |
| Lint 7 条规则 + Quick Fix | ✅ | ✅ |
| 格式化器 (续行、运算符间距、声明对齐) | ✅ | ✅ |
| 日语 / 英语 UI (i18n) | ✅ | ✅ |
VBA: Run Macro in Excel (支持参数) |
— | ✅ |
VBA: Sync Current File to Excel |
— | ✅ |
VBA: Sync ALL Modules to Excel |
— | ✅ |
VBA: Export Module from Excel |
— | ✅ |
| CodeLens: Sub/Function 上方的 Run/Sync 操作 | — | ✅ |
| 5 天试用期 | ✅ 解锁全部 Pro 功能 | — |
首次安装后,5 天试用期 让您体验所有 Pro 功能。试用期间和结束后,编辑器功能 (免费版) 始终可用。
购买与激活 Pro
1. 购买
在 xlcraft Pro 结账页面 支付 ¥750 日元 (约 32 元),您将通过电子邮件收到许可证密钥 (XXXX-XXXX-XXXX-XXXX-XXXX 格式)。
2. 激活
在 VS Code 中打开命令面板 (Ctrl/Cmd+Shift+P) 并运行:
xlcraft: Activate License
粘贴您的许可证密钥。状态栏将变为 xlcraft: Pro。
3. 转移到其他机器
每个许可证仅允许 1 台机器使用。要在其他 PC 上使用,请先在原 PC 上运行 xlcraft: Deactivate License,然后在新机器上激活。
4. 退款
依据 Polar 默认政策,购买后 14 天内 可申请退款。
许可证命令
| 命令 | 操作 |
|---|---|
xlcraft: Activate License |
输入许可证密钥以激活 Pro |
xlcraft: Deactivate License |
在本机停用 Pro (密钥本身可重复使用) |
xlcraft: Show License Status |
显示当前层级和操作菜单 |
xlcraft: Buy xlcraft Pro |
在浏览器中打开结账页面 |
xlcraft: Copy License Diagnostics |
将匿名化诊断信息复制到剪贴板供支持使用 |
您也可以单击状态栏中的 xlcraft: … 指示器,打开相同的操作菜单。
截图
主要功能 (免费版)
语言支持
.bas/.cls/.frm/.vba的语法高亮- 基于块结构的自动缩进、注释切换和括号匹配
- 代码片段 (
sub、func、for、errhandler、lastrow等)
IntelliSense
- 补全:整合当前文件的 Sub/Function/Property/Dim/Const、工作区中的
Public符号,以及内置的 Excel 对象模型 (20+ 类型:Application、Worksheet、Range、ListObject、Font、Dictionary 等) - 类型推断的点补全:
Dim ws As Worksheet→ws./With ws ... .Range/Set ws = Worksheets(1)→ws./Worksheets(1).(集合元素) / 用户自定义.cls类成员 /.frm控件成员 - 签名帮助:在
MsgBox(等位置弹出参数信息 (20 个内置函数 + 用户自定义函数) - 悬停:显示签名、常量值、Enum 成员值、参数默认值,以及声明前的注释
- 跳转到定义 (F12):作用域感知的优先级 (局部 → 模块 → 工作区),多个候选时显示选择器
- 查找所有引用 (Shift+F12) / 大纲 (Ctrl+Shift+O) / 工作区符号 (Ctrl+T)
- 文档高亮:高亮显示光标下标识符的所有出现位置
- 重命名符号 (
F2):在 VBA 作用域边界内重命名 (带保留字检查)
Lint (7 条规则,带 QuickFix)
| 规则 | 默认严重度 | Quick Fix |
|---|---|---|
缺少 Option Explicit |
warning | "Add Option Explicit at module top" |
| 未使用的局部变量 (作用域感知) | warning | "Remove unused variable declaration" (处理同一行的多个声明) |
隐式 Variant (缺少 As 子句) |
information | "Add As Variant" |
过度使用 GoTo (除 On Error GoTo 之外) |
information | — |
| 重复声明 (同一作用域内) | warning | "Remove duplicate declaration" |
不可达代码 (在 Exit Sub/GoTo 之后) |
information | — |
未限定的 Range/Cells |
information | "Qualify with ActiveSheet." |
格式化器 (Shift+Alt+F)
- 块缩进规范化 (Sub/If/For/With/Select Case/Type/Enum 等)
- 续行 (
_) 缩进 (+1 级) - 运算符间距 (
=、+、-、*、/、&、,、:=、<>、<=、>=—— 不包括一元-/+) - 声明对齐:连续
Dim行的As垂直对齐 (vbaExcel.format.alignDeclarations) - 行尾空白清除、字符串/注释保护、保留 CRLF/LF 与文件末尾换行
主要功能 (Pro 版)
Excel ⇄ VS Code 双向同步
| 命令 | 操作 |
|---|---|
VBA: Run Macro in Excel |
将当前模块导入 Excel 并运行指定的宏 (支持参数) |
VBA: Sync Current File to Excel |
将当前 .bas 推送到 Excel (不执行,带进度通知) |
VBA: Sync ALL Modules to Excel |
将所选文件夹中的 .bas / .cls / .frm 非递归地批量推送到 Excel。自动检测同名兄弟工作簿 (<folder>.xlsm),可跳过工作簿选择 |
VBA: Export Module from Excel |
通过 QuickPick 从 Excel 选择模块并导出为 .bas (UTF-8 BOM,带覆盖确认)。输出路径为 <选定根目录>/<工作簿名>/<Module>.bas,多工作簿可清晰共存 |
- 工作簿命名子文件夹规约 (v2.4.2):
Export Module from Excel(单个与全部导出均适用)会以工作簿名为子文件夹自动创建 (Book1.xlsm→<root>/Book1/)。Sync ALL Modules to Excel指定<root>/Book1/时会自动检测兄弟工作簿,构成完整的往返工作流。 - CodeLens:在 Sub/Function 声明上方显示「Run Macro」「Sync to Excel」按钮 (仅限 Windows,可用
vbaExcel.codeLens.enabled切换) - 工作簿选择:通过 QuickPick 列出已打开的工作簿,或通过文件对话框选择
- 预检:预先验证平台和工作簿路径
- 错误诊断:自动检测缺少 Trust Access、位数不匹配、未找到 Excel,并显示解决步骤
未实现自动同步。 VS Code → Excel、Excel → VS Code 的传输都仅由用户显式命令触发。
系统要求
- VS Code 1.85.0 或更高版本
- Windows + Excel (仅 Pro Excel 集成命令需要;免费版编辑器功能与操作系统无关)
Excel 集成的前提条件
- 允许访问 VBA 工程:文件 → 选项 → 信任中心 → 信任中心设置 → 宏设置 → 勾选「信任对 VBA 工程对象模型的访问」
- 匹配 PowerShell 与 Excel 的位数 (32/64 位)
- 文件编码:包含非 ASCII 注释 (例如中文) 的
.bas文件应保存为 UTF-8 with BOM (Export 命令会强制 BOM)
兼容编辑器 / AI 编程协作
xlcraft 是 VS Code 扩展,但其生态系统也覆盖 AI 编程编辑器与 CLI。两者结合可以以 AI 编程时代的速度交付 Excel VBA:
| 编辑器 / 工具 | xlcraft 支持 | 推荐工作流 |
|---|---|---|
| VS Code (Stable / Insiders) | ✅ 原生支持 | 完整功能 — 打开 .bas 即可直接使用 |
| Cursor / Windsurf | ✅ 兼容 VS Code 扩展 API | AI 补全 与 xlcraft 的 IntelliSense / Lint / 运行宏 同一窗口共存 |
| Claude Code / OpenAI Codex CLI | ⚠ 仅文件编辑 | 在终端中由 AI 编辑 .bas → 切换到 VS Code (或 Cursor) + xlcraft 进行 IntelliSense / Lint / 运行宏 |
| Xcode / JetBrains Fleet / IntelliJ | ❌ 无法加载 VS Code 扩展 | 不支持 |
告别 VBE。 让 Cursor / Claude Code 编写
.bas,由 xlcraft 提供语言智能与一键运行宏 — VBA 终于拥有了现代编辑器栈。
设置项
| 键 | 默认值 | 说明 |
|---|---|---|
vbaExcel.workbookPath |
"" |
目标工作簿 (.xlsm/.xlsb) 的路径。留空则每次选择 |
vbaExcel.keepExcelVisible |
true |
宏执行期间显示 Excel 窗口 |
vbaExcel.codeLens.enabled |
true |
在 Sub/Function 上方显示 CodeLens 操作 (仅限 Windows) |
vbaExcel.linting.rules.optionExplicit |
warning |
error / warning / information / hint / off |
vbaExcel.linting.rules.unusedVariable |
warning |
同上 |
vbaExcel.linting.rules.implicitVariant |
information |
同上 |
vbaExcel.linting.rules.gotoOveruse |
information |
同上 |
vbaExcel.linting.rules.duplicateDeclaration |
warning |
同上 |
vbaExcel.linting.rules.unreachableCode |
information |
同上 |
vbaExcel.linting.rules.unqualifiedRange |
information |
同上 |
vbaExcel.format.indentSize |
4 |
缩进宽度 (1–8) |
vbaExcel.format.useTabs |
false |
使用制表符缩进 |
vbaExcel.format.operatorSpacing |
true |
规范化运算符周围的间距 |
vbaExcel.format.alignDeclarations |
false |
连续 Dim 行的 As 垂直对齐 |
隐私
xlcraft 不收集遥测数据。外部通信包含:与 Polar 的许可证验证 (api.polar.sh) 以及使用 AI 命令时 将选定的 VBA 代码发送到您配置的 AI 提供商。
发送的数据
许可证验证
激活、验证或停用 Pro 许可证时,会向 api.polar.sh 发送 HTTPS 请求。
| 字段 | 值 |
|---|---|
key |
您输入的许可证密钥 |
organization_id |
Polar 组织 ID (已硬编码于扩展中) |
label |
由 vscode.env.machineId 派生的短字符串 (例如 vscode-abcdef12) —— 仅在激活时发送 |
activation_id |
激活时 Polar 返回的 UUID (用于验证和停用) |
源代码、文件路径、文档内容以及其他工作区数据不会发送到 Polar。
AI 命令 (可选启用・BYOK)
运行 VBA: AI Refactor / VBA: AI Generate Procedure / VBA: AI Explain Procedure 时,选定的 VBA 文本会直接发送到您所选提供商的 API 端点 (api.anthropic.com / api.openai.com / generativelanguage.googleapis.com),不经过 xlcraft 服务器。AI 命令默认禁用 (vbaExcel.ai.enabled: false),首次运行前会显示同意弹窗。
第三方服务
- Polar 是许可证发行方和支付处理商。Polar 隐私政策:https://polar.sh/legal/privacy
- Anthropic / OpenAI / Google — 仅在启用 AI 命令并配置 API 密钥后才会连接,适用各自的隐私政策
- 不与任何其他第三方共享数据
数据删除
- 运行
xlcraft: Deactivate License(命令面板) 会清除本地许可证密钥和验证缓存,并通知 Polar 释放激活
本地存储的数据
除了 VS Code 管理的 globalState,xlcraft 还会在您用户账户的标准应用程序数据区域中存储少量与许可证状态相关的元数据。不会存储任何许可证密钥、源代码、文件路径或工作区内容,这些文件中的内容也不会被发送到任何地方。
支持诊断
xlcraft: Copy License Diagnostics会将关于许可证状态的匿名化诊断信息复制到剪贴板。不包含许可证密钥或机器 ID (仅包含层级、原因、VS Code 版本和平台信息)
故障排查
Excel 集成
| 症状 | 原因与解决方案 |
|---|---|
| 「对 VBA 工程的程序化访问不被信任」 | Excel > 文件 > 选项 > 信任中心 > 宏设置 > 勾选「信任对 VBA 工程对象模型的访问」 |
New-Object Excel.Application 失败 / 0x80040154 错误 |
匹配 PowerShell 与 Excel 的位数 (32/64 位)。64 位 Excel 应使用 64 位 PowerShell |
| 非 ASCII 注释乱码 | 将 .bas 保存为 UTF-8 with BOM。VS Code 设置:"files.encoding": "utf8bom" |
| 找不到 Excel | 验证已安装 Microsoft Excel 且 COM 自动化可用 |
| 找不到工作簿 | 检查 vbaExcel.workbookPath 中的路径。留空则可通过对话框选择 |
| 宏安全警告 | Excel > 文件 > 选项 > 信任中心 > 宏设置 > 「启用所有宏」 |
| CodeLens 不显示 | CodeLens 在非 Windows 操作系统上隐藏。验证 vbaExcel.codeLens.enabled 为 true |
许可证
| 症状 | 原因与解决方案 |
|---|---|
| 「许可证密钥已达到激活限制」 | 在原 PC 上运行 xlcraft: Deactivate License,然后在新机器上激活 |
xlcraft: Pro → 离线后变回 Free |
已超过 5 天离线宽限期。重新连接后将自动重新验证 |
| 激活失败 (网络错误) | 检查您的网络连接并单击「Retry」 |
| 密钥被报告为无效 | 验证许可证密钥是否正确 (XXXX-XXXX-XXXX-XXXX-XXXX 格式) |
| 需要联系支持 | 使用 xlcraft: Copy License Diagnostics 复制诊断信息并附加到 Issue |
Pro 用户指南
退款
依据 Polar 默认政策,购买后 14 天内 可申请退款。请使用 Polar 结账邮件中的链接申请退款。退款后许可证将失效,您将恢复到免费版。
激活重置
每个许可证限于 1 台机器使用。如果您不再能访问原机器 (例如更换 PC、重装系统):
- 如果可能,在原机器上运行
xlcraft: Deactivate License - 如无法访问,请在 GitHub Issues 上请求重置,并附上许可证密钥的最后 4 位和诊断信息 (
xlcraft: Copy License Diagnostics)
离线使用
- Pro 许可证每 24 小时在线重新验证一次
- 离线时 Pro 功能仍可用 5 天 (宽限期)
- 离线超过 5 天会恢复到免费版,但重新连接后 Pro 会自动恢复
面向开发者
npm install
npm run compile # tsc -p ./ → out/extension.js
npm run watch # tsc -w; F5 调试前建议先启动
npm run test:unit # 不依赖 vscode 的单元测试 (301 个)
npm test # 通过 @vscode/test-electron 进行 E2E (3 个)
- Mocha 使用 TDD UI (
suite()/test()) - GitHub Actions CI 在 Node 18/20 上自动执行编译、测试和 VSIX 构件
- 详见
CONTRIBUTING.md与CLAUDE.md
许可证
Commercial License © 2026 Mikoto Amane
繁體中文
告別 VBE,在 VS Code 中撰寫 Excel VBA。¥750 日圓 (約 NT$149) 一次性付費,5 天試用。
評論活動 — 前 15 名評論者享 Pro 75% 折扣。 請在 2026-06-21 之前於 Marketplace 發布評分或評論,並在評論正文中留下聯絡方式。凡留下評分、評論或兩者皆有的使用者,我們都會發送一個一次性 75% 折扣碼。僅限前 15 名評論者。
適用於 VS Code 的 Excel VBA 開發擴充套件。免費 提供語法高亮、IntelliSense、Lint、格式化工具,Pro 功能 (一次買斷 ¥750 日圓,約 NT$149) 提供 Excel 雙向同步與「在 Excel 中執行巨集」。
Polar 實際扣款幣別為 ¥750 日圓。本 README 中標註的其他幣別金額僅為 參考價格 (2026-05-17 匯率),最終結算金額由您的發卡機構決定。
Free / Pro
| 類別 | 免費版 | Pro 版 (¥750 日圓 / 約 NT$149 買斷) |
|---|---|---|
| 語法高亮與程式碼片段 | ✅ | ✅ |
| 自動完成 / 跳至定義 (F12) / 滑鼠懸停 / 尋找參考 (Shift+F12) | ✅ | ✅ |
| 文件高亮 / 重新命名符號 | ✅ | ✅ |
| 大綱 / 工作區符號 | ✅ | ✅ |
型別推斷的點補全 (Dim ws As Worksheet → ws.) + With 區塊補全 |
✅ | ✅ |
| 自訂類別 / .frm 控制項成員補全 | ✅ | ✅ |
| Set 指派型別推斷 / 集合元素提示 / 簽章說明 | ✅ | ✅ |
| Lint 7 條規則 + Quick Fix | ✅ | ✅ |
| 格式化工具 (續行、運算子間距、宣告對齊) | ✅ | ✅ |
| 日語 / 英語 UI (i18n) | ✅ | ✅ |
VBA: Run Macro in Excel (支援參數) |
— | ✅ |
VBA: Sync Current File to Excel |
— | ✅ |
VBA: Sync ALL Modules to Excel |
— | ✅ |
VBA: Export Module from Excel |
— | ✅ |
| CodeLens:Sub/Function 上方的 Run/Sync 操作 | — | ✅ |
| 5 天試用期 | ✅ 解鎖全部 Pro 功能 | — |
首次安裝後,5 天試用期 讓您體驗所有 Pro 功能。試用期間和結束後,編輯器功能 (免費版) 始終可用。
購買與啟用 Pro
1. 購買
在 xlcraft Pro 結帳頁面 支付 ¥750 日圓 (約 NT$149),您將透過電子郵件收到授權金鑰 (XXXX-XXXX-XXXX-XXXX-XXXX 格式)。
2. 啟用
在 VS Code 中開啟命令選擇區 (Ctrl/Cmd+Shift+P) 並執行:
xlcraft: Activate License
貼上您的授權金鑰。狀態列將變為 xlcraft: Pro。
3. 移轉至其他電腦
每個授權僅允許 1 台電腦使用。要在其他 PC 上使用,請先在原本的 PC 上執行 xlcraft: Deactivate License,然後在新電腦上啟用。
4. 退款
依據 Polar 預設政策,購買後 14 天內 可申請退款。
授權命令
| 命令 | 操作 |
|---|---|
xlcraft: Activate License |
輸入授權金鑰以啟用 Pro |
xlcraft: Deactivate License |
在本機停用 Pro (金鑰本身可重複使用) |
xlcraft: Show License Status |
顯示目前的方案與操作選單 |
xlcraft: Buy xlcraft Pro |
在瀏覽器中開啟結帳頁面 |
xlcraft: Copy License Diagnostics |
將匿名化的診斷資訊複製到剪貼簿供支援使用 |
您也可以點選狀態列中的 xlcraft: … 指示器,開啟相同的操作選單。
螢幕截圖
主要功能 (免費版)
語言支援
.bas/.cls/.frm/.vba的語法高亮- 依據區塊結構的自動縮排、註解切換和括號配對
- 程式碼片段 (
sub、func、for、errhandler、lastrow等)
IntelliSense
- 自動完成:整合目前檔案的 Sub/Function/Property/Dim/Const、工作區中的
Public符號,以及內建的 Excel 物件模型 (20+ 型別:Application、Worksheet、Range、ListObject、Font、Dictionary 等) - 型別推斷的點補全:
Dim ws As Worksheet→ws./With ws ... .Range/Set ws = Worksheets(1)→ws./Worksheets(1).(集合元素) / 自訂.cls類別成員 /.frm控制項成員 - 簽章說明:在
MsgBox(等位置彈出參數資訊 (20 個內建函式 + 自訂函式) - 滑鼠懸停:顯示簽章、常數值、Enum 成員值、參數預設值,以及宣告前的註解
- 跳至定義 (F12):作用域感知的優先順序 (區域 → 模組 → 工作區),多個候選時顯示挑選器
- 尋找所有參考 (Shift+F12) / 大綱 (Ctrl+Shift+O) / 工作區符號 (Ctrl+T)
- 文件高亮:高亮顯示游標下識別字的所有出現位置
- 重新命名符號 (
F2):在 VBA 作用域邊界內重新命名 (含保留字檢查)
Lint (7 條規則,含 QuickFix)
| 規則 | 預設嚴重程度 | Quick Fix |
|---|---|---|
缺少 Option Explicit |
warning | "Add Option Explicit at module top" |
| 未使用的區域變數 (作用域感知) | warning | "Remove unused variable declaration" (處理同一行的多個宣告) |
隱含的 Variant (缺少 As 子句) |
information | "Add As Variant" |
過度使用 GoTo (除 On Error GoTo 之外) |
information | — |
| 重複宣告 (同一作用域內) | warning | "Remove duplicate declaration" |
不可達程式碼 (在 Exit Sub/GoTo 之後) |
information | — |
未限定的 Range/Cells |
information | "Qualify with ActiveSheet." |
格式化工具 (Shift+Alt+F)
- 區塊縮排正規化 (Sub/If/For/With/Select Case/Type/Enum 等)
- 續行 (
_) 縮排 (+1 級) - 運算子間距 (
=、+、-、*、/、&、,、:=、<>、<=、>=—— 不包含一元-/+) - 宣告對齊:連續
Dim行的As垂直對齊 (vbaExcel.format.alignDeclarations) - 行尾空白清除、字串/註解保護、保留 CRLF/LF 與檔案結尾換行
主要功能 (Pro 版)
Excel ⇄ VS Code 雙向同步
| 命令 | 操作 |
|---|---|
VBA: Run Macro in Excel |
將目前模組匯入 Excel 並執行指定的巨集 (支援參數) |
VBA: Sync Current File to Excel |
將目前的 .bas 推送到 Excel (不執行,含進度通知) |
VBA: Sync ALL Modules to Excel |
將所選資料夾中的 .bas / .cls / .frm 非遞迴地批次推送到 Excel。自動偵測同名兄弟活頁簿 (<folder>.xlsm),可略過活頁簿選擇 |
VBA: Export Module from Excel |
透過 QuickPick 從 Excel 選擇模組並匯出為 .bas (UTF-8 BOM,含覆寫確認)。輸出路徑為 <選定根目錄>/<活頁簿名>/<Module>.bas,多個活頁簿可清楚共存 |
- 活頁簿命名子資料夾規約 (v2.4.2):
Export Module from Excel(單筆與全部匯出均適用)會以活頁簿名為子資料夾自動建立 (Book1.xlsm→<root>/Book1/)。Sync ALL Modules to Excel指定<root>/Book1/時會自動偵測兄弟活頁簿,構成完整的往返工作流。 - CodeLens:在 Sub/Function 宣告上方顯示「Run Macro」「Sync to Excel」按鈕 (僅限 Windows,可透過
vbaExcel.codeLens.enabled切換) - 活頁簿選擇:透過 QuickPick 列出已開啟的活頁簿,或透過檔案對話框選擇
- 預檢:預先驗證平台和活頁簿路徑
- 錯誤診斷:自動偵測缺少 Trust Access、位元數不符、找不到 Excel,並顯示解決步驟
未實作自動同步。 VS Code → Excel、Excel → VS Code 的傳輸都僅由使用者明確命令觸發。
系統需求
- VS Code 1.85.0 或更新版本
- Windows + Excel (僅 Pro Excel 整合命令需要;免費版編輯器功能與作業系統無關)
Excel 整合的前置條件
- 允許存取 VBA 專案:檔案 → 選項 → 信任中心 → 信任中心設定 → 巨集設定 → 勾選「信任對 VBA 專案物件模型的存取」
- 比對 PowerShell 與 Excel 的位元數 (32/64 位元)
- 檔案編碼:包含非 ASCII 註解 (例如中文) 的
.bas檔案應儲存為 UTF-8 with BOM (Export 命令會強制 BOM)
相容編輯器 / AI 編程協作
xlcraft 是 VS Code 擴充套件,但其生態系統也涵蓋 AI 編程編輯器與 CLI。兩者搭配能以 AI 編程時代的速度交付 Excel VBA:
| 編輯器 / 工具 | xlcraft 支援 | 建議工作流 |
|---|---|---|
| VS Code (Stable / Insiders) | ✅ 原生支援 | 完整功能 — 開啟 .bas 即可直接使用 |
| Cursor / Windsurf | ✅ 相容 VS Code 擴充 API | AI 補全 與 xlcraft 的 IntelliSense / Lint / 執行巨集 於同一視窗共存 |
| Claude Code / OpenAI Codex CLI | ⚠ 僅檔案編輯 | 終端中由 AI 編輯 .bas → 切換至 VS Code (或 Cursor) + xlcraft 進行 IntelliSense / Lint / 執行巨集 |
| Xcode / JetBrains Fleet / IntelliJ | ❌ 無法載入 VS Code 擴充 | 不支援 |
告別 VBE。 讓 Cursor / Claude Code 撰寫
.bas,由 xlcraft 提供語言智能與一鍵執行巨集 — VBA 終於擁有現代化的編輯器堆疊。
設定項
| 鍵 | 預設值 | 說明 |
|---|---|---|
vbaExcel.workbookPath |
"" |
目標活頁簿 (.xlsm/.xlsb) 的路徑。留空則每次選擇 |
vbaExcel.keepExcelVisible |
true |
巨集執行期間顯示 Excel 視窗 |
vbaExcel.codeLens.enabled |
true |
在 Sub/Function 上方顯示 CodeLens 操作 (僅限 Windows) |
vbaExcel.linting.rules.optionExplicit |
warning |
error / warning / information / hint / off |
vbaExcel.linting.rules.unusedVariable |
warning |
同上 |
vbaExcel.linting.rules.implicitVariant |
information |
同上 |
vbaExcel.linting.rules.gotoOveruse |
information |
同上 |
vbaExcel.linting.rules.duplicateDeclaration |
warning |
同上 |
vbaExcel.linting.rules.unreachableCode |
information |
同上 |
vbaExcel.linting.rules.unqualifiedRange |
information |
同上 |
vbaExcel.format.indentSize |
4 |
縮排寬度 (1–8) |
vbaExcel.format.useTabs |
false |
使用 Tab 字元縮排 |
vbaExcel.format.operatorSpacing |
true |
正規化運算子周圍的間距 |
vbaExcel.format.alignDeclarations |
false |
連續 Dim 行的 As 垂直對齊 |
隱私
xlcraft 不收集遙測資料。對外通訊包含:與 Polar 的授權驗證 (api.polar.sh) 以及使用 AI 命令時 將選取的 VBA 程式碼傳送至您設定的 AI 提供者。
傳送的資料
授權驗證
啟用、驗證或停用 Pro 授權時,會向 api.polar.sh 傳送 HTTPS 請求。
| 欄位 | 值 |
|---|---|
key |
您輸入的授權金鑰 |
organization_id |
Polar 組織 ID (硬編碼於擴充套件內) |
label |
由 vscode.env.machineId 衍生的短字串 (例如 vscode-abcdef12) —— 僅在啟用時傳送 |
activation_id |
啟用時 Polar 回傳的 UUID (用於驗證和停用) |
原始碼、檔案路徑、文件內容以及其他工作區資料一概不會傳送至 Polar。
AI 命令 (選擇性啟用・BYOK)
執行 VBA: AI Refactor / VBA: AI Generate Procedure / VBA: AI Explain Procedure 時,選取的 VBA 文字會直接傳送至您所選提供者的 API 端點 (api.anthropic.com / api.openai.com / generativelanguage.googleapis.com),不經由 xlcraft 伺服器。AI 命令預設停用 (vbaExcel.ai.enabled: false),首次使用前會顯示同意視窗。
第三方服務
- Polar 是授權發行方和支付處理商。Polar 隱私政策:https://polar.sh/legal/privacy
- Anthropic / OpenAI / Google — 僅在啟用 AI 命令並設定 API 金鑰後才會連接,適用各自的隱私政策
- 不與任何其他第三方共享資料
資料刪除
- 執行
xlcraft: Deactivate License(命令選擇區) 會清除本機的授權金鑰和驗證快取,並通知 Polar 釋放啟用
本機儲存的資料
除了 VS Code 管理的 globalState,xlcraft 還會在您使用者帳戶的標準應用程式資料區域中儲存少量與授權狀態相關的中繼資料。不會儲存任何授權金鑰、原始碼、檔案路徑或工作區內容,這些檔案中的內容也不會被傳送到任何地方。
支援診斷
xlcraft: Copy License Diagnostics會將授權狀態的匿名化診斷資訊複製到剪貼簿。不包含授權金鑰或機器 ID (僅包含方案、原因、VS Code 版本和平台資訊)
疑難排解
Excel 整合
| 症狀 | 原因與解決方案 |
|---|---|
| 「對 VBA 專案的程式化存取不被信任」 | Excel > 檔案 > 選項 > 信任中心 > 巨集設定 > 勾選「信任對 VBA 專案物件模型的存取」 |
New-Object Excel.Application 失敗 / 0x80040154 錯誤 |
比對 PowerShell 與 Excel 的位元數 (32/64 位元)。64 位元 Excel 應使用 64 位元 PowerShell |
| 非 ASCII 註解亂碼 | 將 .bas 儲存為 UTF-8 with BOM。VS Code 設定:"files.encoding": "utf8bom" |
| 找不到 Excel | 確認已安裝 Microsoft Excel 且 COM 自動化可用 |
| 找不到活頁簿 | 檢查 vbaExcel.workbookPath 中的路徑。留空則可透過對話框選擇 |
| 巨集安全性警告 | Excel > 檔案 > 選項 > 信任中心 > 巨集設定 > 「啟用所有巨集」 |
| CodeLens 不顯示 | CodeLens 在非 Windows 作業系統上隱藏。確認 vbaExcel.codeLens.enabled 為 true |
授權
| 症狀 | 原因與解決方案 |
|---|---|
| 「授權金鑰已達啟用上限」 | 在原本的 PC 上執行 xlcraft: Deactivate License,然後在新電腦上啟用 |
xlcraft: Pro → 離線後變回 Free |
已超過 5 天離線寬限期。重新連線後將自動重新驗證 |
| 啟用失敗 (網路錯誤) | 檢查您的網路連線並點選「Retry」 |
| 金鑰被回報為無效 | 確認授權金鑰是否正確 (XXXX-XXXX-XXXX-XXXX-XXXX 格式) |
| 需要聯絡支援 | 使用 xlcraft: Copy License Diagnostics 複製診斷資訊並附加到 Issue |
Pro 使用者指南
退款
依據 Polar 預設政策,購買後 14 天內 可申請退款。請使用 Polar 結帳郵件中的連結申請退款。退款後授權將失效,您將恢復至免費版。
啟用重設
每個授權限於 1 台電腦使用。如果您不再能存取原電腦 (例如更換 PC、重新安裝系統):
- 如果可能,在原電腦上執行
xlcraft: Deactivate License - 如無法存取,請在 GitHub Issues 上請求重設,並附上授權金鑰的最後 4 碼和診斷資訊 (
xlcraft: Copy License Diagnostics)
離線使用
- Pro 授權每 24 小時在線重新驗證一次
- 離線時 Pro 功能仍可用 5 天 (寬限期)
- 離線超過 5 天會恢復至免費版,但重新連線後 Pro 會自動恢復
開發者指南
npm install
npm run compile # tsc -p ./ → out/extension.js
npm run watch # tsc -w; F5 偵錯前建議先啟動
npm run test:unit # 不依賴 vscode 的單元測試 (301 個)
npm test # 透過 @vscode/test-electron 進行 E2E (3 個)
- Mocha 使用 TDD UI (
suite()/test()) - GitHub Actions CI 在 Node 18/20 上自動執行編譯、測試和 VSIX 構件
- 詳見
CONTRIBUTING.md與CLAUDE.md
授權
Commercial License © 2026 Mikoto Amane