2010-12-28 4 views
0

У меня есть VBScript, над которым я работаю. Сам скрипт дополняет все функции внутри него - он выдает ошибку только после завершения скрипта. Это дает мне следующее сообщение об ошибке: VBScript ошибка времени выполнения: объект, необходимый «objFSO»Ошибка выполнения VBscript

Вот relavant функция:

Function ReadFileIntoArray (sFile) 
    dim objFSO 'As FileSystemObject 
    dim file 
    dim volumes() 

    Set file = objFSO.OpenTextFile(sFile) 'Error Thrown Here. 
    do while not file.AtendOfStream 
     redim preserve text(nlines) 
     volumes(nlines) = file.Readline 
     nlines = nlines + 1 
    loop 

    file.close 
    set file = nothing 
    Set objFSO = nothing 

    ReadFileIntoArray = volumes 
end Function 

Файл еще открыт и используется должным образом. Я немного потерял. Есть идеи?

ответ

3

objFSO никогда не назначается значение. Когда возникает ошибка, значение objFSO равно Empty, что не является объектом.

Вы, вероятно, отсутствует

Set objFSO = CreateObject("Scripting.FileSystemObject") 
+0

Спасибо за ответ - я проверить его теперь и дайте знать результаты! – Nutsy

0

@Nutsy: @Thom Смит есть ответ, я просто думаю, что вы, возможно, потребуется явно указать, как вы хотите, чтобы открыть файл, а все же. Я обновил свой код, чтобы включить некоторые constants:

Function ReadFileIntoArray (sFile) 
    dim objFSO 'As FileSystemObject 
    dim file 
    dim volumes() 

    Const ForAppending = 8 
    Const ForReading = 1 
    Const ForWriting = 2 

    Set objFSO = CreateObject("Scripting.FileSystemObject")   
    Set file = objFSO.OpenTextFile(sFile, ForReading) 'Error Thrown Here. 
    do while not file.AtendOfStream 
     redim preserve text(nlines) 
     volumes(nlines) = file.Readline 
     nlines = nlines + 1 
    loop 

    file.close 
    set file = nothing 
    Set objFSO = nothing 

    ReadFileIntoArray = volumes 
end Function 

Там могут быть некоторые другие вопросы, в сценарии, а я не уверен, что redim preserve text(nlines) будет делать, так как вы никогда не определить или использовать text где-нибудь еще и вы никогда определить или инициализировать nlines как 0 либо.

0

Если вы используете несколько как:

Set objFSO = CreateObject("Scripting.FileSystemObject") 

strVar = ReadFileIntoArray(File) 

он переходит в функции, то вам не нужно переназначить objFSO просто написать:

Function ReadFileIntoArray (sFile) 

dim file 
dim volumes() 

Set file = objFSO.OpenTextFile(sFile) 'Error Thrown Here. 
do while not file.AtendOfStream 
    redim preserve text(nlines) 
    volumes(nlines) = file.Readline 
    nlines = nlines + 1 
loop 

file.close 
set file = nothing 
Set objFSO = nothing 

ReadFileIntoArray = volumes 
end Function 
Смежные вопросы