Es gibt viele Möglichkeiten, Daten aus externen Quellen in ein Arbeitsblatt zu übertragen
Sie können Daten auch aus dem Internet, Textdateien oder anderen Excel oder abrufen
Wir benötigen also eine Datenbankverbindung (variable varConn im Makro unten) und SQL-Abfrage (Variable varSQL ), um den Abruf von Daten aus der Datenbank für den Bericht zu automatisieren. Im Beispiel unten gibt es SQL-Abfrage , das Daten aus einer kleinen Datenbank in MS Access empfängt.
Klicken Laden Sie die Datenbank
Die MS Access-Datei sieht folgendermaßen aus:
Schreiben wir unser Makro, das ausgeführt wird SQL-Abfrage .
Öffnen Sie das Menü Dienst – Makro – Editor Visual Basic , Setzen Sie das neue Modul ein (Speisekarte Insert - Module ) und kopieren Sie den Makrotext dorthin:
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
Klicken Sie auf Speichern und kehren Sie zu Excel zurück. Wählen Sie aus dem Menü Ansicht – Makros (Alt+F8) der Name unseres Makros " SQLQuery_1 ". Es erscheint ein Dialogfeld, drücken Sie darauf Datenbank... , suchen Sie nach unserer Access-Datei und klicken Sie
Jetzt können wir sehen, dass unsere Makroabfrage die Spalten abgerufen hat
Ebenso können wir Daten aus einer regulären Excel-Datei wie aus einer Datenbank abrufen. Dazu muss der Code unseres Makros leicht umgeschrieben und der Verbindungstreiber von Access auf Excel geändert werden.
Wir exportieren die Tabelle
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
Es erscheint ein Fenster, in dem wir unsere Excel-Datei auswählen können (sollte aufgerufen werden).