cd /news/ai-tools/xlide-vba-without-excel · home topics ai-tools article
[ARTICLE · art-15229] src=github.com pub= topic=ai-tools verified=true sentiment=↑ positive

XLIDE: VBA without excel

XLIDE, a new open-source VS Code extension, enables developers to edit Excel VBA code directly within VS Code with syntax highlighting, symbol navigation, and GitHub Copilot integration, bypassing the need for Excel or COM automation. The tool, which works on Windows, macOS, and Linux, uses a Python backend with pyOpenVBA and openpyxl to read and write `.xlsm` files, allowing users to browse modules in a sidebar tree and save changes with Ctrl+S. This eliminates the requirement for an Office installation, making VBA development portable and accessible from remote containers.

read4 min publishedMay 27, 2026

Edit Excel VBA code directly in VS Code. Browse modules in a sidebar tree, edit with syntax highlighting and symbol navigation (Go to Definition, Find All References, Rename Symbol), save changes back to the .xlsm

file with Ctrl+S, and expose every operation to GitHub Copilot via the Language Model API.

VS Code 1.95+Python 3.10+-- the VBA read/write backend runs as a child process- Python packages: pyOpenVBA >= 3.0.1

,openpyxl >= 3.1.0

No COM automation, no Office installation, no win32com -- works on Windows, macOS, Linux, and remote containers.

git clone https://github.com/WilliamSmithEdward/xlide_vscode.git
cd xlide_vscode

npm install
npm run compile        # type-check + esbuild bundle -> out/extension.js

python -m venv .venv
.venv\Scripts\activate   # or: source .venv/bin/activate
pip install -r python/requirements.txt

Press F5 in VS Code to launch an Extension Development Host with the extension loaded and the watch compiler running.

xlide_vscode/
  src/
    extension.ts            # activate() -- wires everything together
    pythonBridge.ts         # JSON-RPC 2.0 client over child_process stdio
    xlideFileSystem.ts      # xlide-vba:// virtual FileSystemProvider
    xlsmExplorer.ts         # Sidebar TreeDataProvider
    commands.ts             # VS Code command registrations
    agentTools.ts           # vscode.lm.registerTool() for Copilot
    moduleDump.ts           # Shared export-to-folder logic (UI + AI lane)
    vbaSymbolIndex.ts       # In-memory cross-module symbol index
    vbaLanguageProviders.ts # DocumentSymbol / Definition / References / Rename
  python/
    server.py               # JSON-RPC 2.0 server (stdin/stdout, newline-delimited)
    xlide/
      vba_io.py             # pyOpenVBA wrappers -- listModules, readModule, writeModule
      excel_io.py           # openpyxl wrappers -- readCells, writeCells
  syntaxes/
    vba.tmLanguage.json     # TextMate grammar (MS-VBAL spec-accurate)
  language-configuration/
    vba-language-configuration.json   # Brackets, indent rules, folding
  walkthrough/              # Markdown content for VS Code Getting Started tab
  docs/
    architecture.md         # Full architecture reference
Decision Rationale
Long-lived Python process Amortises ~200 ms Python startup across all requests
FileSystemProvider over TextDocumentContentProvider
Read/write virtual FS -- Ctrl+S triggers writeFile with no custom save command
Virtual URI scheme xlide-vba://
Decouples workbook path + module name from the editor's file concept
Shared moduleDump.ts
Export logic is single-source-of-truth for both UI commands and Copilot agent tools
No COM / no Office Portability -- pyOpenVBA reads the OVBA binary format directly
Confirmation on write tools Prevents AI agents from silently mutating production workbooks
Method Params Returns
listModules
{ path }
[{ name, type }]
listSubs
{ path, module }
[{ name, kind, line }]
readModule
{ path, module }
{ source }
writeModule
{ path, module, source }
{}
renameModule
{ path, module, newName }
{}
deleteModule
{ path, module }
{}
readCells
{ path, sheet, range }
{ values }
writeCells
{ path, sheet, startCell, data }
{}

Registered as vba

in package.json

with extensions .bas

, .cls

, .frm

. The TextMate grammar in syntaxes/vba.tmLanguage.json

is scoped to source.vba

and covers all reserved identifiers from MS-VBAL v20250520 (section 3.3.5.2: statement-keywords, marker-keywords, operator-identifiers, reserved-names, special-forms, reserved-type-identifiers, literal-identifiers, def-type directives, and implementation-reserved identifiers).

Command Purpose
npm run compile
Type-check + dev bundle
npm run watch
Incremental type-check + esbuild watch
npm run package
Production bundle (minified)
vsce package --no-dependencies
Build .vsix for distribution
Tool name Reference Reads/Writes Confirm
xlide_listModules
#xlideListModules
R No
xlide_listSubs
#xlideListSubs
R No
xlide_readModule
#xlideReadModule
R No
xlide_writeModule
#xlideWriteModule
W Yes
xlide_readCells
#xlideReadCells
R No
xlide_writeCells
#xlideWriteCells
W Yes
xlide_exportModules
#xlideExportModules
W Yes
xlide_configureExportMode
#xlideConfigureExportMode
W Yes

Stored beside each workbook as <workbookname>.extension.repo.json

:

{
  "exportFolder": "C:/absolute/path/to/export",
  "exportMode": "trueUp",
  "managedFiles": ["Module1.bas", "Sheet1.cls"]
}

trueUp

(default) -- replace existing, add new, delete stale files tracked in managedFiles

. replaceExistingOnly

-- only replaces files already on disk.

XLIDE VBA browsing for Live Share guests is currently not supported. Microsoft's Live Share platform restricts the shared-service RPC channel (vsls.shareService

) to extensions on a curated first-party allowlist, so third-party extensions like XLIDE cannot proxy VBA read/write calls from a guest to the host. The XLIDE Explorer therefore returns an empty tree for guests and shows an informational welcome view.

What still works in a Live Share session:

Role XLIDE behaviour
Host
Full local VBA editing -- open, edit, save .xlsm /.xlsb /.xlam modules exactly as if no session were active.
Guest
Can fully view and edit any VBA module the host has open in the editor (Live Share shares those buffers normally). Cannot browse the XLIDE Explorer or open new modules independently -- only the host can navigate and open them. XLIDE panel shows a "not supported" notice.
Guest without XLIDE installed
No action needed -- XLIDE is host-only. Joining a session does not require the extension.

Related upstream issue: microsoft/live-share#4877 (third-party shareService

allowlist, closed as Not Planned).

docs/architecture.md-- full architecture referenceMS-VBAL specificationpyOpenVBA

── more in #ai-tools 4 stories · sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/xlide-vba-without-ex…] indexed:0 read:4min 2026-05-27 ·