LmCast :: Stay tuned in

XLIDE: VBA without excel

Recorded: May 27, 2026, 1:21 p.m.

Original Summarized

GitHub - WilliamSmithEdward/xlide_vscode: Excel VBA integration for VS Code - Tree View / Full Direct VBA Read+Write / LiveShare Compatible / Direct Agentic AI Integrations · GitHub

Skip to content

Navigation Menu

Toggle navigation

Sign in

Appearance settings

PlatformAI CODE CREATIONGitHub CopilotWrite better code with AIGitHub SparkBuild and deploy intelligent appsGitHub ModelsManage and compare promptsMCP RegistryNewIntegrate external toolsDEVELOPER WORKFLOWSActionsAutomate any workflowCodespacesInstant dev environmentsIssuesPlan and track workCode ReviewManage code changesAPPLICATION SECURITYGitHub Advanced SecurityFind and fix vulnerabilitiesCode securitySecure your code as you buildSecret protectionStop leaks before they startEXPLOREWhy GitHubDocumentationBlogChangelogMarketplaceView all featuresSolutionsBY COMPANY SIZEEnterprisesSmall and medium teamsStartupsNonprofitsBY USE CASEApp ModernizationDevSecOpsDevOpsCI/CDView all use casesBY INDUSTRYHealthcareFinancial servicesManufacturingGovernmentView all industriesView all solutionsResourcesEXPLORE BY TOPICAISoftware DevelopmentDevOpsSecurityView all topicsEXPLORE BY TYPECustomer storiesEvents & webinarsEbooks & reportsBusiness insightsGitHub SkillsSUPPORT & SERVICESDocumentationCustomer supportCommunity forumTrust centerPartnersView all resourcesOpen SourceCOMMUNITYGitHub SponsorsFund open source developersPROGRAMSSecurity LabMaintainer CommunityAcceleratorGitHub StarsArchive ProgramREPOSITORIESTopicsTrendingCollectionsEnterpriseENTERPRISE SOLUTIONSEnterprise platformAI-powered developer platformAVAILABLE ADD-ONSGitHub Advanced SecurityEnterprise-grade security featuresCopilot for BusinessEnterprise-grade AI featuresPremium SupportEnterprise-grade 24/7 supportPricing

Search or jump to...

Search code, repositories, users, issues, pull requests...

Search

Clear

Search syntax tips

Provide feedback


We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

WilliamSmithEdward

/

xlide_vscode

Public

Notifications
You must be signed in to change notification settings

Fork
0

Star
2

Code

Issues
0

Pull requests
0

Actions

Projects

Security and quality
0

Insights

Additional navigation options

Code

Issues

Pull requests

Actions

Projects

Security and quality

Insights


WilliamSmithEdward/xlide_vscode

 mainBranchesTagsGo to fileCodeOpen more actions menuFolders and filesNameNameLast commit messageLast commit dateLatest commit History35 Commits35 Commits.github.github  .vscode.vscode  assets/imagesassets/images  distdist  docsdocs  language-configurationlanguage-configuration  pythonpython  snippetssnippets  srcsrc  syntaxessyntaxes  teststests  .gitignore.gitignore  .vscodeignore.vscodeignore  CHANGELOG.mdCHANGELOG.md  LICENSELICENSE  MARKETPLACE.mdMARKETPLACE.md  README.mdREADME.md  esbuild.jsesbuild.js  package-lock.jsonpackage-lock.json  package.jsonpackage.json  tsconfig.jsontsconfig.json  vitest.config.tsvitest.config.ts  View all filesRepository files navigationREADMEMIT licenseXLIDE - Excel VBA for VS Code
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.

Requirements

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.

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

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

# Python side (optional venv)
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.

Architecture
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

Key design decisions

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

JSON-RPC methods (Python bridge)

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 }
{}

VBA language ID
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).

Build commands

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

Copilot agent tools

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

Per-workbook export config
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.

Live Share
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).

Further reading

docs/architecture.md -- full architecture reference
MS-VBAL specification
pyOpenVBA

About

Excel VBA integration for VS Code - Tree View / Full Direct VBA Read+Write / LiveShare Compatible / Direct Agentic AI Integrations

github.com/WilliamSmithEdward/xlide_vscode

Topics

visual-basic

excel

vscode

vba

vscode-extension

xlsm

vba-excel

ai-tools

agentic-ai

agentic-coding

Resources

Readme

License

MIT license

Uh oh!

There was an error while loading. Please reload this page.


Activity
Stars

2
stars
Watchers

0
watching
Forks

0
forks

Report repository

Releases

2
tags

Packages
0

 

 

 

Uh oh!

There was an error while loading. Please reload this page.


Contributors

Uh oh!

There was an error while loading. Please reload this page.


Languages

TypeScript
88.4%

Python
10.9%

JavaScript
0.7%

Footer

© 2026 GitHub, Inc.

Footer navigation

Terms

Privacy

Security

Status

Community

Docs

Contact

Manage cookies

Do not share my personal information

You can’t perform that action at this time.

The xlide_vscode repository details an integration project designed to bridge the gap between Excel VBA and the Visual Studio Code environment, focusing on enabling direct read, write, and agentic AI interactions with VBA code within the editor. The core functionality revolves around providing users with a tree view for module navigation and full bidirectional access to Excel VBA via VS Code.

The project mandates specific technological requirements for operation. It necessitates VS Code version 1.95 or later, Python 3.10 or newer for the backend processing, and specific Python packages such as pyOpenVBA and openpyxl to handle the underlying VBA interaction. Crucially, the design explicitly avoids reliance on COM automation or the Microsoft Office installation, ensuring portability across operating systems including Windows, macOS, and Linux, and remote containers.

The architecture is structured to separate the frontend extension logic, the communication bridge, and the core VBA interaction mechanisms. The design philosophy incorporated several key decisions, such as employing a long-lived Python process to amortize startup latency across requests, utilizing a FileSystemProvider to manage virtual read and write operations triggered by standard file saving commands, and introducing a virtual URI scheme, xlide-vba://, to abstract the workbook path and module names from the editor’s native file concepts. Shared logic is managed through a moduleDump mechanism that serves as a single source of truth for exporting both user interface commands and agent tools.

The system communicates between the TypeScript extension layer and the Python backend via a JSON-RPC 2.0 server architecture, facilitating specific operations like listing modules, reading, writing, and renaming VBA modules, as well as reading and writing cell data within worksheets. This interaction is abstracted through dedicated Python modules that wrap the necessary VBA I/O functions. The system also defines a specific TextMate grammar for VBA, ensuring accurate syntax highlighting by scoping it to source.vba and covering identifiers from the MS-VBAL specification.

The integration expands beyond standard editing to support direct agentic AI capabilities via GitHub Copilot. Specific tools are registered for the AI agent, such as functions to list modules, read and write specific modules, and read and write cell data. Furthermore, configuration options exist to manage export modes, defining whether to replace existing files or manage newly added ones, which is stored alongside each workbook.

Regarding collaboration features, the implementation acknowledges limitations imposed by Microsoft’s Live Share platform. While the host environment retains full local editing capabilities, the extension currently cannot proxy VBA read/write calls from a guest directly. Consequently, while guests can view host-opened modules in the editor, they cannot independently navigate the XLIDE Explorer, indicating that the full, real-time shared browsing functionality is not supported by the extension due to restrictions on the shared-service RPC channel.