如何在ActiveX DLL/TLB参考后期绑定的基本脚本中使用枚举



tldr:我正在编写和测试VBA的脚本,但最终从主桌面应用程序中执行为单个.bas文件。

DLL引用从VBA到bas丢失,强迫我将应用程序的成员类型定义为"对象",而不是.bas文件中的本机类型。

我可以通过在BAS文件中定义引用来避免将早期限制的代码转换为后期代码吗?


更多信息:我需要将VBA脚本转换为软件可以执行的基本脚本。无论如何,基本脚本中是否有用于引用TLB文件的?我使用set app = CreateObject("...")调用该应用程序,例如在其示例中显示所有键入的"对象"的所有内容,该示例没有从vba(当然)

中赋予IntelliSense

是否可以将枚举称为其文本值而不将其转换回整数值?另外,是否有一种方法可以正确键入应用程序对象,而不是在基本脚本中使用object

我可以通过在BAS文件中定义引用来避免将早期限制的代码转换为后期代码吗?

不,你不能。.BAS文件不包含此类元数据。实际上,它拥有的唯一元数据是该模块的名称,该名称存储为隐藏的VB_Name属性,该属性用来填充模块的Name属性。

引用属于VBProject对象;如果您希望一个.bas文件独自站立并通过vbscript运行时在VBE之外执行,则您必须将您的早期结合代码转换为后期。

这意味着您确实失去了IntelliSense,因为现在必须将其定义为Object中的所有类型,并且需要将枚举值转换为其基础整数值。

另外,您可以为这些枚举定义同名常数,并保留名称:

Private Const SomeEnumValue As Long = 42

或,[re]自己定义枚举:

Private Enum SoneEnum
    SomeEnumValue = 42
    '...
End Enum

最新更新