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ć