【问题标题】:VBScript Error "Invalid or Unqualified Reference" with SendKeys Method带有 SendKeys 方法的 VBScript 错误“无效或不合格的引用”
【发布时间】:2014-01-03 22:19:00
【问题描述】:

我的 .vbs 文件中的代码出现以下错误:

C:\...\Root_VBS_Script_1.vbs(19, 1) Microsoft
VBScript runtime error: Invalid or unqualified reference

1 was unexpected at this time.

.vbs文件如下:

Set wshShell = CreateObject("Wscript.Shell")

Set args = WScript.Arguments
arg1 = args.Item(0)

Dim filename

filename = ""&arg1&""


WshShell.SendKeys "root -b" //opens root in batch mode
WshShell.SendKeys "~"
WshShell.AppActivate ROOT_session
WshShell.SendKeys ".x analysis.C"
wshShell.SendKeys "~"
WshShell.SendKeys ".x double_gaus.C"
WshShell.SendKeys "~"
WshShell.AppActivate ROOT_session
WshShell.SendKeys "c1->SaveAs("&filename&.pdf&")"
WshShell.SendKeys "~"
WshShell.SendKeys ".q"
WshShell.SendKeys "~"

WScript.Quit 1

我正在使用发送密钥方法从批处理文件调用的 .vbs 文件中运行一个名为 root 的程序(由 CERN 开发)。我在调用 .vbs 文件时将文件名作为参数附加。我不确定为什么会收到此错误,但我知道 send keys 方法会打开 root 并一直运行,直到它应该将 c1 保存为给定的文件名和类型。

谁能帮我解决这个错误?

【问题讨论】:

    标签: vbscript compiler-errors runtime-error sendkeys wsh


    【解决方案1】:

    这是你的罪魁祸首:

    WshShell.SendKeys "c1-&gt;SaveAs("&amp;filename&amp;<b>.pdf</b>&amp;")"

    没有可以连接的变量.pdf。由于前导点,它甚至不是一个有效的变量名。您可能打算在此处将变量 filename 与字符串 .pdf 连接起来。将上面的行改为:

    WshShell.SendKeys "c1->SaveAs(" & filename & ".pdf)"
    

    更笼统地说:你为什么首先使用 VBScript(尤其是SendKeys)?如果我正确理解了documentation,您可以在其他root 脚本中运行root 脚本,因此不需要另一种脚本语言或不可靠的方法,例如SendKeys

    【讨论】:

    • 谢谢你的建议,我一会儿试试。对于您的问题,我确实了解 SendKeys 的不可靠性,并且我知道您可以在 root 中的脚本中包含脚本,但目前我还没有足够的经验使用 root 来承担这一点,我需要一种快速的方法来分析我当前的数据集对于即将到来的最后期限。理想情况下,是的,我会在 root 内执行此操作,并且很快就会这样做。
    • 在更一般的情况下,当在以点开头的行上使用方法时会触发此错误,但未将其包含在 WithEnd With 块:docs.microsoft.com/en-us/office/vba/language/reference/…
    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多