VBA相当于C#using或VB.NET导入/创建别名

7 c# vb.net alias vba using-directives

基础参考:VBA,Visual Basic .NET和C#的十个代码转换

注意:我已经创建并导入了一个*.dll,这个问题是关于 别名的.

假设一个Test类的程序化名称是TestNameSpace.Test

[ProgId("TestNamespace.Test")]
public class Test ...
Run Code Online (Sandbox Code Playgroud)

现在,假设一个C#解决方案已被密封并编译成一个*.dll,我在Excel的VBE中引用它.注意:此时我无法修改程序名称,就好像它*.dll不是由我编写的.

这是VBA:而不是像这样声明一个变量:

Dim myTest As TestNameSpace.Test
Set myTest = new TestNameSpace.Test
Run Code Online (Sandbox Code Playgroud)

我更喜欢称之为(仍在VBE中)

Dim myTest As Test
Set myText = new Test
Run Code Online (Sandbox Code Playgroud)

在C#中你通常会说

using newNameForTest = TestNamespace.Test;
newNameForTest myTest = new NewNameForTest;
Run Code Online (Sandbox Code Playgroud)

注意:假设有没有命名空间冲突VBA项目

问:是否有一个等价的调用VBAC# usingVB.NET imports别名?

小智 3

答案是否定的:有一个内置的 VBE 功能,可以识别添加到项目中的引用,并在运行时(VBE 的运行时)创建别名(如果没有名称冲突)

如果注册表中出现名称冲突,所有.点都将替换为_下划线。

»ProgId的   (编程标识符)

在COM中,它仅用于后期绑定。这就是调用创建新对象的方式

Dim myObj = CreateObject("TestNamespace.Test")
Run Code Online (Sandbox Code Playgroud)


EarlyBindingLateBinding

在早期绑定中,您可以使用关键字指定要创建的对象的类型new。您的对象的名称应该随 VBA 的智能感知一起弹出。它与 无关ProgId。要检索用于您的对象类型的实际命名空间 - 打开Object Explorer F2并在那里找到它

本文解释了早期绑定部分中名称的来源,使用与何时使用后期绑定
相同的链接

有关 MSDN 编程标识符部分,请参阅