Excel VBA:我可以查询外部excel而无需打开目标文件吗?

我想省略下面的“.Open”这一行,但是它说“当对象closures时不允许操作”,有没有方法可以查询文件而不打开呢?

Set cn = CreateObject("ADODB.Connection") With cn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & "C:\data.xls" & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" .Open End With Set rs = cn.Execute("SQL statement here") 

你打开一个连接,而不是文件本身。 因此,这真的是你需要的。 尝试以下操作,看看文件没有打开:

 Option Explicit Public Sub TestMe() Dim cn As Object Dim rs As Object Set cn = CreateObject("ADODB.Connection") With cn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & "C:\DB.xlsm" & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" .Open End With Set rs = cn.Execute("SELECT * FROM [Sheet1$]") Do Until rs.EOF Debug.Print rs.Fields.Item(1), rs.Fields.Item(2) rs.MoveNext Loop 'cn.Close <- you need this only if you work with some crazy guys, who do not 'understand the open-close principle End Sub 

如果该文件是在许多用户之间共享的,则可以使用连接的ReadOnly权限(只​​需更改ConnectionString ,如图所示):

 With cn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & "C:\DB.xlsm" & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES application intent=ReadOnly"";" .Open End With