打开 ADODB 连接时"Unspecified error"



我面对"未指定错误"只有一个PC我的用户。

运行时错误'-2147467259 (80004005)':
未指定的错误

我正在运行下面的VBA代码打开连接到位于网络共享驱动器的Access数据库。但是代码在试图运行.Open语句时抛出错误。

我认为这是一个驱动程序问题,并在用户的PC上安装了Access 2007数据库引擎,并将提供商替换为"Microsoft.ACE.OLEDB.12.0",但它不起作用。

代码 :

 Dim cn As ADODB.Connection
 Dim rs As ADODB.Recordset
 Dim retVal As Boolean
 Dim strSQL As String
 retVal = False
    On Error GoTo CatchError
     Set cn = New ADODB.Connection
     With cn
     .Provider = "Microsoft.Jet.OLEDB.4.0"
     .Properties("Jet OLEDB:Database Password") = Initialize.GetDBPwd 'returns pass
     .Open Initialize.GetDbConnectionString 'returns the network DB path
    End With

在从本地Excel文件到另一个本地Excel文件进行ADODB连接时,我也有同样的问题。

我解决它的唯一方法是重新打开主 Excel 文件从我做连接。没有其他操作,函数再次工作。

My connection function:

Sub SetConReadOnly(ByRef con1 As Object, ByRef rst1 As Object, sFile As String)
    If con1 Is Nothing Then Set con1 = CreateObject("ADODB.Connection")
    If rst1 Is Nothing Then Set rst1 = CreateObject("ADODB.Recordset")
    con1.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
     "Data Source=" & sFile & ";" & _
     "Extended Properties=""Excel 12.0;HDR=No;IMEX=1;"""
End Sub

(我使用Office 2013 32位,Windows 7 64位)

你的Excel是什么版本的?

我有这个错误,解决方案是更改提供程序。试着改成:

On Error GoTo CatchError
 Set cn = New ADODB.Connection
 With cn
 .provider = "Microsoft.Mashup.OleDb.1"
 .Properties("Jet OLEDB:Database Password") = Initialize.GetDBPwd 'returns pass
 .Open Initialize.GetDbConnectionString 'returns the network DB path
End With

仍然没有找到任何解决这个问题的方法,但似乎这个问题仅限于一个用户。

我写了一些测试宏,在具有原始宏的同一文件中,打开到本地DB文件和远程DB文件的DB连接。测试是成功的,但由于某种原因,一个特定的宏仍然在该特定用户的机器中抛出"未指定的错误"。

我们得出结论,这很可能是由于办公室腐败。我们将修复办公室,希望能解决问题。我会告诉你这是否有效。

谢谢。

我遇到过这个问题,并确定此问题特定于32位Office安装的Win7 64位。我偶然遇到的解决方案是,如果我手动保存文件并重新运行代码,它可以无缝地工作。尝试在错误处理程序中合并保存并再次调用主函数时失败。然而,通过应用程序保存文件。SendKeys "^s",然后通过另一个线程运行文件,可以复制手动保存的结果。

在进一步调查后,我发现错误是因为在查询之前运行时添加了源中的某些列,并且似乎sql引擎从不同的内部原始源查询,除非保存发生,否则不会随着更改更新,这就是错误的原因。

在两个不同的模块中使用相同的变量时,我得到了这个错误。当我改变变量名时它就消失了。这很奇怪,但确实有效!!希望这能解决你的问题。由于

相关内容

  • 没有找到相关文章

最新更新