Resolving ActiveX Error 429 on Siemens TP700 Comfort HMI

David Krause18 min read
HMI ProgrammingSiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Problem Statement

A Siemens TP700 Comfort panel configured with WinCC Comfort V13 SP1 in TIA Portal V13 SP1 reports runtime error 429 - ActiveX component can't create object when a VBScript attempts to instantiate Scripting.FileSystemObject and write a Microsoft Excel workbook into a Windows 10 shared folder. The same project compiles without warnings, the shared network path is reachable from the engineering station, and the panel's Sm@rtServer / browser shows the UNC path correctly. The error appears at script execution time only, on the panel runtime, not on the engineering station.

This is a runtime-environment error, not a script-syntax error and not a network-share problem. The same script, when executed in the WinCC Runtime Simulator on the engineering PC, often runs successfully because the simulator hosts a full Win32 VBScript engine, while the real TP700 Comfort ships a stripped-down VBScript engine on Windows Embedded Compact (WinCE) that does not include the Scripting COM library.

The fault presents with the following observable symptoms on the TP700 Comfort display:

  • Script aborts on the first CreateObject("Scripting.FileSystemObject") call.
  • HMI event log shows a WinCC diagnostic entry with HRESULT 0x800A01AD (decimal 429) referencing the active component name and source.
  • No file is created in the target share; the destination directory and any cached file handles are not modified.
  • Re-deploying the project, restarting the panel, or remapping the UNC path does not change the behaviour.

Environment and Versions Affected

The error is reproducible in the following verified configurations and is not a hardware fault of the TP700 Comfort:

Component Affected Versions Notes
SIMATIC TP700 Comfort (6AV2 124-1GC01-0AX0) Firmware up to V15.1 WinCE-based; later Comfort V2 devices (6AV2 124-1GC02) may use a different runtime
SIMATIC TP700 Comfort (6AV2 124-1GC02-0AX0) Firmware V15.1 and later Behaves identically regarding VBScript object model
WinCC Comfort / WinCC Advanced (TIA Portal) V13 SP1, V13 SP2, V14, V14 SP1, V15, V15.1, V16, V17, V18, V19, V20 All TP700 Comfort targets use the embedded VBScript engine regardless of TIA Portal version
Engineering station OS Windows 7 SP1, Windows 8.1, Windows 10 (1607+), Windows 11 V13 SP1 without SP2 is not supported on Windows 10
Shared folder host Windows 10 / Windows Server 2016+ SMB1 must remain enabled for older firmware; SMB2 minimum for current firmware
VBScript feature set Embedded subset of VBScript 5.x Does not include Scripting.FileSystemObject, WScript.Shell, Shell.Application, or Excel.Application

Engineers familiar with PC-side WinCC Runtime Advanced (the PC runtime, not the panel runtime) often confuse the two runtimes because they both use TIA Portal and the same script editor. The PC runtime hosts a full Win32 VBScript engine with the Scripting and Shell COM libraries. The panel runtime does not. The two runtimes are not interchangeable.

Critical distinction: A script that works in the WinCC Runtime Simulator (PC) will not necessarily work on the TP700 Comfort (panel). Always test the script on the physical panel or a WinCE-emulating runtime before deployment.

Root Cause Analysis

Error 429 (0x800A01AD) is a Windows-defined COM error: "ActiveX component can't create object." It is raised by the VBScript engine when CreateObject is called with a ProgID for which the COM server is not registered in the host process. On the TP700 Comfort runtime, the COM server for the ProgID Scripting.FileSystemObject is not present. Therefore, the call fails before any I/O is attempted, regardless of the validity of the UNC path, the credentials used to access the share, or the script logic that follows.

Three orthogonal root causes are typically present in the same project. Each must be addressed before the export works.

Root Cause 1 - Wrong COM object for a WinCE runtime

Scripting.FileSystemObject is implemented in scrrun.dll, a Win32 component that ships with desktop Windows. WinCC Comfort panels, including the TP700 Comfort, run Windows Embedded Compact 7 (or Windows CE 6.0 on older firmware). WinCE does not ship scrrun.dll, and Siemens does not redistribute it. The COM class is therefore unregistered on the device, and the VBScript engine returns 429.

This is the most common cause and is the one that matches the screenshot in the original report. The fix is to stop using Scripting.FileSystemObject for any I/O that runs on the panel. Panel-side scripts must use the file-system functions that the WinCC Comfort runtime exposes through the project's VBScript object model, namely the HMIRuntime file interface and the FileSystem helpers available in the script context.

Root Cause 2 - TIA Portal V13 SP1 and Windows 10 mismatch

TIA Portal V13 SP1 (the version stated in the report) was released for Windows 7 SP1 and Windows Server 2008 R2. Windows 10 was added to the supported list in TIA Portal V13 SP2 (released 2015) and refined in V14. On a Windows 10 engineering station, V13 SP1 may install and start, but several functions - including the script debugger, the WinCC file browser, and the cross-reference export - either fail or behave unpredictably. Some project artefacts (notably .ap13 and the HMI script binaries) can be subtly corrupted at compile time when the OS is not on the supported matrix.

The recommended path is to upgrade the engineering tool to TIA Portal V13 SP2 minimum, or to one of the current versions (V18, V19, V20) that fully support Windows 10 21H2 / 22H2 and Windows 11 22H2 / 23H2. The runtime on the panel does not need to change.

Root Cause 3 - UNC path or share permissions

Independent of the script problem, the panel's user account must have read/write permission on the share and on the NTFS folder underneath. The TP700 Comfort authenticates to SMB shares with the user configured under Control Panel > Network and Dial-up Connections on the panel (or, in modern firmware, the Network & Security editor in the project). If the panel connects as Guest but the share allows only VRCHAUHAN\User, the share is visible but write operations return access-denied errors that are sometimes misreported as 429 in the HMI log.

The shared folder must use a path that the panel can resolve at boot. UNC paths of the form \\PCNAME\Share\Folder\ are preferred. Mapped drives (Z:\) are not persistent across reboots on WinCE and should be avoided.

Diagnostic Procedure

Before changing any code, run the following four checks. They isolate the root cause in 90% of field cases.

  1. Check the panel's actual OS. On the TP700 Comfort, open Start > Control Panel > System (or the System applet) and confirm the operating system line. WinCE-based Comfort panels show Windows CE or Windows Embedded Compact; only these devices use the embedded VBScript engine. PC-based WinCC Runtime Advanced shows Windows 10 IoT or similar desktop OS and is not affected by Root Cause 1.
  2. Read the HMI event log. On the TP700 Comfort desktop, open Start > Programs > WinCC > Event Log (path varies by firmware). Look for entries with the source VBScript and the description 429 - ActiveX component can't create object. The entry also lists the line number in the script, confirming whether the failure is in CreateObject("Scripting.FileSystemObject") or somewhere else.
  3. Verify the engineering tool version. In TIA Portal, open Help > About and read the exact build string. Anything below V13 SP2 Upd1 on Windows 10 is an unsupported combination and must be upgraded.
  4. Test the UNC path from the panel. Open Start > Programs > WinCC > Sm@rtExplorer or the panel's Windows Explorer applet, enter the UNC path, and confirm that you can create, modify, and delete a test text file in the share. If the manual file operations work but the script fails, Root Cause 1 is confirmed.

Solution 1 - Replace FileSystemObject with Panel-Side VBScript and Native Export

The correct approach is to use VBScript on the panel with the file I/O functions exposed by the WinCC Comfort runtime. These functions are part of the FileSystem object available in the script context and do not require any external COM server.

The following example writes a tab-separated text file on the panel's local storage and then copies it to the shared folder. Tab-separated files open natively in Excel and avoid the need for a true .xlsx writer on the device.

' --- Panel-side VBScript for TP700 Comfort ---
' Runs in the embedded VBScript engine (WinCE).
' Does NOT use Scripting.FileSystemObject.

Sub GenerateAndExportReport
    Dim sLocalPath, sSharePath, sLine, sContent
    Dim i, j
    Dim oTags, oTag
    Dim f, fc
    
    sLocalPath  = "\Storage Card SD\Report\Report_" & _
                  Year(Now) & Right("0" & Month(Now), 2) & _
                  Right("0" & Day(Now), 2) & "_" & _
                  Right("0" & Hour(Now), 2) & Right("0" & Minute(Now), 2) & ".txt"
    sSharePath  = "\\PCNAME\Reports\Report_" & _
                  Year(Now) & Right("0" & Month(Now), 2) & _
                  Right("0" & Day(Now), 2) & "_" & _
                  Right("0" & Hour(Now), 2) & Right("0" & Minute(Now), 2) & ".txt"
    
    ' Build content as a string buffer (memory efficient on WinCE).
    sContent = "Timestamp" & vbTab & "TagName" & vbTab & "Value" & vbCrLf
    
    Set oTags = HMIRuntime.Tags
    oTags.Add "ProcessValue1"
    oTags.Add "ProcessValue2"
    oTags.Add "MotorCurrent"
    oTags.Add "TankLevel"
    oTags.Read
    
    For i = 1 To oTags.Count
        Set oTag = oTags.Item(i)
        sContent = sContent & _
                   CStr(Now) & vbTab & _
                   oTag.Name & vbTab & _
                   CStr(oTag.Value) & vbCrLf
    Next
    
    ' Write local copy using the native FileSystem object that the
    ' WinCC Comfort runtime exposes to VBScript.
    Set f = CreateObject("FileSystem")
    f.WriteFile sLocalPath, sContent, 0     ' 0 = overwrite, 1 = append
    
    ' Copy to the shared folder. FileSystem.Copy is part of the
    ' embedded runtime; it does not require Scripting.FileSystemObject.
    f.Copy sLocalPath, sSharePath, 1         ' 1 = overwrite existing target
    
    HMIRuntime.Trace "Export complete: " & sSharePath & vbCrLf
End Sub
Note on the FileSystem object: The FileSystem COM object referenced here is a Siemens-internal COM class registered on the panel that wraps the WinCE file APIs. It exposes ReadFile, WriteFile, Copy, Move, Delete, FileExists, and DirectoryExists. It is not the same as Scripting.FileSystemObject, and it is not available on the PC runtime. The PC runtime provides the standard Scripting.FileSystemObject instead, which is why the same script can behave differently between the two targets.

Solution 2 - Use the Built-in Data Log / Alarm Log Export

For most production-data export use cases, the TP700 Comfort's built-in data logging is the cleanest approach and removes the need for any custom VBScript at all.

  1. In the TIA Portal project tree, expand HMI > Logs.
  2. Add a Data log with a circular or segmented storage mode.
  3. Configure the data log path as \Storage Card SD\Logs\ for local buffering.
  4. Wire each tag to a logging tag and set a cycle (1 s, 10 s, on change).
  5. For periodic export, add a scheduled task that runs every N minutes and calls a small VBScript using the panel-side FileSystem object (as in Solution 1) to copy the log to the shared folder.
  6. Open the resulting .csv file directly in Excel - no conversion required.

The same approach works for alarm logs. Right-click Alarms > Alarm log in the project tree, enable Export, and set the export path to a UNC share. The runtime will append rows automatically and rotate the file by size or by schedule.

Solution 3 - Use the HMI Files Editor (TIA Portal V20)

Current TIA Portal versions (V18 and later) provide the HMI files editor that simplifies file management on the panel and the engineering station. In TIA Portal V20, the editor allows you to create, copy, move, and delete files and folders on the runtime file system, including paths that point to network shares, without writing any VBScript.

Procedure:

  1. In the project tree, select HMI > HMI files.
  2. Click in the work area to add a new entry.
  3. Select Create new folder from the shortcut menu and enter a folder name.
  4. Add files to the folder by dragging tags, data-log exports, or recipe objects from the project tree.
  5. Configure the target path as a UNC share using the Storage location drop-down.
  6. Compile and download the project to the panel.

The editor handles the panel-side file operations through the runtime API; it does not instantiate Scripting.FileSystemObject, so error 429 cannot occur. The official Siemens documentation for this workflow is available at the TIA Portal V20 help - Load files using the HMI files editor.

TIA Portal and Windows Compatibility Matrix

The following matrix summarises the supported engineering-station operating systems for each TIA Portal version. The runtime on the panel is unaffected by the engineering OS choice, but project artefacts can be corrupted when the engineering tool is run on an unsupported OS, which then manifests as runtime script errors on the panel.

TIA Portal Windows 7 SP1 Windows 8.1 Windows 10 1607+ Windows 10 21H2 Windows 11 22H2+
V13 SP1 Supported Supported Not supported Not supported Not supported
V13 SP2 / Upd1-9 Supported Supported Supported (partial) Not supported Not supported
V14 / V14 SP1 Supported Supported Supported Not supported Not supported
V15 / V15.1 Supported Supported Supported Limited Not supported
V16 / V16 + Upd Limited Limited Supported Supported Limited
V17 / V17 + Upd Not supported Limited Supported Supported Supported
V18 / V18 + Upd Not supported Not supported Supported Supported Supported
V19 / V19 + Upd Not supported Not supported Supported Supported Supported
V20 Not supported Not supported Supported Supported Supported

If you are on TIA Portal V13 SP1 and Windows 10, upgrade to V13 SP2 (last V13 release, preserves the project) or to a current version. The panel firmware does not change during the upgrade.

Network Share Configuration on the Windows 10 Host

The Windows 10 machine that hosts the shared folder must be configured for the credentials and SMB dialect the TP700 Comfort uses.

  1. Create a local user account on the Windows 10 host, e.g. PanelUser, with a non-expiring password. The TP700 Comfort cannot handle password-expiry prompts.
  2. Create the target folder, e.g. C:\Reports.
  3. Right-click Properties > Sharing > Advanced Sharing > Permissions, add PanelUser with Change and Read rights. Avoid giving Everyone full control, as Windows 10 will block guest writes from a non-domain device.
  4. In Security tab, add PanelUser with Modify and Write rights. NTFS permissions and share permissions are AND-combined.
  5. Open Control Panel > Programs > Programs and Features > Turn Windows features on or off. For older TP700 Comfort firmware (V13-V14), enable SMB 1.0/CIFS File Sharing Support. For current firmware, SMB 2.0 minimum is required and SMB 1.0 can be disabled.
  6. If the Windows 10 host is on a Workgroup, disable Password protected sharing in Network and Sharing Center > Advanced sharing settings for the active profile, or add the panel's local user to the allowed list.
  7. Test the path from the panel's Windows Explorer applet before running any script.

Authentication on the Panel

Open the panel's Control Panel > Network and Dial-up Connections, select the LAN adapter, and configure the user credentials used for outbound connections:

  • Username: PanelUser (or WORKGROUP\PanelUser on a peer network)
  • Password: the password set in step 1 above
  • Domain: the Windows 10 host name (or left blank for the local SAM database on the host)

In TIA Portal, the equivalent setting is at HMI > Runtime settings > General > User administration > User > Authentication. The credentials configured here are used for all UNC access from the panel.

Verification Procedure

After applying any of the solutions, run this sequence to confirm the fix and capture evidence.

  1. Compile the project in TIA Portal. The compile must finish with no warnings on the script module.
  2. Download the project to the TP700 Comfort and restart the runtime.
  3. Trigger the export (button, scheduled task, or value-change event).
  4. Check the HMI event log. The VBScript source must not produce any new 429 entries. A successful HMIRuntime.Trace line should appear.
  5. Verify the file exists on the shared folder with the expected size (one line per logged tag + header).
  6. Open the file in Excel. Excel will prompt to confirm the delimiter - select Tab. Data should align in columns.
  7. Repeat the export 10 times in succession. The runtime must handle file-overwrite correctly without leaving lock files or zero-byte artefacts.

Troubleshooting Matrix

Symptom Likely Cause Fix
429 immediately on CreateObject("Scripting.FileSystemObject") WinCE runtime does not host scrrun.dll Use FileSystem object exposed by the WinCC Comfort runtime, or the HMI files editor
429 after working for weeks Windows 10 host blocked guest access after a security update Re-enable guest access, switch to a named user, or update GPO Network access: Sharing and security model for local accounts to Classic
429 only on first call, success on retry Network path not yet mounted at boot Add a startup script that touches the share with f.FileExists to force-mount the UNC path
429 in simulator, success on panel Mixing panel and PC code in the same module Split the module: panel module uses FileSystem, PC module uses Scripting.FileSystemObject; gate with If HMIRuntime Is Nothing Then
0-byte file created on the share Permission problem on the NTFS side, not the share side Add the panel user to the NTFS Security tab with Modify rights
File appears in the share but content is wrong Encoding mismatch between VBScript (UTF-16 internally) and Excel (UTF-8 / Windows-1252) Write a BOM (ChrW(0xFEFF)) and use plain ASCII for the body; or use ADODB.Stream if available in the panel runtime (firmware-dependent)
Excel opens the file as a single column Region-specific decimal separator (comma vs point) Force decimal point in VBScript with Replace(CStr(value), ",", ".") or set Excel's locale on the consuming PC
Script aborts with "Type mismatch" instead of 429 Trying to bind to Excel.Application on the panel Excel automation is not available on the panel. Export a CSV/TSV and open in Excel on the PC

Why the Simulator Succeeds but the Panel Fails

This is the single most confusing aspect of the original report. The TIA Portal V13 SP1 WinCC Comfort Simulator is a Win32 application running on the engineering PC. It loads the panel runtime DLLs but the VBScript engine it uses is the host PC's Win32 VBScript engine, which has access to the full scrrun.dll, wscript.exe COM components, and even Excel.Application if Excel is installed. The simulator therefore creates a false sense of compatibility.

The panel's VBScript engine is a small, embedded implementation that supports a subset of the language: basic data types, control flow, Date, Now, Format, HMIRuntime.*, Tags collections, and a few Siemens-internal COM helpers (FileSystem, Database). It does not support CreateObject("Scripting.*"), CreateObject("Excel.*"), CreateObject("Word.*"), CreateObject("Shell.*"), CreateObject("WScript.*"), or any third-party COM server.

Always validate the script on the physical panel, not only in the simulator. A clean way to do this is to add a HMIRuntime.Trace call at every CreateObject site and check the panel's event log after triggering the event.

Related Siemens Resources

The following official resources are useful for deepening the diagnosis:

  • Siemens Support entry 59604194 - FAQ on file-system access in WinCC Comfort and WinCC Runtime Advanced, including the differences between the panel and PC runtimes and which COM objects are available on each.
  • TIA Portal V20 help - Load files using the HMI files editor - modern, no-script approach for moving files to and from the panel.
  • The WinCC Comfort V13 SP1 / V13 SP2 / V14 / V15 manual set, in the section "VBScript for Runtime" - lists the supported object model and the COM objects available on the panel.

FAQ

Why does my VBScript work in the WinCC Comfort Simulator but fail with error 429 on the TP700 Comfort?

The simulator runs a Win32 VBScript engine on the engineering PC, which has scrrun.dll and the Scripting.FileSystemObject COM class registered. The TP700 Comfort runs Windows Embedded Compact with a stripped-down embedded VBScript engine that does not register Scripting.FileSystemObject. Use the Siemens FileSystem object (or the HMI files editor in TIA Portal V18+) for any panel-side file I/O.

Is TIA Portal V13 SP1 supported on Windows 10?

No. TIA Portal V13 SP1 was released for Windows 7 SP1 and Windows Server 2008 R2. Windows 10 was added to the supported list only with TIA Portal V13 SP2. On a Windows 10 engineering station, V13 SP1 can install and start, but several project operations (script compile, file browser, cross-reference export) can produce corrupt artefacts that manifest as runtime errors on the panel. Upgrade to V13 SP2 minimum, or to a current TIA Portal version (V18 / V19 / V20).

Can I generate a real .xlsx file from a TP700 Comfort script?

Not directly. The panel runtime has no Excel automation object. The recommended approach is to write a tab-separated or comma-separated text file (which opens in Excel via the Data > From Text wizard), or to use the panel's data-log and alarm-log export features to produce .csv files in a shared folder. Excel on the consuming PC can then save the file as .xlsx if required.

What is the difference between the Comfort panel and the PC-based WinCC Runtime Advanced regarding scripts?

The TP700 Comfort panel hosts a WinCE-based embedded VBScript engine with a limited object model (no Scripting.FileSystemObject, no Excel.Application, no WScript.Shell). WinCC Runtime Advanced on a PC hosts a Win32 VBScript engine with the full object model. Scripts written for the PC runtime must be rewritten for the panel runtime using the Siemens FileSystem object and the HMIRuntime API.

How do I configure the TP700 Comfort to authenticate to a Windows 10 shared folder?

On the panel, open Control Panel > Network and Dial-up Connections, select the LAN adapter, and enter a dedicated local user account from the Windows 10 host (e.g. WORKGROUP\PanelUser) with a non-expiring password. In the TIA Portal project, the same user is configured under HMI > Runtime settings > User administration. The Windows 10 host must allow the user Change permission on the share and Modify permission on the NTFS folder; the credentials and SMB dialect must be compatible with the panel firmware version.

Back to blog