Istnieje wiele sposobów pobierania danych ze źródeł zewnętrznych do arkusza
Możesz także pobrać dane z Internetu, pliki tekstowe lub inne Excel lub
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
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
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ę
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ć