在建立连接和处理SQL查询时,ODBC驱动程序变得不稳定

时间:2018-06-15 01:12:31

标签: excel excel-vba odbc excel-2010 vba

我有一个Excel宏工作簿(二进制扩展名)偶尔突然发生了2个问题(有时它运行正常)。

#1问题 - 第5行偶尔会出现错误 看来连接没有打开。我们得到错误:  Microsoft] [ODBC Microsoft Access驱动程序]常规错误无法打开注册表项临时(易失性)Ace DSN进程0x7f8线程0x1174 DBC

#2问题 - 第7行偶尔出现错误 看来SQL无法运行。它表示即使它确实存在,也找不到“工作表”选项卡。注意这个错误我们对第5行(Open Connection)没有任何问题。显示的错误是: [Microsoft] [ODBC Excel驱动程序] microsoft jet数据库引擎找不到对象“工作表名称”。确保对象存在... 对于问题#2,一旦我们关闭错误对话框并且MACRO GETS DELETED !!!

备注

代码模块在几年内没有改变有些日子我们没有错误/问题

多个运行不同VBA代码块的人员运行的多个Excel工作簿会出现此问题。但是,所有这些宏中的一个代码块是相同的,这是上面的代码片段。

在格式或音量方面,源数据的年数没有变化。

所有这些工作簿都在网络服务器上。

我们使用的是Windows7 / Excel 2010 / ODBC Excel驱动程序(xls xlsx xlsm xlsb)    14.00.7180.5000

代码段

1-Set adoConn = Nothing
2-Set adoRS = Nothing
3-Application.EnableCancelKey = xldisabled
4-strConn = "Driver={Microsoft Excel Driver (*.xls,*.xlsx,*.xlsm,*.xlsb)};DriverId=1046;Dbq=" & strFileName & ";IMEX=1;"
5-Set adoConn = New ADODB.Connection: adoConn.Open strConn
6-Application.EnableCancelKey = xlInterrupt
7-Set adoRS = New ADODB.Recordset:adoRS.Open Source:=strSQL,ActiveConnection:=adoConn

1 个答案:

答案 0 :(得分:1)

我很好奇为什么你使用ODBC将Excel连接到另一个Excel文件,而不是直接链接数据。

间歇性连接问题指向网络问题。我建议删除并重新创建ODBC连接,但我首先要确认连接字符串中引用的strFileName的值。它是内部网络上的实际服务器还是外部源? (即,它是UNC path?)

间歇Unable to open registry key错误可能听起来比实际情况更糟;当遇到连接问题时,Windows& Excel很容易混淆真正的问题。

听起来您的设置已经存在,可能是未维护的,很长一段时间。客户端和服务器最后一次重新启动的时间是什么时候? (应该是每晚。)碎片整理,磁盘清理等?

关于关闭错误对话框时宏“被删除”的问题,我需要查看证据。我认为你误解了一些东西,除非你每次发生这种情况时都从头开始重写宏。