2012-04-14 118 views
1

我有一个非常基本的问题。我已经开发出了一个可以从Access vba使用的COM DLL。在我的开发机器上运行良好。在测试机器上,当我运行Access应用程序时,我得到了注册通过vba使用的dll

"error -2147024894 (80070002) Automation Error 
System can't find the specified file" 

msg。

当在设计视图中的DLL被引用,所有的对象和属性在VBA IDE显示。

我想知道如果我使用了错误的regasm注册DLL?我开发使用VS 2010

我编译DLL中框架3.5在x86上运行64位的机器上。我应该使用框架V2。 o.50727或Framework \ v4.0.30319注册dll。不清楚我有什么不同。使用的版本是由开发版本的VS还是您编译的.NET版本决定的?一个用于32位,另一个用于64位?

我一直争取这2天,并已取得了一些进展,但无法获得访问例程实际设置在运行时DLL的一个实例。

在此先感谢您的帮助。

+0

你可以编辑你的问题放入一些分段符,并使用反引号格式化代码类型的部分(如错误消息)吗?段落突破是为了这样的情况而发明的 - 将大块文本分解为可读块。 :) 谢谢。 – 2012-04-14 22:10:44

+0

不确定提交后如何编辑。 – DougM 2012-04-14 22:16:54

+0

如果您使用同一个帐户登录,那么您的问题中标签下方会有一个编辑链接。 :)在编辑时,您可以在输入问题的地方右下方的区域立即获得所见即所得的预览,以便您可以在提交时看到它的外观。点击文本区域右上角的橙色问号也可以获得帮助。 – 2012-04-14 22:20:46

回答

1

如果您在V3.5编译,您应该使用regasm。但是,我认为您可能需要添加/ tlb和/ codebase开关来生成可在vba应用程序中使用的类型库。然后你可以引用.tlb文件,你应该是金手指。

+0

我刚刚注销了这个dll。然后移到新的位置。使用“C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ RegAsm.exe C:\ Users \ Doug \ Documents \ AccessProjects \ VROM \ dll \ eBayListing.dll /tlb:eBayListing.tlb \ codebase”重新注册。访问时立即发现它回到参考时。所有的代码编译,但我仍然'运行时找不到指定的文件'错误。 – DougM 2012-04-14 22:49:23

+1

就是这样。我有代码库标志倒退。当我读完最后一篇时,我注意到了这个错字。使用/ codebase的v2.0.50727版本的regasm做了诀窍。你们好棒! – DougM 2012-04-14 23:00:05

-2

VBA使用COM DLL。你将不得不使用C++,而不是.Net框架。

+0

可能我不清楚。我从vba引用我的dll。该DLL可以在我的开发机器上正常工作。问题似乎是在其他机器上正确注册,以便在那里使用。 – DougM 2012-04-14 22:15:32

+1

这只是错误的。不需要在C++中编写COM(Delphi不是C++并生成可在VBA中使用的COM DLL),“VSTO”使用.NET。 – 2012-04-14 22:24:37

+0

对不起,我没有正确阅读这个问题。尝试在目标计算机上的COM DLL上运行depends.exe。这将标记任何缺失的依赖关系。未找到80070002文件。 – 2012-04-14 22:53:07

0

您需要注册使用regsvr32您的COM DLL从VBA引用它。