Excel 来自VBA的ADODB连接停止工作

Excel 来自VBA的ADODB连接停止工作,excel,vba,adodb,Excel,Vba,Adodb,我们有一个EXCEL电子表格,用于管理非工作时间支持工程师的rota。不久前,我添加了一点VBA代码,可以在工作时间之外自动将支持电话号码转移到工程师的手机上 它通过连接到电话提供商运行的数据库并更新转接号码来实现这一点 今天下午,它突然无法在中央服务器上工作: Dim Db As ADODB.Connection Sub ConnectDatabase() Set Db = New ADODB.Connection Db.Open "SupportMobileDb" End Sub

我们有一个EXCEL电子表格,用于管理非工作时间支持工程师的rota。不久前,我添加了一点VBA代码,可以在工作时间之外自动将支持电话号码转移到工程师的手机上

它通过连接到电话提供商运行的数据库并更新转接号码来实现这一点

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

Dim Db As ADODB.Connection

Sub ConnectDatabase()
  Set Db = New ADODB.Connection
  Db.Open "SupportMobileDb"
End Sub
代码在
新建ADODB.Connection
行停止,并报告:

Run-time error '430':
Class does not support Automation or does not support expected
interface
我仍然可以在笔记本电脑上运行宏,而且它工作正常。在中央服务器上,我仍然可以使用Excel,并正确连接到数据源。在这台服务器上,它将不再通过VBA工作

宏在上午9点正确运行,将所有电话转接到办公室,但下午5点转接到员工宏不起作用。我看不出Windows今天更新了,或者真的有任何其他的变化


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

确定找到了问题。看起来在某个点上,VBA内容的一个外部引用被取消勾选(ADO 2.8记录集)。我已经加回了参考,现在似乎工作正常

既然我在回答自己的问题(!)时获得了3张赞成票,我最好再详细一点,以防其他人看到这个问题:

在Visual Basic编辑器中的“工具”->“引用”下,我选择了Microsoft ActiveX Data Objects 2.8库。但未选择Microsoft ActiveX数据对象记录集2.8库。有趣的是,在Windows7下查看该库时,该库甚至不作为选项出现,但宏没有它也可以工作

还有一个问题,因为显然很多人都有这个问题。。。我上面的回答确实解决了这个问题,但直到某些人再次编辑该文件,在这一点上,他们版本的Office自动重新创建了这个问题,我不得不再次解决它

有两种长期解决方案:

1) 您可以使用后期绑定,并完全摆脱引用的库。有关此操作的更多详细信息,请参阅


2) 出于我的目的,我将宏完全移动到了另一个工作簿中-无论如何,这些宏只能从中央服务器运行(仅查看花名册的人不会设置ODBC数据源,因此宏无论如何也不会运行)。因此,宏工作簿中的VBA现在要做的第一步是打开实际的花名册工作簿,然后它不加修改地运行其余的VBA代码。

我做了很多VBA工作,最近也经常遇到这种情况。我会写一个程序,它会运行很长一段时间(在某些情况下是几年),然后有一天一些计算机开始出现这个错误

对于开发人员来说,更明显的一点是ADODB.Connection和/或ADODB.Recordset停止了自我资本化。ADODB要么是小写,要么是第二部分。不过,有时,电容化是好的,而且仍然会发生

将连接和/或记录集对象的创建与“Set new”部分代码更改分开,每次对我来说都能解决这个问题

具体而言,以下代码调整始终为我解决了这一问题:

从以下位置更改任何连接对象的创建:

Dim con as New ADODB.Connection
Dim rs as New ADODB.Recordset
致:

同样,将任何记录集对象的创建更改为:

Dim con as New ADODB.Connection
Dim rs as New ADODB.Recordset
致:


我遇到了一个类似的问题,我的VBA代码在本地计算机(Windows 7)上运行得很好,但在Citrix服务器(Windows 2003服务器)上运行它却没有,并且在尝试建立连接时失败,运行时错误为430(Set Conn=New ADODB.connection)

在阅读这些回复之前,我没有考虑windows版本的差异,因此当我取消选中“Microsoft ActiveX数据对象2.8库”和选中“Microsoft ActiveX数据对象2.7库”时,一切都很好

我只想把这一点传递下去,并对这些引导我走向正确方向的帖子表示感谢