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

 yilande 发布于 2023-02-13 18:18

我已多次搜索此错误代码并已访问多个站点以阅读响应.长话短说,还没有找到解决方案.

引用的一个页面:发送时出错(在vbscript中使用sendkeys的字符

这是我的代码:

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

错误是

无效的过程调用或参数代码:800A0005

非常感谢帮助.

1 个回答
  • 虽然肯的​​解决方案是正确的,但它没有正确解释你得到的错误的原因,所以我添加了一个补充答案.

    该错误是由该标识符所引起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(强烈建议用于生产代码)来避免此类问题.当代码中存在未定义的变量时,它会引发运行时错误,从而可以在早期检测到类似的问题.

    2023-02-13 18:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有