If your design office runs on a folder of .vbs
files behind the E3.series add-on menu, this page is for you.
It covers why the change is happening, what it takes to
convert E3 VBScript to Python, and how I go about it. It
applies whichever part of E3.series you script: E3.cable,
E3.schematic, E3.panel or E3.formboard.
Why this needs doing
- October 2023 Microsoft adds VBScript to its list of deprecated Windows features.
- Windows 11 version 24H2 VBScript becomes a Feature on Demand. It is still installed and switched on by default, so nothing breaks yet.
- Around 2027 Microsoft says the feature will no longer be enabled by default. Scripts stop running on a new or updated PC unless IT turns it back on.
- Later, no date given VBScript is removed from Windows altogether. In Microsoft's words, projects that rely on it “will stop functioning”.
Zuken has responded by backing Python. It publishes an
official e3series Python package, ships Python
examples in the E3.series help from the 2026 release, and in
September 2026 described Python as “the preferred
scripting language for E3.series”. The underlying COM
interface is the same one your VBScript already talks to, so
the logic of a script carries over. The language around it
does not.
Sources: Microsoft, VBScript deprecation: timelines and next steps; Microsoft, deprecated Windows features; Zuken, what VBScript deprecation means for scripting in E3.series; Zuken, what E3.series 2027 means for engineering teams; e3series on PyPI.
What changes when you convert an E3 VBS script to Python
Most of a conversion is mechanical. The part that needs care is where the two languages disagree about how the E3.series interface behaves.
VBScript today
Set e3 = CreateObject("CT.Application")
Set job = e3.CreateJobObject
Set sheet = job.CreateSheetObject
count = job.GetSheetIds(ids)
For i = 1 To count
sheet.SetId ids(i)
e3.PutInfo 0, "Sheet: " & sheet.GetName
Next
Python with e3series
import e3series
e3 = e3series.Application()
job = e3.CreateJobObject()
sheet = job.CreateSheetObject()
count, ids = job.GetSheetIds()
for sheet_id in ids:
sheet.SetId(sheet_id)
e3.PutInfo(0, f"Sheet: {sheet.GetName()}")
-
Output parameters become return values.
VBScript fills in
idsby reference. Python cannot, so the package returns a tuple. -
Arrays move from 1-based to 0-based.
The package strips the empty first element that
VBScript loops are written around. Every
For i = 1 To counthas to be looked at. -
Error handling has to be rewritten.
On Error Resume Nexthas no equivalent. It becomes explicit checks on return values, plus exceptions where they help. - Connecting works differently. There is no “internal” Python. A script runs as its own process and the package finds the E3.series window it was started from.
What the conversion service includes
- A like-for-like port Each script does what it did before, built on Zuken's official package so it stays in step with future E3.series releases.
- Tested against the original The VBScript and the Python version are run on the same project and their output compared, before anything reaches a user.
- Shared code pulled out The helper functions every script copies become one small module, so a fix is made once.
- Add-on menu set up Scripts launch from the same menu and toolbar buttons as today, with a Python environment your IT team can reproduce.
- Code you can maintain Typed, commented and consistent, with notes on what changed and why, so the next person is not starting cold.
- Improvements, if you want them A conversion is a good moment to fix the script everyone works around. Scoped separately, so the port itself stays like for like.
How a conversion works
- You send a list of what you have Script names and roughly what each one does is enough to start. A sample script or two tells me how they are written.
- I come back with a plan and a quote Scripts are grouped by how much they share and how risky they are, with a price for each group.
- A pilot of one or two scripts Small enough to judge quickly. You see the code, the test results and how it runs from your add-on menu before committing to the rest.
- Conversion in batches Shared helpers first, then the scripts that depend on them. Each batch is delivered with its comparison results.
- Handover Install notes for IT, a walkthrough for whoever will maintain the scripts, and the old and new versions kept side by side until you are ready to switch.
Who does the work
I'm James Bowen. I write and maintain a library of E3.series scripts used every day in wire harness manufacturing: cut lists, BOM comparison, drawing validation, test program checks and the add-on toolbar that delivers them to every user. You can watch them running on the E3 Scripting page. The scripts I convert are the same kind I depend on myself.
Scripts usually carry part numbers, customer names and folder paths. I'm happy to work under a non-disclosure agreement, and nothing you send is shared or reused.
Questions
When will VBScript stop working in E3.series?
Microsoft has not given an exact date. VBScript has been a Feature on Demand since Windows 11 version 24H2 and is still switched on by default. Microsoft says it will stop being enabled by default around 2027, and will be removed from Windows in a later release with no date announced. Once it is off, scripts that rely on it stop running unless IT turns it back on, and after removal they cannot run at all.
Does Zuken E3.series support Python?
Yes. Zuken publishes an official Python package
called e3series, a typed wrapper around
the E3.series COM interface. Zuken says each product
release since E3.series 26.10 has a matching
package, and in September 2026 described Python as
the preferred scripting language for E3.series.
Can a Python script still run from the E3.series add-on menu?
Yes. A Python script is set up as an add-on with the Python interpreter as the command and the script as its argument, so users start it from the same menu or toolbar button as before. The package connects to the E3.series window the script was started from.
Can I just run my scripts through an automatic VBScript to Python converter?
A generic converter gets the syntax across but does
not know the E3.series interface. Output parameters
come back as tuples, arrays change from 1-based to
0-based, and error handling written with
On Error Resume Next has no direct
equivalent. Those are the places a converted script
runs without an error and quietly gives a different
answer, which is why each script is tested against
the original.
Do I need to upgrade E3.series first?
Not necessarily. The package version numbers follow E3.series releases, and Zuken's documentation says the package can be used with older versions, raising an error for functions that version does not have. The first step of any conversion is checking the scripts against the version you actually run.
We also have Excel and VBA tools around E3.series. Are those affected?
VBA itself is not being removed. Microsoft does warn
that VBA code which calls .vbs files or
references VBScript libraries, such as the old
regular expression object, is affected. I build and
maintain Excel and
VBA automation as well, so those can be checked
in the same piece of work.
Do you write new E3.series scripts too?
Yes, in Python or VBScript. If there is a job in your office that someone does by hand in E3.series every week, it can probably be scripted.
Tell me what you have
A list of script names and what they do is enough to start the conversation. Choose “E3.series VBScript to Python conversion” on the contact form and I'll reply by email.
James Bowen is an independent developer and is not affiliated with Zuken. E3.series is a trademark of Zuken. Dates on this page were checked against the linked sources in October 2026 and may change.