ADO Connection与其他excel冲突(非常奇怪的问题)

时间:2016-01-12 15:40:30

标签: excel-vba vba excel

我在过去两个月内在VBA excel中创建了一个非常全面的最终用户应用程序,它基于excel表中的每日数据转储自动化整个报告链。

一切正常,直到该工具上线。在操作台上启动我的代码时,有时数据转储上的查询不会返回任何结果。 仅当工具未作为第一个Excel实例打开时才会发生这种情况。

所以,当第一个打开另一个excel工具时,我的工具:        - 不返回任何结果        - 我的工具的另一个实例以只读方式打开

在Windows 2007和Windows上也会发生这种情况。 2010年和Win XP& Windows 7的。 它在下一行打开另一个excel(问题所在的位置:     'adoConn.Open sConnString'

在我的代码下面:

Public Function createConnection() As ADODB.Connection

Dim DbPath As String
Dim sConnString As String
Dim adoConn As New ADODB.Connection


DbPath = ThisWorkbook.FullName

'Define connection String
'http://www.codeguru.com/csharp/.net/net_asp/tutorials/article.php/c19307/Whats-in-an-ADO-Connection-String.htm
sConnString = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DbPath & ";HDR=Yes';"

'Open the connection
adoConn.Open sConnString

'Return the connection
Set createConnection = adoConn

End Function

1 个答案:

答案 0 :(得分:0)

您使用的连接字符串不是ADO的标准Excel连接字符串。替换:

sConnString = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DbPath & ";HDR=Yes';"

adoConn.Open sConnString

以下内容:

With adoConn
   .Provider = "Microsoft.ACE.OLEDB.12.0"
   .ConnectionString = "Data Source=" & dbPath & ";" & _
        "Extended Properties=""Excel 12.0 Macro;HDR=Yes;IMEX=1"";"
   .Open
End With

我很少遇到使用ADO查询打开的工作簿的问题(除了偶尔出现的幻像只读副本)