Tôi đã mất gần như cả ngày nhưng tôi đã tìm ra điều này. Đây là mã:
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:\t.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
Để điều này hoạt động trên sổ làm việc của riêng bạn, bạn cần thay đổi Data Source
đường dẫn đến tên của tệp bạn đang sử dụng.
[Sheet1$]
trong truy vấn là tên của trang tính bạn đang chọn (để lại trong $
).
Worksheets(2)
là số trang mà bạn đang tạo bảng động.
Ngoài ra, bạn sẽ cần kích hoạt một trong các Microsoft Active X Data Objects
thư viện bằng cách đi tới Tools>References
trong trình soạn thảo VBA trong excel.