Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2011.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erfahren Sie, wie Sie mit SQL-Anweisungen auf den Inhalt von Excel-Tabellen zugreifen.

Techniken

Datenzugriff, Excel, SQL

Voraussetzungen

Access 2000 und höher

Beispieldateien

ExcelDatenzugriff.mdb, Namen.xls

Shortlink

www.access-im-unternehmen.de/780

Excel im Zugriff per SQL, DAO und Co.

André Minhorst, Duisburg

Auf Excel-Dateien greift man am einfachsten durch einen entsprechenden Import oder eine Verknüpfung zu. Gelegentlich macht es auch Sinn, per Automation durch die Zellen zu huschen, um die gewünschten Informationen zu lesen oder zu schreiben. Eine wenig beachtete Möglichkeit ist die, per SQL oder DAO auf die in einer Excel-Tabelle gespeicherte Tabelle zuzugreifen.

Zu Beispielzwecken verwenden wir eine ganz einfache Excel-Datei, die unter dem Namen c:\Excel\Namen.xls gespeichert ist und im Dateiformat von Excel 97-2003 vorliegt. Die erste Tabelle dieser Datei sieht wie in Abb. 1 aus.

pic001.png

Abb. 1: Eine einfache Excel-Tabelle zum Experimentieren

Sie könnten nun per Verknüpfung, Import oder sogar per Automation auf die Daten dieser Tabelle zugreifen. Wir gehen diesmal allerdings einen ganz anderen Weg, nämlich über SQL. Access stellt einen ISAM-Treiber zur Verfügung, über den Sie mit einer SQL-Abfrage auf die in der Excel-Datei gespeicherten Daten zugreifen können.

Um dies auszuprobieren, legen Sie in einer Access-Datenbank eine SQL-Anweisung mit dem folgenden Text an:

SELECT * FROM [Tabelle1$] IN 'C:\Excel\Namen.xls' [Excel 8.0;HDR=No;IMEX=0;]

Neben der Angabe der Quelldatei mit der IN-Klausel sind vor allem die Informationen in eckigen Klammern wichtig. Der erste Teil gibt die Excel-Version an, in der die Datei vorliegt. Hier gelten nicht die üblichen Versionsnummern, denn das Dateiformat ist zum Beispiel von Excel 97 bis Excel 2003 gleich geblieben. Hier lautet die entsprechende Nummer 8.0.

Der Parameter HDR legt fest, ob die erste Zeile Spaltenüberschriften enthält. No bedeutet keine Zeilenüberschriften. IMEX legt schließlich die Zugriffsart fest (0: exportieren, 1: importieren, 2: verknüpfen). Im Gegensatz etwa zur Methode DoCmd.TransferSpreadsheet, wo der Parameter TransferType festlegt, ob die Daten von Excel nach Access importiert oder verknüpft werden oder ob die Daten von Access aus in eine Excel-Tabelle geschrieben werden, findet hier immer eine Verknüpfung statt.

Allerdings erlaubt nur der Wert 0 für den Parameter IMEX das Ändern von Daten in der auf diese Weise verknüpften Excel-Datei.

Achtung: HDR scheint nicht immer zu funktionieren; prüfen Sie das für Ihre Kombination aus Jet- und Office-Version. Gegebenenfalls wird die Einstellung nicht beachtet und die erste Zeile wird immer als Quelle für die Spaltenüberschriften verwendet.

In diesem Fall sollten Sie sicherstellen, dass diese auch Spaltenüberschriften enthält - anderenfalls verwendet Access die Werte der ersten Zeile als Feldnamen.

Erster Zugriff

Passen Sie die oben vorgestellte SELECT-Anweisung an Ihre Gegebenheiten an und probieren Sie diese dann aus. Dazu öffnen Sie eine Abfrage in der Entwurfsansicht, klicken den Dialog Tabelle anzeigen weg und wechseln zur SQL-Anzeige. Dort tragen Sie dann den SQL-Ausdruck ein und aktivieren die Datenblattansicht der Abfrage.

Das Ergebnis überzeugt: Es werden alle Daten der Excel-Tabelle angezeigt (s. Abb. 2). Und auch das Aktualisieren der Daten in der Access-Abfrage wirkt sich gleich auf den Inhalt der Excel-Tabelle aus (s. Abb. 3).

pic002.png

Abb. 2: Ergebnis einer SQL-Abfrage in einer Excel-Tabelle

pic003.png

Abb. 3: Änderungen in der Abfrage werden gleich nach dem Speichern im Excel-Sheet aktualisiert

Auch das Ändern und Löschen von Daten in der Excel-Tabelle macht sich schnell in der Access-Abfrage bemerkbar. Wenn Sie jedoch neue Zeilen oder Spalten zur Excel-Tabelle hinzufügen, bemerkt Access dies erst nach dem Schließen und erneuten Öffnen der Abfrage. Der Hintergrund ist wohl, dass Access beim ersten Abfragen den zu untersuchenden Bereich des Excel-Sheets festlegt - und wenn dann zur Laufzeit Daten außerhalb dieses Bereichs eingegeben werden, werden diese schlicht nicht berücksichtigt.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.