VBA的ADODB连接停止工作

asc*_*99c 7 excel vba adodb

我们有一个Exccel电子表格,用于管理非工作时间支持工程师的rota.前段时间,我添加了一些VBA代码,可以在几小时内自动将支持电话号码转移到工程师的手机上.

它通过连接到电话提供商运行的数据库并更新转移号码来完成此操作.

今天下午,它突然无法在中央服务器上运行:

Dim Db As ADODB.Connection

Sub ConnectDatabase()
  Set Db = New ADODB.Connection
  Db.Open "SupportMobileDb"
End Sub
Run Code Online (Sandbox Code Playgroud)

代码在该New ADODB.Connection行停止,并报告:

Run-time error '430':
Class does not support Automation or does not support expected
interface
Run Code Online (Sandbox Code Playgroud)

我仍然可以在我的笔记本电脑上运行宏,它可以正常工作.在中央服务器上,我仍然可以使用Excel,并正确连接到数据源.它只是无法在此服务器上通过VBA工作.

该宏在上午9点正确运行,并将所有电话转移到办公室,但下午5点转移到员工宏不起作用.我无法看到Windows今天更新,或者根本没有任何其他更改.

以前有人见过这个问题吗?

asc*_*99c 16

确定发现了问题.看起来在某些时候,VBA内容的一个外部引用是未被攻击的(ADO 2.8 Recordset).我已经添加了参考,它现在似乎工作正常.

由于我已经以某种方式获得了3个赞成回答我自己的问题(!)的问题,我最好再提一些细节以防其他人看到这个问题:

在Visual Basic编辑器中,在工具 - >引用下,我Microsoft ActiveX Data Objects 2.8 Library选择了.但Microsoft ActiveX Data Objects Recordset 2.8 Library未被选中.有趣的是,在Windows 7下查看它时,这个库甚至不作为一个选项出现,但是没有它的宏工作.

还有一点需要注意,很明显很多人都有这个问题......我上面的答案确实解决了问题,但只有在某些人再次编辑文件之后,他们的Office版本会自动重新创建问题,而我不得不再次解决它.

有两个长期解决方案:

1)您可以使用后期绑定,并完全删除引用的库.有关详细信息,请参见http://support.microsoft.com/kb/245115.

2)出于我的目的,我将宏完全移动到另一个工作簿 - 这些宏应该只从中央服务器运行(只是查看名册的人不会设置ODBC数据源,所以宏不会运行无论如何).所以现在宏的工作簿中的VBA的第一步是打开实际的名册工作簿,然后运行其余的VBA代码不变.