它花了我一天的大部分时间,但我已经想到了这一点.这是代码:
Sub Excel_QueryTable()
Sheet2.Cells.ClearContents
Dim oCn As ADODB.Connection
Dim oRS As ADODB.Recordset
Dim ConnString As String
Dim SQL As String
Dim qt As QueryTable
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:.xlsm;Extended Properties=Excel 8.0;Persist Security Info=False"
Set oCn = New ADODB.Connection
oCn.ConnectionString = ConnString
oCn.Open
SQL = "Select * from [Sheet1$] WHERE type='man'"
Set oRS = New ADODB.Recordset
oRS.Source = SQL
oRS.ActiveConnection = oCn
oRS.Open
Set qt = Worksheets(2).QueryTables.Add(Connection:=oRS, _
Destination:=Range("A1"))
qt.Refresh
If oRS.State <> adStateClosed Then
oRS.Close
End If
If Not oRS Is Nothing Then Set oRS = Nothing
If Not oCn Is Nothing Then Set oCn = Nothing
End Sub
要使这个工作在您自己的工作簿上,您需要将数据源路径更改为您正在使用的文件的名称.
查询中的[Sheet1 $]是您选择的工作表的名称(留在$中).
工作表(2)是要创建动态表的工作表编号.
此外,您需要通过转到Excel中VBA编辑器中的工具>引用来启用其中一个Microsoft Active X数据对象库.