我创建了一个' 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两次
- 通过gacutil / i sample.dll
- by RegAsm sample.dll
醇>
现在我打开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? 或者我没有执行什么步骤?
答案 0 :(得分:0)
您很可能遇到问题,因为其他机器上没有办公室。您必须有Office Interop DLL的办公室才能工作。看看: