Computer Performance, Logon Scripts

Code Error 800A0400 - Expected statement

Troubleshooting Code 800A0400 - Expected statement

Perhaps instead of 'Expected Statement', 'missing character' would be a better error message.  I have noticed with error 800A0400 how often the problem is at the beginning or the end of the line mentioned in the error message.

Introduction to Code 800A0400

Error code 800A0400 is a generic message when you execute a VBScript.  A wild guess, you have missed a command at the beginning of a line.Code 800A0400 Expected Statement VBscript error

The Symptoms you get

The script does not execute as you had hoped.  Instead you get a message box like this picture:

The Cause of Error 800A0400

Your VBScript contain is missing a statement.  This is a difficult error to track down.  However, the good news is that I have three examples.  Most likely you have placed a statement, which is not appropriate for the logic of your script.  For example, extra brackets, or missing command. 

Note: the clue 'Source: Microsoft VBScript compilation error'.  My point is that 'compilation error' and not a 'runtime error', means this is a syntax error in your script.

The Solution for Error: Expected statement

The Windows Scripting Host gives us two useful clues, firstly, look on Line: 10, do count any remark or empty lines.  Secondly, the Char: number 1, is useful in tracing the error.  In this case there is something wrong with the Select statement.

The line number, as is so often the case, is crucial to solving this error.  The problem is that the whole line is gibberish to the VBScript engine.  So take another look at each word, punctuation and see if you can spot a simple error.

  ‡

Example 1 of Error code: 800A0400

Missing underscore at the end of the line 7:

 

 ' WSHname.vbs
' Sample VBScript to check WSH Version
' Author Guy Thomas http://computerperformance.co.uk/
' Version 2.3 - September 2005
' --------------------------------------------------------------------
On Error Resume Next
WScript.Echo "WSH Version: " & WScript.Version & " " & WScript.BuildVersion
& vbcr & "File name: " WScript.ScriptName
WScript.Quit

 

 

Solution

Missing underscore at the end of the line:

WScript.Echo "WSH Version: " & WScript.Version & " " & _

 

 ' WSHname.vbs
' Sample VBScript to check WSH Version
' Author Guy Thomas http://computerperformance.co.uk/
' Version 2.3 - September 2005
' --------------------------------------------------------------------
On Error Resume Next
WScript.Echo "WSH Version: " & WScript.Version & " " & _ WScript.BuildVersion
& vbcr & "File name: " WScript.ScriptName
WScript.Quit

 

Guy Recommends: SolarWinds Engineer's Toolset v10Engineer's Toolset v10

The Engineer's Toolset v10 provides a comprehensive console of utilities for troubleshooting computer problems.  Guy says it helps me monitor what's occurring on the network, and the tools teach me more about how the system itself operates.

There are so many good gadgets, it's like having free rein of a sweetshop. Thankfully the utilities are displayed logically: monitoring, discovery, diagnostic, and Cisco tools.  Download your copy of the Engineer's Toolset v 10

Example 2 of 800A0400

Error on Line 4.

Talk about stupid errors, there is no ' apostrophe to Rem out that line of dashes.

Actual

------------------------

Should be:

 '   -----------------------------

 

 'The script is below, and the pclist.txt contain only 2 line:
' mainsrv
' computer1
---------------------------------------------------------------------
Const ForReading = 1
Set objDictionary = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
("e:\scripts\pclist.txt", ForReading)
i = 0
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
objDictionary.Add i, strNextLine
i = i + 1
Loop
For Each objItem in objDictionary
StrComputer = objDictionary.Item(objItem)
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer& "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
("SELECT * FROM Win32_Service")
Wscript.Echo strComputer, colServices.Count
Next

 

Example 3 of 800A0400  (Code available)

I just plain missed command, for example no 'Set'.

Problem

"Error" ObjNetwork = CreateObject("Wscript.Network")

Correction

Set ObjNetwork = CreateObject("Wscript.Network")

Example 4 - No need for End If

The 800A0400 error message in VBScript often appears when the user adds a "End" statement when there is no need for one. For example, in this script, the user puts "End If", when there is no If statement to end.

MsgBox "Click OK to continue"
Input = InputBox("Type your name")
End If

 

 

There was no need for the user to put "End If", so the script host says that the user needs to put an 'If' statement, but wouldn't it make much more sense if it told the user to delete the 'End If' statement?

This example was kindly sent in by Alex Jones.

Solarwinds IpMonitorTry a different solution, download SolarWinds ipMonitor

Here is my thinking, ipMonitor will give you valuable data about your network and servers.  This extra information just may unlock the solution to your error code.  One more thing, sometimes when troubleshooting you go around in circles; therefore if you try a different, but related approach, you may just crack the problem.  Free Download of SolarWinds ipMonitor (21 day eval).

Computer Training Software - Recommended Training VideosGuy Thomas recommends Computer Training Software

Their topics and material are ideal for getting you started with VBScript.  The videos are easy to follow and you can control the pace.  Try their free demo material and then see if you want to buy the full package. See more about VB Script Training CD.


Do you need extra help?

For interpreting the WSH messages check Diagnose 800 errors.

For general advice try my 7 Troubleshooting techniques

Give something back?

Would you like to help others?  If you have a good example of this error, then please email me, I will publish it with a credit to you:

 

 *


Google

Web  This website

Review of Orion NPMGuy Recommends: Orion's Network Performance Monitor (NPM)

Orion NPM is designed for detecting network outages.

Network-centric views (screenshot) make it easy to see what's working, and what needs your attention.

Download your free trial of Orion's network performance monitor

 

Home Copyright © 1999-2010 Computer Performance LTD All rights reserved

Please report a broken link, or an error.