我在Excel中使用VBA编写了一个遗留业务应用程序。它使用VBA DAO库(安装在c:\program files (x86)\Common Files\Microsoft Shared\DAO\dao360.dll
)和类Workspace
,Database
,DBEngine
,Connection
)通过ODBC连接到SQL数据库
它适用于Windows 7,但在Windows 8 / Server 2012上,它在第一次调用DAO时无法正常工作:
Set ws = DBEngine.CreateWorkspace(wsName, "", "", dbUseODBC)
引发运行时错误号3633说明"Cannot load DLL: 'msrdo20.dll'"
。这种情况发生在类库DBEngine.Errors
和常规VBA Err
对象中。
无论文件msrdo20.dll
是否存在,都会发生此错误。
这是Windows Server 2012,Excel 2013。
答案 0 :(得分:2)
这个博客为我解决了这个问题:
http://pwaldman.com/unable-to-load-msrdo20-dll-or-rdocurs-dll/
提取物:
分辨率
http://www.microsoft.com/en-us/download/details.aspx?id=9183
打开提升的命令提示符,导航到C:\ Windows \ Sys64WOW,然后注册MSRDO20.DLL。 RDOCURS.DLL不需要注册。
C:\Windows\System32> cd C:\Windows\Sys64WOW
C:\Windows\Sys64WOW> regsvr32 MSRDO20.DLL
答案 1 :(得分:0)
当我使用regsvr32时,我忘记以管理员身份运行命令提示符。这就是为什么VBA无法找到DLL。