sql >> Databasteknik >  >> RDS >> Mysql

Använd SQL-stil fråga i Excel med VBA

Det tog mig större delen av dagen men jag har kommit på det här. Här är koden:

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

För att få detta att fungera i din egen arbetsbok måste du ändra Data Source sökväg till namnet på filen du använder.

[Sheet1$] i frågan är namnet på arket du väljer från (lämna i $ ).

Worksheets(2) är numret på arket där du skapar den dynamiska tabellen.

Dessutom måste du aktivera ett av Microsoft Active X Data Objects bibliotek genom att gå till Tools>References i VBA-redigeraren i excel.




  1. Hur konverterar man antal veckor till datum?

  2. ClassNotFoundException med PostgreSQL och JDBC

  3. Synkroniserar primärnyckel mellan två tabeller lagrade i två olika databaser

  4. JSON_EXTRACT() – Returnera data från ett JSON-dokument i MySQL