我在VBscript中遇到“无效字符”错误!特别是,在这段代码中:
'*******************************************************************
'Import Code
'by Cheyne Wallace
'November 2008
'When using only VBscript (not QTP), this code will import any function library passed into it.
'Copy this function into a file, then use it to bring in various other function libraries.
'Usage:
' Import "Library.vbs"
Sub Import(strFile)
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim wss : Set wss = CreateObject("WScript.Shell")
strFile = wss.ExpandEnvironmentStrings(strFile)
strFile = objFSO.GetAbsolutePathName(strFile)
Set objFile = objFSO.OpenTextFile(strFile, 1)
ExecuteGlobal objFile.ReadAll
objFile.Close : Set objFSO = nothing
Set wss = Nothing
End Sub
错误在Char:2,206行显示“Microsoft VBScript compilation error. Invalid Character. Code: 800A0408
”,这是ExecuteGlobal objFile.ReadAll
上的第一个字母(字符1是标签)。
我输入并重新输入了该线以及周围的换行符。不过,它一直在说'无效的角色'。发生了什么事?
答案 0 :(得分:5)
事实证明,问题不在于ExecuteGlobal
,而在于我试图导入的.vbs文件。我导入的文件不是ANSI编码。如果VBScript对您要导入的文件有问题,它将在ExecuteGlobal
开头的字符和行中报告错误(这无疑会引起混淆)。
打开您尝试导入的文件,将其转换为ANSI,一切都应该有效。
答案 1 :(得分:2)
对于那些在未来遇到同样问题的人来说,为了解决这个问题:
答案 2 :(得分:0)
更改代码的来源:
Set objFile = objFSO.OpenTextFile(strFile, 1)
ExecuteGlobal objFile.ReadAll
到
Set objFile = objFSO.OpenTextFile(strFile, 1, False, -2)
ExecuteGlobal objFile.ReadAll
OpenTextFile
函数中的最后一个参数是TristateUseDefault = -2
(使用系统默认值打开文件。)