2010-12-28 1 views
0

J'ai un VBScript que je suis en train de construire. Le script lui-même complète toutes les fonctions qu'il contient - il ne génère une erreur qu'après la fin du script. Il me donne l'erreur suivante: vbscript erreur d'exécution: Objet requis « objFSO »Erreur d'exécution VBscript

Voici la fonction 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 

Le fichier est toujours ouvert et utilisé correctement. Je suis un peu perdu. Des idées?

Répondre

3

objFSO Une valeur n'est jamais affectée. Lorsque l'erreur se produit, la valeur de objFSO est Empty, ce qui n'est pas un objet.

Vous êtes probablement manquer

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

Merci pour la réponse - je vais le tester maintenant et vous faire connaître les résultats! – Nutsy

0

@Nutsy: @Thom Smith a la réponse, je pense que vous pourriez avoir besoin de définir explicitement la façon dont vous souhaitez ouvrir le fichier aussi bien que. J'ai mis à jour votre code pour inclure certains 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 

Il peut y avoir d'autres problèmes dans le script aussi bien, je ne suis pas sûr ce que redim preserve text(nlines) va faire puisque vous ne définissez ou utilisez text partout à nouveau et vous ne définir ou initialiser nlines comme 0 soit.

0

Si vous utilisez un peu comme:

Set objFSO = CreateObject("Scripting.FileSystemObject") 

strVar = ReadFileIntoArray(File) 

il va dans la fonction, alors vous avez besoin de ne pas réattribuer un objFSO il suffit d'écrire:

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 
Questions connexes