Übertragen von Daten aus ADO-Datenquelle auf Excel mit ADO

Zusammenfassung

Da Microsoft Excel so ein leistungsstarkes Tool zur Datenanalyse, Visual Basic und VBA Entwickler häufig Daten in einem Excel-Arbeitsblatt zu Analysezwecken übertragen möchten. ActiveX Data Objects (ADO) gegenüber diesem Programmieraufgabe mit Microsoft Jet-spezifische Syntax für bestimmte SQL-Befehle beschrieben.

Dieser Artikel beschreibt Programmierung Lösungen und Importfunktionen für Excel Menü-Daten (über die Option Öffnen im Menü Datei ) oder die Verwendung von Microsoft Query (von im Menü Daten auf Externe Daten -Option) wird nicht beschrieben.

Weitere Programmierung Lösungen, die Excel-Automatisierung anstelle von SQL-Befehlen verwenden, finden Sie im Artikel der Microsoft Knowledge Base:

246335 wie übertragen von Daten aus ADO-Recordset auf Excel mit Automatisierung

Weitere Informationen

In den Beispielen stellt CnSrc eine geöffnete Verbindung ADO angek Jet-Datenbank mit dem Jet 4.0 OLE DB-Provider.

Kopieren

SELECT INTO-Anweisung können Sie Daten aus einer beliebigen Datenquelle kopieren, die Jet in Datenzielen, Erstellen einer neuen Tabelle (oder bei Excel ein neues Arbeitsblatt) dynamisch gelesen werden kann. Verwenden Sie nicht die Syntax Dollarzeichen z. B. [Sheet1$] bei Verweisen auf ein Blatt als Ziel. Die Zielarbeitsmappe kann vorhanden oder nicht vorhanden. jedoch muss die Zieltabelle noch nicht vorhanden.

Es gibt drei Möglichkeiten den Copy-Befehl zu schreiben, der die gesamte Kundentabelle aus der Microsoft Access-Datenbank Northwind in ein neues Blatt in einer Excel-Arbeitsmappe kopiert. Jede Syntax erfordert eine einzelne SQL-Anweisung und Spaltenüberschriften in der ersten Zeile der Zieltabelle erstellt.

  • Das folgende Beispiel verwendet die SELECT INTO-Syntax:
    Dim strSQL As StringstrSQL = "SELECT * INTO [Excel 8.0;Database=" & App.Path & _ 
    "\book1.xls].[Sheet1] FROM Customers"
    cnSrc.Execute strSQL

  • Im folgenden Beispiel wird SELECT INTO... Syntax:
    strSQL = "SELECT * INTO [Sheet1] IN '' [Excel 8.0;Database=" & App.Path & _    "\book1.xls] FROM Customers"


    wo dem Zieldatenbankinformationen ein leeres Paar einfacher Anführungszeichen für das Typargument ("Excel 8.0"-Teil) steht die in Klammern eingeschlossen ist, wenn Sie diese Syntax verwenden.
  • Das folgende Beispiel verwendet die alternative Syntax für die IN-Klausel:
    strSQL = "SELECT * INTO [Sheet1] IN '" & App.Path & _    "\book1.xls' 'Excel 8.0;' FROM Customers"

    Das Argument wird nach der Zieldateipfad, jetzt separat aufgeführt.

So hängen

Sie können INSERT INTO... IN-Anweisung Daten aus einer beliebigen Datenquelle kann Datenzielen, Jet einlesen. Der Ziel-Arbeitsmappe und dem Arbeitsblatt müssen vorhanden sein. Da Sie auf ein vorhandenes Arbeitsblatt verweisen, verwenden Sie die standard Dollarzeichen Syntax, z. B. [Sheet1$] bei Verweisen auf ein Blatt als Ziel. Darüber hinaus müssen die Spaltenüberschriften bereits vorhanden sein; Diese Anweisung kann also nur verwendet werden, an eine vorhandene Tabelle anfügen.

Gibt es zwei Arten den Append-Befehl zu schreiben, der die gesamte Kundentabelle aus der Datenbank Northwind in ein vorhandenes Excel-Arbeitsblatt kopiert die bereits die entsprechenden Spaltenüberschriften.

  • Das folgende Beispiel verwendet die INSERT INTO... Syntax:
    strSQL = "INSERT INTO [Sheet1$] IN '' [Excel 8.0;Database=" & App.Path & _    "\book1.xls] SELECT * FROM Customers"

    wo dem Datenbank-Informationen erneut steht ein leeres Paar Anführungszeichen für das Typargument, das jetzt in Klammern eingeschlossen.
  • Das folgende Beispiel verwendet die alternative Syntax für die IN-Klausel:
    strSQL = "INSERT INTO [Sheet1$] IN '" & App.Path & _    "\book1.xls' 'Excel 8.0;' SELECT * FROM Customers"

Referenzen

Weitere Informationen über Jet-spezifische Syntax finden Sie in der Jet SQL Hilfedatei (JETSQL40.chm), besonders die Themen der SELECT INTO-Anweisung INSERT INTO-Anweisung und die IN-Klausel.
Eigenschaften

Artikelnummer: 295646 – Letzte Überarbeitung: 20.01.2017 – Revision: 1

Feedback