我在过去两个月内在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
答案 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查询打开的工作簿的问题(除了偶尔出现的幻像只读副本)