Mysql
 sql >> база данни >  >> RDS >> Mysql

Използвайте заявка в стил SQL в Excel с помощта на VBA

Отне ми по-голямата част от деня, но разбрах това. Ето кода:

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

За да накарате това да работи върху вашата собствена работна книга, ще трябва да промените Data Source път до името на файла, който използвате.

[Sheet1$] в заявката е името на листа, от който избирате (оставете в $ ).

Worksheets(2) е номерът на листа, където създавате динамичната таблица.

Освен това ще трябва да активирате един от Microsoft Active X Data Objects библиотеки, като отидете на Tools>References в редактора на VBA в 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. СУМ от суми със знак за долар

  2. Актуализиране на таблицата в тригера след актуализация на същата таблица

  3. Използват ли се QSql::Out и QSql::InOut извън извикването на процедура за съхранение?

  4. Функция SUM() в MySQL

  5. Как да вмъкна в MYSQL ред от множество $_POST масиви