Почему VBScript говорит "недопустимый символ" при использовании ExecuteGlobal для импорта файла библиотеки функций.vbs?


Я сталкиваюсь с ошибкой "недопустимый символ" в моем 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

Ошибка гласит "Microsoft VBScript compilation error. Invalid Character. Code: 800A0408 " на Char: 2, строка 206, которая является самой первой буквой на ExecuteGlobal objFile.ReadAll (символ 1-это вкладка).

Я набрал и перепечатал строку, а также окружающие разрывы строк. Тем не менее, он продолжает говорить "недопустимый характер". Что происходит??

2 3

2 ответа:

Как оказалось, проблема была не с ExecuteGlobal, а с самим .vbs-файл, который я пытался импортировать. Файл, который я импортировал, не был в кодировке ANSI. Если у VBScript есть проблема с импортируемым файлом, он сообщит об ошибке в символе и строке в начале ExecuteGlobal (что, по общему признанию, вызывает путаницу).

Откройте файл, который вы пытаетесь импортировать, конвертируйте его в ANSI, и все должно работать.

К вашему сведению, для тех, кто столкнется с той же проблемой в будущем, чтобы исправить это:

  1. Откройте .vbs в блокноте
  2. перейдите в файл и "сохранить как"
  3. прямо под полем имя файла вы увидите выпадающее меню для кодирования. Выбери Анси.