我有一个在Excel中用VBA编写的遗留业务应用程序。它使用VBA库(安装在c:\program files (x86)\Common Files\Microsoft Shared\DAO\dao360.dll
上)和类Workspace
、Database
、DBEngine
、Connection
通过ODBC连接到SQL数据库。
它正常工作到Windows 7,但在Windows8 /Server 2012上,它在第一次调用DAO时就不起作用了:
Set ws = DBEngine.CreateWorkspace(wsName, "", "", dbUseODBC)
引发运行时错误号3633描述"Cannot load DLL: 'msrdo20.dll'"
。这既发生在类库的DBEngine.Errors
中,也发生在常规的VBA Err
对象中。
无论文件msrdo20.dll
是否存在,都会发生此错误。
我找到了https://support.microsoft.com/en-us/kb/260369,上面写着包括ODBCDirect,但这似乎与此无关。
我找到了http://www.xtremevbtalk.com/archive/index.php/t-172385.html,它建议从引用中删除Microsoft 3.6并切换到DAO 3.5 --但是这样做更糟,运行时错误为429,"ActiveX组件不能创建对象“。
这是Windows Server 2012,Excel 2013。
发布于 2016-05-23 05:52:47
这个博客为我解决了这个问题:
http://pwaldman.com/unable-to-load-msrdo20-dll-or-rdocurs-dll/
摘录:
分辨率
http://www.microsoft.com/en-us/download/details.aspx?id=9183
发布于 2015-08-27 17:30:15
当我使用regsvr32时,我忘记了作为管理员运行命令提示符。这就是为什么VBA找不到DLL的原因。
https://stackoverflow.com/questions/32237704
复制相似问题