Exceldaten per SQL und DAO

Im der Artikelreihe „Excel fernsteuern“ haben Sie erfahren, wie Sie per Automation auf eine Excel-Datei zugreifen und dabei Daten aus der Tabelle lesen, schreiben oder bearbeiten können. Die Daten Zelle für Zelle zu durchlaufen ist dabei in vielen Fällen unumgänglich, vor allem, wenn Sie dabei auch noch individuelle Formatierungen unterbringen wollen. Wenn Sie jedoch schnell Daten von Excel nach Access oder umgekehrt bewegen wollen, ohne eine Excel-Instanz zu erzeugen und keine besonderen Anforderungen an die Formatierung haben, gibt es eine praktische Alternative – und zwar eine, bei der Sie sogar von Ihren vorhandenen DAO-Kenntnissen profitieren können.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1803_ExceldatenPerSQLUndDAO.accdb.

Excel-Zugriff per OpenRecordset und SELECT

Wenn Sie per DAO auf die Daten einer Datenbank zugreifen wollen, um diese entweder per VBA zu durchlaufen oder diese zu löschen, anzulegen oder zu bearbeiten, beginnen Sie in der Regel mit dem öffnen eines Recordset-Objekts auf Basis der Tabelle oder Abfrage, in der sich die Daten befinden, die durchlaufen oder bearbeitet werden sollen. Die Syntax für die dazu verwendete OpenRecordset-Methode des Database-Objekts ist dabei hinlänglich bekannt – Sie benötigen zwei Objektvariablen namens db und rst und dann geht es los:

Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("SELECT *                  FROM tblArtikel", dbOpenDynaset)
'... etwas mit den Datensätzen machen

Benötigte Excel-Informationen

Aber wie können wir das nun für den Zugriff auf die Daten einer Excel-Tabelle wie etwa der aus Bild 1 nutzen Dazu benötigen wir nur einige wenige Informationen über die Excel-Daten, auf die wir zugreifen wollen:

Formular-Entwurf unseres Beispielformulars

Bild 1: Formular-Entwurf unseres Beispielformulars

  • den Dateinamen inklusive Verzeichnis,
  • den Namen der Tabelle und
  • den Bereich, auf den wir zugreifen wollen.

Den Rest bekommen wir durch geschickte Formulierung der SELECT-Abfrage hin. Diese ist gar nicht so viel komplizierter aufgebaut wie eine herkömmliche SELECT-Anweisung – wenn man weiß, wie es geht. Ein Beispiel ist das folgende:

SELECT * FROM [Artikelliste$A:J] IN 'C:\...\Artikel.xlsx'[Excel 8.0;HDR=No;IMEX=0;]

Diese Abfrage erwartet hinter dem FROM-Schlüsselwort den Namen der Tabelle in der Excel-Datei (hier Artikelliste)und davon durch ein Dollar-Zeichen ($) getrennt den betroffenen Bereich, hier A:J. Dieser Ausdruck muss in eckigen Klammern zusammengefasst werden. Danach müssen wir allerdings noch angeben, in welcher Datei sich die Daten befinden. Diese geben wir mit dem IN-Schlüsselwort an.

Access [basics]

Unser exklusives Angebot für Dich!

Access im Unternehmen
7,90 € im Monat*

(Das Abo ist jederzeit monatlich kündbar)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →