sql >> Databáze >  >> RDS >> Mysql

Použijte dotaz ve stylu SQL v Excelu pomocí VBA

Zabralo mi to většinu dne, ale už jsem na to přišel. Zde je kód:

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

Aby to fungovalo na vašem vlastním sešitu, budete muset změnit Data Source cesta k názvu souboru, který používáte.

[Sheet1$] v dotazu je název listu, ze kterého vybíráte (nechte v $ ).

Worksheets(2) je číslo listu, na kterém vytváříte dynamickou tabulku.

Navíc budete muset povolit jeden z Microsoft Active X Data Objects knihovny přejděte do Tools>References v editoru VBA v Excelu.




  1. proč sql s 'exists' běží pomaleji než 'in' pomocí MySQL

  2. MySQL považuje 'е' a 'ё' za stejné, jak je nastavím, aby je považovalo za odlišné?

  3. Nejúčinnější způsob výběru tisíců řádků ze seznamu ID

  4. Jak zahrnout celkový počet vrácených řádků do sady výsledků z příkazu SELECT T-SQL?