window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Exceldaten per SQL und DAO

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar