Excel-Daten richtig verknüpfen

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

Immer wieder mal benötigt man Daten aus externen Quellen wie Excel-Tabellen. Bei Quellen, die selbst noch keine Information über das Datenformat der jeweiligen Spalten mitliefern, kann es manchmal zu Problemen beim Verknüpfen kommen. Dieser Beitrag zeigt, wo es hakt und wie Sie solche Probleme umgehen können.

Das Verknüpfen von Daten aus Excel-Tabellen erledigen Sie beispielsweise mit dem dafür vorgesehenen Assistenten oder per VBA.

Beide Varianten können wie gewünscht funktionieren, aber gerade wenn die Daten von Dritten stammen, ist deren Integrität nicht unbedingt gewährleistet.

Die folgenden Abschnitte zeigen, wie Sie im Optimalfall auf die Daten zugreifen, ohne diese gleich nach Access zu importieren, und wie Sie vorgehen können, wenn nicht gleich alles nach Wunsch gelingt.

Verknüpfung per Assistent

Da die Möglichkeiten für den Aufruf der Assistenten zum Importieren etwa von Excel- oder Textdateien sich bei den aktuellen Access-Versionen stark unterscheiden, beschreiben wir hier einfach deren Aufruf per VBA. Sie können jedes Menü- oder Ribbonelement unter Access mit der RunCommand-Methode aufrufen. Dazu müssen Sie nur die entsprechende Konstante angeben, die in diesem Fall immer mit acCmdImportAttach… beginnt (s. Bild 1).

pic001.png

Bild 1: Aufruf des Import- und Verknüpfungsdialogs per VBA

Zum Importieren oder Verknüpfen einer Excel-Tabelle verwenden Sie also beispielsweise die Anweisung RunCommand acCmdImportAttachExcel, für den Import einer Textdatei RunCommand acCmdImportAttachText.

Mit dem Assistenten zum Verknüpfen von Excel-Tabellen führen Sie nach der Auswahl der Quelldatei nur drei Schritte durch:

  • Auswahl des Bereichs,
  • festlegen, ob die erste Zeile Spaltenüberschriften enthält, und
  • Angabe des Namens der verknüpften Tabelle.

Das bedeutet, dass Access selbstständig erkennen muss, welchen Datentyp die Excel-Daten haben. Access ist dabei relativ faul: Es liest gerade mal die ersten paar Zeilen ein und entscheidet anhand der enthaltenen Daten, welchen Datentyp eine Spalte liefert. Dieser Datentyp wird dann für die Verknüpfung verwendet, was dazu führt, dass etwa eine Spalte, die in den ersten paar Zeilen nur Zahlen enthält, auch mit dem Datentyp Zahl versehen wird. Taucht dann ein paar Zeilen weiter unten eine Zeichenfolge auf, wird diese schlicht nicht importiert.

Verknüpfung per TransferSpreadsheet

Zum Verknüpfen von Excel-Tabellen verwenden Sie alternativ die DoCmd-Methode TransferSpreadsheet. Diese Methode erwartet die folgenden Parameter:

  • TransferType: Gibt die Transfermethode an, zum Beispiel acExport, acImport oder acLink. Zum Verknüpfen verwenden Sie acLink.
  • SpreadsheetType: Typ der Datenherkunft, für Excel 2007 beispielsweise acSpreadsheetTypeExcel12
  • TableName: Name der zu erstellenden Verknüpfung
  • FileName: Pfad und Name der Excel-Datei
  • HasFieldNames: Gibt an, ob die erste Zeile Feldnamen enthält
  • Range: Bereich, zum Beispiel Tabelle1, Tabelle1$A:A oder Tabelle2$A1:C3
  • UseOA: wird nicht unterstützt

Damit können Sie das Verknüpfen mit einer Excel-Tabelle genau so abbilden, wie Sie es sonst mit dem Assistenten erledigen würden.

Probleme mit dem Datentyp

Access legt auch beim Verknüpfen von Daten entsprechende Datentypen fest.

Dies können Sie prüfen, indem Sie die erste Tabelle der Beispieldatei Verknuepfungen.xls aus Bild 2 mit der folgenden Anweisung verknüpfen:

pic003.png

Bild 3: Formatieren der Zellen einer Excel-Tabelle

DoCmd.TransferSpreadsheet acLink,
acSpreadsheetTypeExcel9,
"tblBeispiele",
CurrentProject.Path
& "\Verknuepfung.xls",
True, "Tabelle1$"

Die Spalten dieser Tabelle sind jeweils wie im Spaltenkopf beschrieben formatiert. Die spaltenweise Formatierung nehmen Sie vor, indem Sie den Spaltenkopf markieren und den Eintrag Zellen formatieren aus dem Kontextmenü auswählen. Daraufhin erscheint der Dialog aus Bild 3, mit dem Sie die gewünschte Formatierung festlegen können.

pic002.png

Bild 2: Exceltabelle mit formatierten Beispieldaten

Im ersten Beispiel haben wir alle Spalten entsprechend formatiert. Deshalb sieht die Entwurfsansicht der verknüpften Tabelle auch wie in Bild 4 aus: Alle Datentypen wurden nach den Vorgaben übernommen. Im Falle der Werte Wahr und Falsch hat Access sogar den Datentyp Ja/Nein erkannt und umgesetzt; bei der Spalte, welche die Werte Ja und Nein enthielt, geschah dies leider nicht.

pic004.png

Bild 4: Eine verknüpfte Tabelle in der Entwurfsansicht

Wenn Inhalte nicht dem angegebenen Format entsprechen

An den Formatierungen orientiert sich Access beim Verknüpfen übrigens sehr konsequent. In der Tabelle Formatierte Felder, unsauber I des Excel-Dokuments haben wir die als Dezimalzahl formatierte Spalte einmal komplett mit Texten gefüllt. Das Resultat ist eindeutig, wie Bild 5 zeigt: Das Feld der Verknüpfung wird weiterhin als Zahl formatiert. Demzufolge wird statt der eigentlichen Inhalte der Ausdruck #Zahl! angezeigt.

pic005.png

Bild 5: Texte werden nicht als solche erkannt, wenn die Formatierung eine Zahl vorgibt.

Spalten ohne Formatvorgabe

Und was passiert, wenn die Quelldatei überhaupt keine Formatierung mitliefert Dann prüft Access standardmäßig nur die ersten acht Zeilen, um den Datentyp der Felder der Verknüpfung zu ermitteln. Wenn alle der ersten acht Felder den gleichen Datentyp aufweisen, ist dies kein Problem. Etwa bei Zahlen legt Access die Datentypen auch recht großzügig aus (Feldgröße Double). Bei langen Texten verwendet die Verknüpfung nicht den Datentyp Text, sondern Memo.

Schauen wir uns nun an, was geschieht, wenn die ersten acht Felder Daten unterschiedlicher Formate enthalten (s. Bild 6).

pic006.png

Bild 6: Beispiele für verschiedene Daten in den ersten acht Feldern

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