DLL和TLB在Excel VBA中引用了问题

时间:2012-03-06 11:40:02

标签: .net excel-vba azure dll typelib

我创建了一个' Sample.Dll '和' sample.tlb '文件,其中包含一个返回值的函数,使用Visual Studio 2005类库来访问它获取单元格值的Microsoft Office Excel宏。

我在构建Solution之前在visual studio 2005中设置了一些属性。更改是:

  
      
  • 应用程序 - >装配体信息 - >使装配体COM可见复选框已选中。
  •   
  • 编译 - >注册COM互操作复选框已选中(创建'Sample.tlb'文件)
  •   
  • 签名 - >签署Assembly.Check Box Checked(创建'Sample.snk'文件)
  •   

我构建解决方案,Release文件夹中有三个文件

  
      
  • Sample.Dll
  •   
  • Sample.tlb
  •   
  • Sample.snk
  •   
  • sample.Pdb
  •   
  • sample.xml中
  •   

现在我在System32中放置' sample.dll '和' sample.tlb ',然后在另一台机器上注册sample.dll两次

  
      
  1. 通过gacutil / i sample.dll
  2.   
  3. by RegAsm sample.dll
  4.   

现在我打开Excel然后创建一个宏,并从系统32和Microsoft ActiveX Data Objects 2.1库和Microsoft DAO 3.6库中添加'sample.tlb'的引用。 现在我创建了DLL的类文件的对象。

Cells(1,1)=object.Function()

它在sample.Dll构建的同一台机器上返回值,但在另一台机器上,它在执行Function时发出错误并且没有返回该单元格的值。 该函数给出了错误代码。

  

1.错误代码429   2.错误代码-2147024894

我研究了这两个错误,但没有得到任何强有力的结果。 为什么它出现在我没有编译sample.dll的任何其他机器上? 如何创建一个在每个机器配置中完美运行的通用Dll? 或者我没有执行什么步骤?

1 个答案:

答案 0 :(得分:0)

您很可能遇到问题,因为其他机器上没有办公室。您必须有Office Interop DLL的办公室才能工作。看看:

http://debugmode.net/2011/08/28/creating-and-updating-excel-file-in-windows-azure-web-role-using-open-xml-sdk/

相关问题