来自VBA的ADODB连接停止工作
我们有一个用于pipe理工作时间以外的支持工程师的Rota电子表格。 前一段时间,我添加了一些VBA代码,可以自动将支持电话号码转移到工程师的电话号码。
它通过连接到由电话提供商运行的数据库并更新转接号码来完成。
今天下午,突然没有在中央服务器上工作:
Dim Db As ADODB.Connection Sub ConnectDatabase() Set Db = New ADODB.Connection Db.Open "SupportMobileDb" End Sub
代码停在New ADODB.Connection
行,并报告:
Run-time error '430': Class does not support Automation or does not support expected interface
我仍然可以运行我的笔记本电脑上的macros,它可以正常工作。 而在中央服务器上,我仍然可以使用Excel,并正确连接到数据源。 在这台服务器上不再需要使用VBA。
macros上午9时正确运行,并将所有电话转移到办公室,但下午5点转移到工作人员macros没有工作。 我看不到Windows今天已经更新,或者真的有任何其他更改。
有没有人见过这个问题?
OKfind了问题。 看起来在某些时候,VBA的外部引用之一是未经挑战的(ADO 2.8 Recordset)。 我已经添加了参考,它现在似乎工作正常。
由于我不知何故有3个upvotes回答我自己的问题(!),我最好多一些细节,以防其他人看到这个问题:
在Visual Basic编辑器的“工具” – >“引用”下,select了“ Microsoft ActiveX Data Objects 2.8 Library
。 但是Microsoft ActiveX Data Objects Recordset 2.8 Library
未被选中。 有趣的是,当在Windows 7下查看时,这个库甚至不会显示为一个选项,但是这个macros没有它。
还有一个注意事项,很明显,很多人都有这个问题…我上面的答案解决了这个问题,但只有当某些人再次编辑文件,在这一点上,他们的Office版本自动重新创build问题,我不得不再次解决。
有两个更长期的解决scheme:
1)您可以使用后期绑定,并完全摆脱引用的库。 有关详细信息,请参阅http://support.microsoft.com/kb/245115 。
2)为了我的目的,我将macros移到了另一个工作簿中 – 这些macros只能从中央服务器运行(只是查看名单的人不会设置ODBC数据源,所以macros不会运行无论如何)。 所以现在macros的工作簿中的VBA的第一步是打开实际的名册工作簿,然后运行其余的VBA代码不变。
我做了很多VBA工作,最近碰到这个。 我将编写一个程序,它会运行良好很长一段时间(在某些情况下多年 ),然后有一天,一些计算机开始得到这个错误。
对于开发人员来说更明显的事情之一是ADODB.Connection和/或ADODB.Recordset停止自我资本化。 ADODB是小写字母还是第二部分。 但是,有时候,这种化解还不错,而且还是会发生的。
将连接和/或logging集对象的创build与“设置新的”部分代码更改分离已经固定每次为我。
具体来说,下面的代码调整总是为我解决这个问题:
从以下位置更改任何连接对象的创build:
Dim con as New ADODB.Connection
至:
Dim con as ADODB.Connection Set con = New ADODB.Connection
同样,从以下位置更改任何logging集对象的创build:
Dim rs as New ADODB.Recordset
至:
Dim rs as ADODB.Recordset Set rs = New ADODB.Recordset
我有一个类似的问题,我的VBA代码在我的本地计算机(Windows 7)上工作正常,但是从Citrix服务器(Windows 2003 Server)运行它并没有失败,尝试build立连接时运行时错误为430 (Set Conn = New ADODB.Connection)。
我没有想到在Windows版本的差异,直到阅读这些反应,所以当我取消选中 “Microsoft ActiveX数据对象2.8库”,并选中 “Microsoft ActiveX数据对象2.7库”,这一切工作正常。
只是想通过这一点,并说这些post,让我在正确的方向感谢你。
- VBA多个SQL查询到Excel
- ADODB Excel / Access SQL插入舍去小数:任何想法为什么或如何解决?
- 在同步的OneDrive文件夹中使用Excel工作簿作为ADODB连接的ODBClocking错误
- Microsoft.ACE.OLEDB.12.0当前logging集不支持尝试更新访问时收到的更新错误
- VBA – 从电子表格的内容创buildADODB.Recordset
- 为Excel数据源select语句
- 在Excel中模拟Windows用户的ADODB连接
- 在Excel中运行ACE SQL查询的UDF函数,JOIN两个表不起作用
- 即使Excel中存在多个logging,CopyFromRecordset也只复制并粘贴第一行