Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Użyj zapytania w stylu SQL w programie Excel przy użyciu VBA

Zajęło mi to większość dnia, ale zrozumiałem to. Oto kod:

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 zadziałało we własnym skoroszycie, musisz zmienić Data Source ścieżka do nazwy pliku, którego używasz.

[Sheet1$] w zapytaniu jest nazwa arkusza, z którego wybierasz (pozostaw w $ ).

Worksheets(2) to numer arkusza, w którym tworzysz dynamiczną tabelę.

Dodatkowo musisz włączyć jeden z Microsoft Active X Data Objects biblioteki, przechodząc do Tools>References w edytorze VBA w programie Excel.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nie udało się otworzyć pliku w bazie mysql

  2. Jak obliczyć przestrzeń dyskową używaną przez tabelę MySQL na podstawie typów danych kolumn i liczby wierszy?

  3. Jak stworzyć połączony serwer MySQL

  4. Sparametryzowane zapytanie, które zwraca kolumny TEXT, zawsze zwraca zero dla kolumn INT

  5. innodb_lock_wait_timeout zwiększa limit czasu