【发布时间】:2021-02-08 13:13:57
【问题描述】:
我正在尝试这个:
Dim oApp
Dim iReturnedResult
Set oApp = CreateObject("Some.Application")
Set F_Ord = oApp.Documents.Open("Window 1", VarPtr(iReturnedResult))
ActiveX 控件期望第二个参数是 Long by reference。
这在 Excel VBA 中运行良好。 我可以一步一步运行,看看结果是否正常。
但是,当我将此代码移动到 VBS 文件并从命令行 (CScript.exe) 运行时,我收到错误 800A000D,这意味着它是错误的类型。
我也尝试过创建一个数组,并使用这些命令进行测试,但没有任何运气:
Set F_Ord = oApp.Documents.Open("Window 1", VarPtr(iReturnedResult(0)))
Set F_Ord = oApp.Documents.Open("Window 1", iReturnedResult(0))
有谁知道如何通过引用 VBScript 中的 ActiveX 控件来传递长变量?
【问题讨论】:
-
VarPtr()在 VBScript 中不受支持。 -
您可以尝试
Dim iReturnResult: iReturnResult = CLng(0)然后将其作为参数传递,但如果需要指针,则不确定它是否会起作用。 -
啊,你是对的,VBA 支持 VarPtr,但 VBScript 不支持。谢谢。并感谢关于 CLng 的建议,但确实有效。
-
老实说我没想到,因为它期待的是
CLng()不是的指针。
标签: vbscript pass-by-reference activex wsh