.net Excel VBA中DLL和TLB引用的问题

.net Excel VBA中DLL和TLB引用的问题,.net,excel,vba,dll,typelib,.net,Excel,Vba,Dll,Typelib,我创建了一个“Sample.Dll”和“Sample.tlb”文件,其中包含一个返回值的函数,使用Visual Studio 2005类库在Microsoft Office Excel的宏中访问该函数以获取单元格值 在生成解决方案之前,我在visual studio 2005中设置了一些属性。更改如下: 应用程序-->程序集信息-->使程序集COM可见复选框已选中 选中编译-->COM互操作寄存器复选框(创建“Sample.tlb”文件) 签名-->为程序集签名。选中复选框(创建“Sample

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

在生成解决方案之前,我在visual studio 2005中设置了一些属性。更改如下:

  • 应用程序-->程序集信息-->使程序集COM可见复选框已选中
  • 选中编译-->COM互操作寄存器复选框(创建“Sample.tlb”文件)
  • 签名-->为程序集签名。选中复选框(创建“Sample.snk”文件)
我构建了解决方案,发布文件夹中有三个文件

  • 示例.Dll
  • Sample.tlb
  • Sample.snk
  • 示例.Pdb
  • sample.xml
现在,我将“sample.dll”和“sample.tlb”放在System32中,然后在另一台机器上注册sample.dll两次

  • 通过gacutil/i sample.dll
  • 通过RegAsm sample.dll
  • 现在,我打开Excel,然后创建一个宏,并从system 32、Microsoft ActiveX Data Objects 2.1库和Microsoft DAO 3.6库中添加对“sample.tlb”的引用。 现在,我创建了DLL类文件的一个对象

    Cells(1,1)=object.Function()
    
    它在生成sample.Dll的同一台计算机上返回值,但在另一台计算机上,它在执行函数时给出错误,并且没有返回该单元格的值。 函数给出了错误代码

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

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

    很可能是因为其他机器上没有office,所以您遇到了问题。您必须拥有office才能使office Interop DLL正常工作。看看:


    嗨,汤姆,非常感谢你的反馈。是的,当然Office需要安装在目标机器上,我们已经确保了这一点。但问题依然存在。请帮助我们解决这个问题。我们希望我们能够传达我们所面临的问题。请告知我们是否需要任何进一步的细节来向您传达我们面临的问题。