我在MS Office 2013中使用VBA 7.1。我正在尝试与JavaScript中的函数进行交互(或者使用尽可能接近的缩短代码创建的接口CreateObject("HtmlFile").ParentWindow.close
- 类似于{{在JavaScript中1}}。问题是,我正在尝试将它传递给另一个函数,但是当我传递它时,它一直在JavaScript 中调用实际的window.close
函数。这就是它变得奇怪的地方:它不会在一些特定的内置函数中调用。
window.close
有没有办法在没有调用它的情况下传递?
编辑:您可以使用以下方法复制设置:
CStr(obj) ' Invokes the interface; window close dialog appears
VarType(obj) ' Invokes the interface; window close dialog appears
IsEmpty(obj) ' Invokes the interface; window close dialog appears
TypeName(obj) ' Doesn't invoke the interface; returns "Object"
IsObject(obj) ' Doesn't invoke the interface; returns True
答案 0 :(得分:0)
要回答您的问题,请传递对象的名称。
对象是代码。有一个对象工厂制作你的对象。
对象的数据结构是4x32位整数(VB中的Longs)。一个是引用计数(如果对象终止为0),则一个是VTable的地址(每个属性获取/设置和方法调用的地址),两个是保留的,未使用且始终是。
由于COM的魔力,您的对象在程序中显示为数据结构和加载的函数库(即使它是可执行文件而不是dll)。
传递尚不存在的对象传递名称。 JScript / VBScript可以在运行时编写代码。在VBScript中,请参阅execute
,executeglobal
和eval
。所有这些都采用一串VBScript代码,以各种方式成为您程序的一部分。