Code 800A0005 lors de l'utilisation de set objfichier = objFSO.OpenTextFile
J'ai cherché ce code d'erreur à de nombreuses reprises et ont traversé de nombreux sites pour lire les réponses. Longue histoire courte, je n'ai pas encore trouvé une solution.
Une page référencée: Erreur lors de l'envoi ( caractère avec sendkeys dans vbscript
Voici mon code:
set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("C:\Downloads\software\putty.exe -load navstat")
DIM date
date = 301113
DIM tran1
tran1 = TAFFY
set objFSO = CreateObject("Scripting.FileSystemObject")
set objFile = objFSO.OpenTextFile("C:\Users\Adrian\Desktop\Entries1.txt", ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If InStr(strLine, "JFK.GREKI3.MARTN..TOPPS") Then
set indi = 2
set tran1 = TOPPS
End If
Loop
Ce qu'il se passe: je suis de la numérisation d'un .fichier txt (Entries1.txt) pour les chaînes de texte. Si elles se produisent j'ai besoin de correspondant indi valeurs (donc quand indi est utilisé plus tard comme une variable, il va utiliser le bon #) et de modifier le tran1 variables.
Pour une raison quelconque, j'obtiens une erreur:
set objFile = objFSO.OpenTextFile
L'erreur est
Invalid argument ou appel de procédure
Code: 800A0005
Aide serait grandement appréciée.
OriginalL'auteur Adrian | 2013-11-29
Vous devez vous connecter pour publier un commentaire.
Retrait de la
ForReading
partie de la ligne permet de l'exécuter sur mon système en utilisant le code suivant:J'ai testé à l'aide d'un simple
Test.txt
contenant les éléments suivants:Je l'ai testé à l'aide de la commande suivante à l'invite:
J'ai reçu cette sortie:
Remarque: Un autre problème que vous allez rencontrer est à l'aide de
set
sur cette ligne (et peut-être celle qui la suit):indi
est une variable simple, pas un objet, et par conséquent il n'y a pas besoin deset
. Seulement affecter directement la valeur:Le document que j'ai envie de numérisation s'ouvre comme je m'attends.
Voir mon édité réponse.
Merci. Je l'ai modifié et maintenant, il arrive à établir indi = 2 avant d'erreurs. Hmmmm, Erreur: Objet requis: "[: 2] " je n'ai pas étudié ce code d'erreur, de sorte que je vais aller le faire maintenant.
Désolé, mais ce n'est pas la question ici. J'ai répondu que l'on. 🙂 On ne peut pas s'attendre à de débogage chaque ligne de votre script. (Je vais caution vous sur ce point, mais dans l'avenir, poser une question à part.) Supprimer la
set
, laissantindy = 2
. C'est une simple variable, et n'a pas besoin d'êtreset
.OriginalL'auteur Ken White
Tout Ken solution est correct, il n'a pas d'expliquer correctement la raison de l'erreur que vous obtenez, donc je vais ajouter une réponse supplémentaire.
L'erreur est provoquée par l'identificateur
ForReading
dans la ligneLa
OpenTextFile
méthode accepte un paramètre optionneliomode
qui peut avoir une valeur de1
,2
ou8
. Cependant, contrairement à ce que suggère la documentation, il n'existe pas de constantes pré-définies pour ces valeurs numériques. À moins que vous définissez vous-même (que vous n'avez pas), par exemple comme ceci:vous doit utiliser les valeurs numériques ou omettez le paramètre entièrement (dans ce cas, la valeur par défaut est
1
).Si vous utilisez un non défini identifiant comme
ForReading
l'interprète automatiquement de l'initialiser avec la valeurEmpty
, ce qui pourrait produire un comportement inattendu comme il l'a fait dans votre cas.Démonstration:
Vous pouvez éviter ce genre de problème en utilisant
Option Explicit
(ce qui est fortement recommandé pour la production de code). Il déclenche une erreur d'exécution quand il ya des variables non définies dans votre code, vous permettant de détecter les problèmes comme ça dès le début.ForReading
, a été déclaré d'ailleurs. Mon VBS est rouillée. 🙂 Bien expliqué.Ce sera un événement commun lors de la modification de code à partir du début de la liaison de la liaison tardive.
Merci pour la réponse détaillée, qui traite de la question plus large.
OriginalL'auteur Ansgar Wiechers