Per ODBC auf Excel zugreifen

Immer noch nutzen viele Anwender Excel als preiswerten Datenbankersatz – nicht immer freiwillig, sondern oft auch, weil sich die Firma dadurch massenweise Access-Lizenzen einspart. Sollen diese Daten dann zentral in einer Access- Anwendung weiterverarbeitet oder abgeglichen werden, ist das ein Problem. Eine Lösung ist die Datenbankverbindung per ODBC oder OleDB-Provider, aber auch sie hat ihre Einschränkungen und Tücken.

Der Zugriff auf Excel-Daten über eine Datenbankverbindung erfordert, dass die Excel-Daten ähnlich wie in einer Datenbank angeordnet sind. Nicht jedes Tabellenblatt ist daher für den Datenzugriff geeignet.

Anforderung an die Excel-Daten

Damit Sie auf Excel-Daten mittels ODBC zugreifen können, benötigen Sie die Daten mit einem tabellarischen Aufbau, bei dem die Datensätze in Zeilen und die Felder in Spalten angeordnet sind. Die Daten müssen also prinzipiell wie in Access-Tabellen vorliegen.

Allerdings gibt es in Excel natürlich keine Feldnamen, sodass Sie auf andere Weise dafür sorgen müssen, dass die Spalten einen Namen bekommen, den Sie dann auch in Abfragen verwenden können. Dazu müssen Sie in die erste Zeile derm Tabellenblätter die Spaltenüberschriften einfügen, die dann als Feldnamen verwendet werden. Achten Sie daher darauf, dass die erste Zeile nurgültige Zeichen in den Feldern enthält. Leerzeichen sind zulässig, machen aber doch Probleme, Sie sollten daher möglichst keine Leerzeichen verwenden. Diese erste Zeile sollten Sie außerdem mit einer besonderen Formatierung versehen, z.B. indem Sie die Zellen fett formatieren. In der zweiten Zeile und den weiteren Zeilen sollten die Daten stehen. Wenn Sie den Zellbereich mit den Daten nicht benennen möchten, sollten Sie darauf achten, dass es keine Leerzeilen gibt und die Daten lückenlos untereinander stehen.

Der Name des Tabellenblatts entspricht den Tabellennamen von Access. Ihn benötigen Sie zum Zugriff auf das Tabellenblatt in den SQL-Anweisungen. Sie sollten also wie in Access auch einen sinnvollen Namen für das Tabellenblatt definieren (Bild 1).

Bild 1: Aufbau der Excel-Tabelle.
Bild 1: Aufbau der Excel-Tabelle.

Wo Sie die Arbeitsmappe speichern, spielt eigentlich keine Rolle, da Sie den Pfad beim erbindungsaufbau angeben müssen. Die Beispielanwendung geht jedoch davon aus, dass die Datei sich im gleichen Verzeichnis wie die Datenbank befindet.

Eingeschränkte Nutzung

Zwar funktioniert der nachfolgend vorgestellte Code grundsätzlich unter Access 2000 und höher, allerdings nicht mehr, wenn für Office XP Service-Pack 3 beziehungsweise für Office 2003 Service Pack 2 oder ein Update für Access installiert wurde, das nach diesen Service-Packs erschienen ist.
Der Grund liegt darin, dass Microsoft aus rechtlichen Gründen die Aktualisierung von Excel-Daten per ODBC aus Access 2002/2003 deaktiviert hat. Dies gilt nicht nur für die hier vorgestellte VBA-Lösung, sondern auch für normale verknüpfte ODBC-Excel-Tabellen innerhalb von Access.