TOP

Zapytanie SQL przy użyciu VBA Excel

Opis

Istnieje wiele sposobów pobierania danych ze źródeł zewnętrznych do arkusza Excel . W tym artykule przyjrzymy się, jak wykonywać zapytania dotyczące danych z pliku bazy danych MS Access i z pliku Excel używając SQL-a W VBA . Tak, trochę to pomieszamy SQL z VBA ! I jest lepiej, niż myślisz!

SQL oznacza Structured Query Language (strukturalny język zapytań) i jest językiem używanym do wyszukiwania informacji z baz danych (takich jak MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL i inni).

Możesz także pobrać dane z Internetu, pliki tekstowe lub inne Excel lub CSV akta.


1. Zapytanie SQL z Excel VBA do pliku MS Access

Potrzebujemy więc połączenia z bazą danych (zmienna varConn w makrze poniżej) i Zapytanie SQL (zmienny varSQL ) w celu zautomatyzowania pobierania danych z bazy danych do raportu. W poniższym przykładzie tak Zapytanie SQL , który odbiera dane z małej bazy danych w MS Access.

Kliknij załaduj bazę danych MS Access (test.mdb) .

Plik MS Access będzie wyglądał następująco:

Napiszmy nasze makro, które zostanie wykonane Zapytanie SQL .

Otwórz menu Usługa - Makro - Edytor Visual Basic , włóż nowy moduł (menu Insert - Module ) i skopiuj tam tekst makra:

Sub SQLQuery_1()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

Kliknij Zapisz i wróć do Excel. Wybierz z menu Widok – Makra (Alt+F8) nazwa naszego makra” SQLQuery_1 ”. Pojawi się okno dialogowe, naciśnij je Baza danych... , poszukaj naszego pliku Access i kliknij ОК .

Teraz widzimy, że nasze makro zapytanie spowodowało wyświetlenie kolumn Month , Product I City ze stołu Sumproduct z bazy danych test.mdb do pliku Excel.

2. Zapytanie SQL z VBA do zamkniętego pliku Excel

Podobnie możemy uzyskać dane ze zwykłego pliku Excel tak, jak z bazy danych. W tym celu należy nieco przepisać kod naszego makra i zmienić sterownik połączenia z Access na Excel.

Eksportujemy tabelę Sumproduct z Access w Excel i zapisz plik. Następnie wstawiamy nasz zmodyfikowany kod do nowego modułu i uruchamiamy makro:

Sub SQLQuery_2()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

Pojawi się okno, w którym możemy wybrać nasz plik Excel (należy nazwać Sumproduct.xlsx lub z innym rozszerzeniem). Znajdujemy i wybieramy. Naciśnijmy ОК , i otrzymujemy te same dane, co z pliku Access.

Artykuły na ten temat: