TOP

SQL-Abfrage mit VBA Excel

Beschreibung

Es gibt viele Möglichkeiten, Daten aus externen Quellen in ein Arbeitsblatt zu übertragen Excel . In diesem Artikel schauen wir uns an, wie man Daten aus einer Datenbankdatei abfragt MS Access und aus einer Datei Excel durch die Nutzung SQL In VBA . Ja, wir werden es ein wenig durcheinander bringen SQL mit VBA ! Und es ist besser, als Sie vielleicht denken!

SQL steht für Structured Query Language (Strukturierte Abfragesprache) und ist eine Sprache zum Abrufen von Informationen aus Datenbanken (z. B MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL und andere).

Sie können Daten auch aus dem Internet, Textdateien oder anderen Excel oder abrufen CSV Dateien.


1. SQL-Abfrage von Excel VBA zur Datei MS Access

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 MS Access (test.mdb) .

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 Month , Product Und City vom Tisch Sumproduct aus der Datenbank test.mdb zur Datei Excel.

2. SQL-Abfrage von VBA an die geschlossene Datei Excel

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 Sumproduct aus Access in Excel und speichern Sie die Datei. Als nächstes fügen wir unseren geänderten Code in ein neues Modul ein und führen das Makro aus:

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). Sumproduct.xlsx oder mit einer anderen Erweiterung). Wir finden und wählen es aus. Lasst uns drücken ОК , und wir erhalten die gleichen Daten wie aus der Access-Datei.

Artikel zum Thema: