A modern development experience for VBA, inside the Visual Basic Editor. Native add-in, live analysis, single-file install.
C#
18
806 commits
updated Sep 23, 2026
(Yes! This is really the VBA Editor in Excel)
The Visual Basic Editor has looked the same since 1998. One module on screen at a time, a find dialog that covers the code you are searching, less than helpful (or missing) completions, and no idea that anything is wrong until you press F5 and it stops. xlide replaces that surface with Monaco, the editor behind VS Code, running inside the VBE itself. Your workbooks stay where they are, your macros run the way they always did, and F5, F8, and break mode behave exactly as before.
It installs in one double click, for your account only, with no administrator rights and nothing to install first.
xlide is a native add-in that the VBE loads through its own extensibility model - the same editor Excel, Word, PowerPoint and Access all share, so one install reaches every one of them. It draws over the VBE's document area and puts a modern editing surface there: every open module live at once, editors side by side, diagnostics as you type. The native editor keeps running underneath as the text of record, the compile target, and the debugger, so nothing about how your code compiles or runs changes.
The analysis comes from a VBA analyzer validated against the real compiler over a corpus of thousands of modules, and it runs in its own process. That matters because the VBE is single threaded and owns the thread you type on: a project large enough to take seconds to analyse cannot stall your typing if the analysis is not happening there. The add-in is compiled ahead of time to native code, so Excel never loads a .NET runtime on its account.
'@PredeclaredId, '@Description("..."),
'@DefaultMember, '@Enumerator, '@ExcelHotkey("D") and the rest of the Rubberduck set are
read from the code, the drift from what the saved module carries is filed in the Problems pane,
and saving the workbook writes them - the one thing in the VBE nothing else can set.'@Folder("Parent.Child") comment at the top of each one, the
Rubberduck convention, so a project organised there is organised here without editing a line.@xlide-test, run them against the live project, and read
the outcomes in a Tests pane that shows nothing rather than stale green when the project cannot
execute a line.Download xlide-setup.exe from Releases
and run it.
It installs to %LOCALAPPDATA%\Programs\xlide for the current user. It asks for no administrator
rights, changes nothing outside your own profile, and needs no runtime, framework, or tool to be
present first. Everything it needs is inside the one executable. Windows will warn before running
it, because it carries no code signature yet.
Close Excel first. If it is open, the installer says so and offers to wait while you close it, or to force close it for you.
Then start Excel and press Alt+F11.
Settings, then Apps, then Installed apps. Find xlide and choose Uninstall. You can also run
xlide-setup.exe --uninstall from %LOCALAPPDATA%\Programs\xlide, where a copy of the installer is
kept so that removing xlide never depends on still having the download.
Removal takes out the program files, the per-user registration, and xlide's own logs and cache. Your VBA is untouched throughout: it lives in your workbooks and xlide never writes to them.
One thing to expect afterwards. xlide hides the VBE's own tool windows while it is covering the screen, and the editor remembers the window layout it was last left with. So the first time you open the VBE after removing xlide, it will be empty. Use the View menu to bring back the ones you want: Project Explorer, Properties Window, Immediate Window, Locals Window, and Watch Window.
Everything below this line is about working on xlide. None of it is needed to use it. If you installed from the release, you are done: start Excel and press Alt+F11.
Windows, and 64-bit Microsoft 365. The add-in is a COM add-in for the VBE, so it can only be built and run where that editor is.
The .NET 10 SDK. The shim targets net10.0-windows.
The C++ build tools, which is what ahead-of-time compilation links against. Install the "Desktop development with C++" workload from the Visual Studio Installer; Build Tools alone is enough, Visual Studio itself is not required.
Node 20 or newer, for the language engine and the editor page.
The analyzer checkout, beside this one. This is the part that is easy to miss. The engine does not vendor the analyzer, it compiles it from xlide_vscode's own source, so that both products agree on what VBA means. Clone it as a sibling directory:
...\xlide\
xlide_vbide\ this repository
xlide_vscode\ the analyzer, cloned beside it
Without it the engine build stops and says so. The path is engine/build.mjs if you keep your
checkouts somewhere else.
npm install --prefix engine # the language engine's dependencies
npm install --prefix ui\editor # the editor page's dependencies
tools\dev.ps1 # build everything, register, and open a real editor
tools\dev.ps1 is the whole loop in one command: it builds and tests the engine and the page,
publishes the shim ahead-of-time, registers it for the current user, then starts Excel and
verifies the add-in actually loaded. It builds Release by default; pass
-Configuration Debug for a build with the local api door in it, which is what the harness and
every suite in tools\harness drive. -KeepOpen leaves Excel running to work in,
-NoRun stops after registering, and -Unregister takes the registration off the machine again.
tools\page.ps1 # rebuild the editor surface and reload it live, ~1s
npm run build --prefix engine # bundle the engine
npm run package --prefix engine # bundle it and produce xlide-engine.exe
dotnet build xlide_vbide.slnx # the shim and its unit tests, without publishing
tools\page.ps1 is the fast loop: it typechecks, builds, copies the bundle into the published
shim and reloads the page in a running editor, without restarting Excel or republishing anything.
tools\verify.ps1 # 19 headless steps, about ninety seconds
tools\verify.ps1 -Live # adds four steps that need an open editor
tools\verify.ps1 -Deep # four more; the tier to run before a release
The live tiers drive real hosts against fixtures in artifacts\fixtures, which are build output
rather than checked in. Each has a generator in tools - New-TestFixture.ps1,
New-AccessFixture.ps1, New-WordFixture.ps1 and the rest - and they need a Debug build
registered first, because they are built through the local api door rather than through the VBA
project object model, which means "Trust access to the VBA project object model" does not have
to be on.
installer\build.ps1 # produces artifacts\xlide-setup.exe
It refuses to build without a packaged engine and a built page, so an incomplete build fails here rather than being discovered by whoever downloads it.
| Path | Purpose |
|---|---|
src/Xlide.Vbe.Shim | The native add-in: editor integration, tool windows, browser surface |
src/Xlide.Vbe.Core | Host-independent logic for the add-in, with no COM or Win32 |
engine/ | The language engine sidecar |
ui/ | The editor surface rendered in the browser control |
installer/ | The single-file installer |
tools/ | Development scripts and the integration harness |
tests/ | Unit tests. None of them need Excel |
docs/ | Architecture, decisions, and findings |
docs/status.md is the current snapshot: what is proven and how.
docs/architecture.md covers the design, and
docs/decisions.md records the choices that would be expensive to reverse along
with the reasoning behind each. docs/lessons.md,
docs/ui-lessons.md, and docs/editor-windows.md hold
behaviour of the host that is documented nowhere else and was established by measurement.
The newest handover is written for someone starting cold: the highest-dated docs/handoff-*.md. They are dated because each supersedes the last, so the most recent one wins and the others are history.
This is a clean-room implementation built on Microsoft's documented interfaces: the editor extensibility model, the forms designer object model, Win32, and published binary format specifications. The analyzer is the author's own prior work, shared with the XLIDE editor extension so that both products agree on what VBA means.
MIT.
806 commits
C#
43.6%
TypeScript
25.5%
JavaScript
21.5%
PowerShell
6.9%
CSS
2.5%
A modern development experience for VBA, inside the Visual Basic Editor. Native add-in, live analysis, single-file install.
C#
18
806 commits
updated Sep 23, 2026
(Yes! This is really the VBA Editor in Excel)
The Visual Basic Editor has looked the same since 1998. One module on screen at a time, a find dialog that covers the code you are searching, less than helpful (or missing) completions, and no idea that anything is wrong until you press F5 and it stops. xlide replaces that surface with Monaco, the editor behind VS Code, running inside the VBE itself. Your workbooks stay where they are, your macros run the way they always did, and F5, F8, and break mode behave exactly as before.
It installs in one double click, for your account only, with no administrator rights and nothing to install first.
xlide is a native add-in that the VBE loads through its own extensibility model - the same editor Excel, Word, PowerPoint and Access all share, so one install reaches every one of them. It draws over the VBE's document area and puts a modern editing surface there: every open module live at once, editors side by side, diagnostics as you type. The native editor keeps running underneath as the text of record, the compile target, and the debugger, so nothing about how your code compiles or runs changes.
The analysis comes from a VBA analyzer validated against the real compiler over a corpus of thousands of modules, and it runs in its own process. That matters because the VBE is single threaded and owns the thread you type on: a project large enough to take seconds to analyse cannot stall your typing if the analysis is not happening there. The add-in is compiled ahead of time to native code, so Excel never loads a .NET runtime on its account.
'@PredeclaredId, '@Description("..."),
'@DefaultMember, '@Enumerator, '@ExcelHotkey("D") and the rest of the Rubberduck set are
read from the code, the drift from what the saved module carries is filed in the Problems pane,
and saving the workbook writes them - the one thing in the VBE nothing else can set.'@Folder("Parent.Child") comment at the top of each one, the
Rubberduck convention, so a project organised there is organised here without editing a line.@xlide-test, run them against the live project, and read
the outcomes in a Tests pane that shows nothing rather than stale green when the project cannot
execute a line.Download xlide-setup.exe from Releases
and run it.
It installs to %LOCALAPPDATA%\Programs\xlide for the current user. It asks for no administrator
rights, changes nothing outside your own profile, and needs no runtime, framework, or tool to be
present first. Everything it needs is inside the one executable. Windows will warn before running
it, because it carries no code signature yet.
Close Excel first. If it is open, the installer says so and offers to wait while you close it, or to force close it for you.
Then start Excel and press Alt+F11.
Settings, then Apps, then Installed apps. Find xlide and choose Uninstall. You can also run
xlide-setup.exe --uninstall from %LOCALAPPDATA%\Programs\xlide, where a copy of the installer is
kept so that removing xlide never depends on still having the download.
Removal takes out the program files, the per-user registration, and xlide's own logs and cache. Your VBA is untouched throughout: it lives in your workbooks and xlide never writes to them.
One thing to expect afterwards. xlide hides the VBE's own tool windows while it is covering the screen, and the editor remembers the window layout it was last left with. So the first time you open the VBE after removing xlide, it will be empty. Use the View menu to bring back the ones you want: Project Explorer, Properties Window, Immediate Window, Locals Window, and Watch Window.
Everything below this line is about working on xlide. None of it is needed to use it. If you installed from the release, you are done: start Excel and press Alt+F11.
Windows, and 64-bit Microsoft 365. The add-in is a COM add-in for the VBE, so it can only be built and run where that editor is.
The .NET 10 SDK. The shim targets net10.0-windows.
The C++ build tools, which is what ahead-of-time compilation links against. Install the "Desktop development with C++" workload from the Visual Studio Installer; Build Tools alone is enough, Visual Studio itself is not required.
Node 20 or newer, for the language engine and the editor page.
The analyzer checkout, beside this one. This is the part that is easy to miss. The engine does not vendor the analyzer, it compiles it from xlide_vscode's own source, so that both products agree on what VBA means. Clone it as a sibling directory:
...\xlide\
xlide_vbide\ this repository
xlide_vscode\ the analyzer, cloned beside it
Without it the engine build stops and says so. The path is engine/build.mjs if you keep your
checkouts somewhere else.
npm install --prefix engine # the language engine's dependencies
npm install --prefix ui\editor # the editor page's dependencies
tools\dev.ps1 # build everything, register, and open a real editor
tools\dev.ps1 is the whole loop in one command: it builds and tests the engine and the page,
publishes the shim ahead-of-time, registers it for the current user, then starts Excel and
verifies the add-in actually loaded. It builds Release by default; pass
-Configuration Debug for a build with the local api door in it, which is what the harness and
every suite in tools\harness drive. -KeepOpen leaves Excel running to work in,
-NoRun stops after registering, and -Unregister takes the registration off the machine again.
tools\page.ps1 # rebuild the editor surface and reload it live, ~1s
npm run build --prefix engine # bundle the engine
npm run package --prefix engine # bundle it and produce xlide-engine.exe
dotnet build xlide_vbide.slnx # the shim and its unit tests, without publishing
tools\page.ps1 is the fast loop: it typechecks, builds, copies the bundle into the published
shim and reloads the page in a running editor, without restarting Excel or republishing anything.
tools\verify.ps1 # 19 headless steps, about ninety seconds
tools\verify.ps1 -Live # adds four steps that need an open editor
tools\verify.ps1 -Deep # four more; the tier to run before a release
The live tiers drive real hosts against fixtures in artifacts\fixtures, which are build output
rather than checked in. Each has a generator in tools - New-TestFixture.ps1,
New-AccessFixture.ps1, New-WordFixture.ps1 and the rest - and they need a Debug build
registered first, because they are built through the local api door rather than through the VBA
project object model, which means "Trust access to the VBA project object model" does not have
to be on.
installer\build.ps1 # produces artifacts\xlide-setup.exe
It refuses to build without a packaged engine and a built page, so an incomplete build fails here rather than being discovered by whoever downloads it.
| Path | Purpose |
|---|---|
src/Xlide.Vbe.Shim | The native add-in: editor integration, tool windows, browser surface |
src/Xlide.Vbe.Core | Host-independent logic for the add-in, with no COM or Win32 |
engine/ | The language engine sidecar |
ui/ | The editor surface rendered in the browser control |
installer/ | The single-file installer |
tools/ | Development scripts and the integration harness |
tests/ | Unit tests. None of them need Excel |
docs/ | Architecture, decisions, and findings |
docs/status.md is the current snapshot: what is proven and how.
docs/architecture.md covers the design, and
docs/decisions.md records the choices that would be expensive to reverse along
with the reasoning behind each. docs/lessons.md,
docs/ui-lessons.md, and docs/editor-windows.md hold
behaviour of the host that is documented nowhere else and was established by measurement.
The newest handover is written for someone starting cold: the highest-dated docs/handoff-*.md. They are dated because each supersedes the last, so the most recent one wins and the others are history.
This is a clean-room implementation built on Microsoft's documented interfaces: the editor extensibility model, the forms designer object model, Win32, and published binary format specifications. The analyzer is the author's own prior work, shared with the XLIDE editor extension so that both products agree on what VBA means.
MIT.
806 commits
C#
43.6%
TypeScript
25.5%
JavaScript
21.5%
PowerShell
6.9%
CSS
2.5%