Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 注册com dll以供vba使用_Visual Studio_Com - Fatal编程技术网

Visual studio 注册com dll以供vba使用

Visual studio 注册com dll以供vba使用,visual-studio,com,Visual Studio,Com,我有一个非常基本的问题。我已经开发了一个com dll,用于访问vba。在我的开发机器上工作得很好。在测试机上,我得到了 "error -2147024894 (80070002) Automation Error System can't find the specified file" 运行Access应用程序时显示msg 在设计视图中引用dll时,所有对象和属性都显示在vba ide中 我想知道我是否使用了错误的regasm来注册dll?我使用VS2010在64位机器上开发 我编译dll

我有一个非常基本的问题。我已经开发了一个com dll,用于访问vba。在我的开发机器上工作得很好。在测试机上,我得到了

"error -2147024894 (80070002) Automation Error
System can't find the specified file"
运行Access应用程序时显示msg

在设计视图中引用dll时,所有对象和属性都显示在vba ide中

我想知道我是否使用了错误的regasm来注册dll?我使用VS2010在64位机器上开发

我编译dll以在Framework3.5中的x86上运行。我应该使用frameworkv2吗。o、 50727或Framework\v4.0.30319来注册dll。我不清楚有什么区别。使用的版本是由VS的开发版本还是编译时使用的.NET版本决定的?一个用于32位,另一个用于64位

我已经为此奋斗了2天,并取得了一些进展,但无法让访问例程在运行时实际设置dll实例



提前感谢您的帮助。

VBA使用COM DLL。您必须使用C++,而不是.NET框架。

VBA使用COM DLL。你必须使用C++,而不是.NETFramework。

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

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

您需要使用regsvr32注册COM dll以从VBA引用它。

您需要使用regsvr32注册COM dll以从VBA引用它。

可能我不清楚。我正在引用vba中的dll。dll在我的开发机器上与vba配合使用效果很好。问题似乎是在其他机器上正确注册,以便在那里使用。这是错误的。没有必要在C++中编写COM,而不是C++,它生成了VBA中可用的COM DLL,VSTO使用。NET.Sorry,我没有正确地阅读问题。尝试在目标计算机上的COM DLL上运行Dependes.exe。这将标记任何缺少的依赖项。找不到80070002文件。可能我不清楚。我正在引用vba中的dll。dll在我的开发机器上与vba配合使用效果很好。问题似乎是在其他机器上正确注册,以便在那里使用。这是错误的。没有必要在C++中编写COM,而不是C++,它生成了VBA中可用的COM DLL,VSTO使用。NET.Sorry,我没有正确地阅读问题。尝试在目标计算机上的COM DLL上运行Dependes.exe。这将标记任何缺少的依赖项。找不到80070002文件。不确定提交后如何编辑。如果您是使用同一帐户登录的,则问题中的标记下方会有一个编辑链接:编辑时,您可以在输入问题的正下方区域立即获得所见即所得预览,这样您就可以看到提交问题时的情况。单击文本区域右上角正上方的橙色问号也可以获得帮助。提交后不确定如何编辑。如果您使用相同的帐户登录,则问题中的标记下方会有一个编辑链接:编辑时,您可以在输入问题的正下方区域立即获得所见即所得预览,这样您就可以看到提交问题时的情况。单击文本区域右上角上方的橙色问号也可以获得帮助。我刚刚注销了dll。然后搬到新的地方。使用C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Users\Doug\Documents\AccessProjects\VROM\dll\eBayList.dll/tlb重新注册:eBayList.tlb\codebase Access在返回到引用时立即找到它。所有代码都已编译,但在运行时仍然出现“找不到指定文件”错误。就是这样。我把代码库标志倒过来了。当我读上一篇文章时,我注意到了拼写错误。使用2.0.50727版本的regasm和/codebase实现了这一点。你们太棒了!我刚刚注销了dll。然后搬到新的地方。使用C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Users\Doug\Documents\AccessProjects\VROM\dll\eBayList.dll/tlb重新注册:eBayList.tlb\codebase Access在返回到引用时立即找到它。所有代码都已编译,但在运行时仍然出现“找不到指定文件”错误。就是这样。我把代码库标志倒过来了。当我读上一篇文章时,我注意到了拼写错误。使用2.0.50727版本的regasm和/codebase实现了这一点。你们太棒了!