尝试从VBA调用.NET函数 – 在VBA中使用RUN

我有一个.Net类库,并做了所有必要的事情,包括它在Excel中。 (以COM可见的方式表示,用于com-interop和regasm'ing dll)我使用excel 2007.在excel插件中,我看到我的'TestLib.Functions'被选中。 我能够访问我的VBA代码中的函数,如下所示:

Set lib = New TestLib.Functions returnVal = lib.Add(5); 

这工作正常。

对于其他代码审查的原因,我也看到了使用RUN方法访问的另一个库中的一些函数:

 Run("avSomeFunction", paramvalue) 

现在,在VBA编辑器中,如果我尝试以相同的方式访问“添加”function,

 Run("Add", 5) 

我收到一个错误,说'无法find名称添加macros'。 是否有必要再次在VB的editot-tools-references中再次添加tlb作为参考,除了为.net dll做regasm? 有人可以让我知道这里有什么问题。

ps:出于某种非常疯狂的原因,我突然有了这个工作,但之后又一次没有工作。 很奇怪:(

虽然你的问题不是很直接,但我认为下面的链接将帮助你解决你的问题。

首先,我find了一个论坛post,解释你解释的同一types的错误,“找不到macros”。

其次,如果这不起作用,请尝试使用下面提供的链接进行研究:

  • 如何使用RegAsm正确注册您的COM库
  • 初学者在VBA中使用.NET的指南
  • 为VBA创build.NET COM库

如果这不能解决您的问题,请编辑您的问题以包含其他信息。

区别:添加一个tlb作为引用来调用函数VS使用“运行”? 有这个答案。 基本上,我错过了在VBA项目中对tlb的引用。 除了注册dll之外,还需要添加tlb作为参考。