excel vba 不打开工作簿 获取其他工作簿的数据
时间: 2023-09-10 16:12:56 浏览: 370
excel中不打开文件调用其它文件数据(VBA)
5星 · 资源好评率100%
在 Excel VBA 中,可以使用 ADO(ActiveX Data Objects)或 DAO(Data Access Objects)来获取其他工作簿的数据,而无需打开该工作簿。以下是一个使用 ADO 的简单示例代码:
```vb
Sub GetDataFromAnotherWorkbook()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim filepath As String
'另一个 Excel 文件的路径
filepath = "C:\Users\username\Desktop\AnotherWorkbook.xlsx"
'连接到另一个 Excel 文件
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & filepath & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
'定义 SQL 查询语句
sql = "SELECT * FROM [Sheet1$]"
'执行 SQL 查询语句
Set rs = New ADODB.Recordset
rs.Open sql, conn
'遍历结果集
Do Until rs.EOF
Debug.Print rs(0), rs(1), rs(2)
rs.MoveNext
Loop
'关闭结果集和连接
rs.Close
conn.Close
End Sub
```
在上面的代码中,我们使用 ACE OLEDB 驱动程序连接到另一个 Excel 文件,并定义一个 SQL 查询语句来获取名为 Sheet1 的工作表中的所有数据。然后,我们使用 `rs` 对象来遍历结果集中的每一行数据。最后,我们关闭了结果集和连接。
请注意,如果你的 Excel 文件中的数据源是一个 Access 数据库或 SQL Server 数据库等,则需要使用适当的 OLEDB 驱动程序,并修改连接字符串和 SQL 查询语句以适应该数据源。
阅读全文