r/vbscript • u/Sea_Priority_4174 • 16d ago
I built VbsTools – a free VS Code extension for VBScript with COM IntelliSense and debugging
I’ve been working on a VS Code extension called VbsTools, and it’s now available on the VS Code Marketplace.
I built it because I still work with VBScript from time to time, especially COM/WSH automation, and I always felt that the editing experience was stuck in the past.
For example:
Set fso = CreateObject("Scripting.FileSystemObject")
fso.
Normally, once you get to fso., you either need to remember the API or go look it up.
VbsTools reads COM type information registered on Windows, so it can provide actual IntelliSense for COM objects, including members, parameters and return types.
It also tries to track returned COM objects, for example:
Set file = fso.GetFile("test.txt")
file.
In this case, it can infer that file is a File object and continue providing IntelliSense.
Current features include:
- COM / ProgID IntelliSense
- return-type inference for COM objects
- Go to Definition / References / Rename
- diagnostics and quick fixes
- formatting
- cross-file analysis
- semantic highlighting
- F5 debugging
- breakpoints and conditional breakpoints
- Variables / Watch / Call Stack
- Debug Console
- x86 / x64 COM environments
- WinCC V7 / V8 type support
One reason I made it as a VS Code extension instead of a standalone VBScript IDE is that I wanted to keep the rest of the VS Code ecosystem.
That means I can still use Git integration, terminal, search, themes, keybindings and other extensions, while working with .vbs files in the same editor.
There are mature standalone VBScript editors such as VbsEdit, but those are commercial tools. VbsTools is free.
GitHub: https://github.com/ZachShen99/VbsTools
You can also install it directly from the VS Code Marketplace by searching for VbsTools.
The project is still pretty new, so feedback would be really useful.
If anyone here still works with VBScript, WSH, COM automation or WinCC, I’d especially like to know what kinds of scripts and COM components you’re still using.
And if you have some obscure old COM object that completely breaks the type inference, I’d actually love to see it.
