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