gpt4 book ai didi

vbscript - 使用 set objFile = objFSO.OpenTextFile 时的代码 800A0005

转载 作者:行者123 更新时间:2023-12-04 22:21:06 26 4
gpt4 key购买 nike

我已多次搜索此错误代码,并前往许多网站阅读回复。长话短说,还没有找到解决办法。

引用的一页:Error while sending ( character with sendkeys in vbscript

这是我的代码:

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

发生了什么:我正在扫描 .txt 文件 (Entries1.txt) 中的文本字符串。如果它们发生,我需要设置相应的 indi 值(因此当 indi 稍后用作变量时,它将使用正确的 #)并更改 tran1 变量。

由于某种原因,我在以下位置收到错误:
set objFile = objFSO.OpenTextFile

错误是

Invalid procedure call or argument Code: 800A0005



帮助将不胜感激。

最佳答案

虽然 Ken's solution是正确的,它没有正确解释你得到的错误的原因,所以我添加了一个补充答案。

错误是由标识符 ForReading 引起的在行中

set objFile = objFSO.OpenTextFile("C:\Users\Adrian\Desktop\Entries1.txt", ForReading)

OpenTextFile 方法接受可选的第二个参数 iomode可以具有 1 的值, 28 .但是,与文档所建议的相反,这些数值没有预定义的常量。除非你自己定义它们(你没有),例如像这样:
Const ForReading   = 1
Const ForWriting = 2
Const ForAppending = 8

必须使用数值或完全省略参数(在这种情况下,它默认为 1 )。

如果您使用未定义的标识符,如 ForReading解释器会自动用值 Empty 初始化它,这可能会产生意外的行为,就像在您的情况下一样。

示范:

>>> WScript.Echo TypeName(ForReading)
Empty
>>> Set f = fso.OpenTextFile("C:\Temp\some.txt", ForReading)
Invalid procedure call or argument (0x5)
>>> WScript.Echo TypeName(f)
Empty
>>> Set f = fso.OpenTextFile("C:\Temp\some.txt", Empty)
Invalid procedure call or argument (0x5)
>>> WScript.Echo TypeName(f)
Empty
>>> 'parameter omitted
>>> Set f = fso.OpenTextFile("C:\Temp\some.txt")
>>> WScript.Echo TypeName(f)
TextStream
>>> Set f = Nothing
>>> 'numeric parameter
>>> Set f = fso.OpenTextFile("C:\Temp\some.txt", 1)
>>> WScript.Echo TypeName(f)
TextStream
>>> Set f = Nothing
>>> 'define identifier before using it as parameter
>>> ForReading = 1
>>> WScript.Echo TypeName(ForReading)
Integer
>>> Set f = fso.OpenTextFile("C:\Temp\some.txt", ForReading)
>>> WScript.Echo TypeName(f)
TextStream

您可以使用 Option Explicit 避免此类问题。 (强烈推荐用于生产代码)。当您的代码中有 undefined variable 时,它会引发运行时错误,让您能够及早发现此类问题。

关于vbscript - 使用 set objFile = objFSO.OpenTextFile 时的代码 800A0005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20294561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com