Wer oft Daten importiert oder exportiert, wird dies in vielen Fällen mit den entsprechenden Assistenten und den damit erzeugten Spezifikationen erledigen. Falls nicht, erhalten Sie in diesem Beitrag eine kurze Einführung in die notwendigen Schritte. Außerdem erfahren Sie, wo Access die Spezifikationen speichert und wie Sie diese ganz schnell ändern, ohne extra den Assistenten dafür öffnen zu müssen.
Wenn Sie etwa unter Access 2007/2010 einen Export mit dem Assistenten durchführen möchten, finden Sie alles Notwendige im Ribbon-Tab Externe Daten (unter Access 2003 und älter verwenden Sie zum Importieren den Menüeintrag Datei|Externe Daten|Importieren beziehungsweise Verknüpfen und zum Exportieren den Kontextmenüeintrag Exportieren des jeweiligen Objekts im Datenbankfenster). Im Ribbon-Tab Externe Daten klicken Sie einfach auf das gewünschte Ziel beziehungsweise die Quelle (s. Bild 1) und starten so den Assistenten. Nach dem Auswählen der Quell-/Zieldatei sieht der Assistenten dann in allen Access-Versionen des neuen Jahrtausends ähnlich aus.
Bild 1: Aufruf von Import- und Export-Funktionen unter Access 2010
Der Export erfordert einige Vorbereitung: Wenn nicht alle Felder und alle Datensätze einer Tabelle in die Zieldatei, etwa eine Excel-Tabelle, geschrieben werden sollen, müssen Sie eine entsprechende Abfrage erstellen, welche nur die gewünschten Felder aufnimmt und gegebenenfalls die Datensätze durch entsprechende Kriterien einschränkt.
Dafür lässt sich der Assistent anschließend in zwei Schritten abfertigen: Er fragt nur, ob die Datenspalten durch Trennzeichen oder eine fixe Spaltenbreite voneinander getrennt werden sollen und welches Trennzeichen gegebenenfalls verwendet werden soll. Außerdem möchte er wissen, ob die Feldnamen als Spaltenköpfe mitexportiert werden sollen und ob die einzelnen Werte etwa in Anführungszeichen eingefasst werden sollen.
Beim Importieren etwa aus einer Textdatei ist der Assistent naturgemäß etwas neugieriger: Er fragt auch zunächst, ob die Daten in festen Spalten vorliegen oder durch ein Begrenzungszeichen voneinander getrennt sind (s. Bild 5).
Bild 2: Soll mit oder ohne Trennzeichen importiert/exportiert werden
Bild 3: Welches Trennzeichen wird verwendet, welches Textbegrenzungszeichen und wie sieht es mit der ersten Zeile aus
Bild 4: Festlegen von Feldern und Datentypen
Bild 5: Auswählen eines Primärschlüsselfeldes, falls gewünscht
Spezifikationen speichern
Es wird gern übersehen, ist aber enorm wichtig: der Dialog, der sich durch einen Mausklick auf die Schaltfläche Erweitert öffnet (s. Bild 6). Hier finden Sie nämlich nicht nur eine Zusammenfassung der vorgenommenen Einstellungen, sondern auch noch die Möglichkeit, die Einstellungen zu speichern. Dazu klicken Sie auf die Schaltfläche Speichern unter … und geben im folgenden Dialog den Namen der zu speichernden Spezifikation an.
Bild 6: Übersicht und weitere Optionen
Damit schaffen Sie die Voraussetzung für die folgenden Aktionen:
- Sie können einen Import oder Export auf Basis der gespeicherten Spezifikation mit einer einfachen VBA-Anweisung aufrufen.
- Sie können änderungen an der Spezifikation durchführen, indem Sie den Assistenten erneut starten, gleich mit einem Klick auf Spezifikationen… den Dialog Import/Export-Spezifikationen öffnen und dort die gewünschte Spezifikation auswählen. Sie können die Spezifikation dann ändern und unter dem gleichen oder einem anderen Namen sichern.
Import/Export per VBA
Für den Import/Export per VBA gibt es ein paar Methoden des DoCmd-Objekts, zum Beispiel DoCmd.TransferSpreadsheet für Excel-Tabellen oder DoCmd.TransferText für Textdateien.
Wenn Sie beispielsweise den Inhalt der Tabelle tblKategorien in einer Textdatei speichern möchten und dazu bereits eine Export-Spezifikation unter dem Namen Kategorien Exportspezifikation erstellt haben, können Sie dies mit der folgenden Anweisung erledigen:
DoCmd.TransferText acExportDelim, "Kategorien Exportspezifikation", "tblKategorien", CurrentProject.Path & "\Kategorien.txt", True
Der erste Parameter gibt dabei die Export/Import-Art an, der zweite den Namen der Spezifikation, der dritte die Quelltabelle und der vierte die Zieldatenbank.
Der letzte Parameter bestimmt, ob die Feldnamen beim Export in die erste Zeile geschrieben werden sollen.
Auf ähnliche Weise gehen Sie auch beim Importieren von Daten vor – Sie müssen lediglich eine entsprechende Spezifikation anlegen und als ersten Parameter eine der acImport…-Konstanten angeben.
Umständliches Anpassen der Spezifikationen
Wenn Sie eine Spezifikation einmal ändern müssen, weil Sie beispielsweise einen Import mit vielen Feldern erstellt und beim Testen festgestellt haben, dass der Import noch nicht richtig funktioniert, müssen Sie theoretisch jedes Mal erneut den Assistenten öffnen und die Spezifikation laden, ändern und erneut speichern. Das ist sehr unpraktisch, denn der Assistent fragt beispielsweise jedes Mal erneut den Namen der zu importierenden Datei ab. Dabei müssen Sie auch immer wieder zum entsprechenden Quellverzeichnis navigieren, um die Datei auszuwählen, was mit der Zeit nervt.
Zum Glück gibt es noch eine Alternative, die in den folgenden Abschnitten vorgestellt wird.
Speicherort der Spezifikationen
Die Daten einer Spezifikation werden günstigerweise an einer leicht erreichbaren Stelle gespeichert – nämlich in zwei als Systemtabellen markierten Tabellen:
- MSysIMEXSpecs speichert die allgemeinen Daten einer Spezifikation (Bild 6) und
- MSysIMEXColumns enthält die Informationen zu den einzelnen Feldern (siehe Bild 8).
Bild 7: Entwurf der Tabelle MSysIMEXSpecs
Bild 8: Entwurf der Tabelle MSysIMEXColumns
Sollten die Tabellen bei Ihnen nicht sichtbar sein, kann dies zwei Ursachen haben:
- Sie haben noch keine Spezifikation gespeichert. Die Tabellen werden erst erstellt, wenn Sie mindestens eine Spezifikation gespeichert haben.
- Die Access-Optionen sind so eingestellt, dass keine Systemtabellen angezeigt werden. In diesem Fall aktivieren Sie die Anzeige der Systemobjekte. Unter Access 2003 und älter zeigen Sie die Optionen mit Extras|Optionen an, die gesuchte Option Systemobjekte befindet sich unter Ansicht|Anzeigen, unter Access 2007 und jünger klicken Sie mit der rechten Maustaste auf die Titelzeile des Navigationsbereichs und wählen aus dem Kontextmenü den Eintrag Navigationsoptionen… aus – die Option Systemobjekte anzeigen befindet sich unten links.
Spezifikationen bearbeiten
Unter Access 2007 und jünger können Sie die beiden Tabellen MSysIMEXSpecs und MSysIMEXColumns direkt bearbeiten. Sie können dort also sowohl die allgemeinen Einstellungen anpassen als auch die für die einzelnen Felder. Wenn Sie also einen Import etwa unter dem Namen Kategorien Importspezifikation gespeichert haben, ermitteln Sie aus dem Feld SpecID (s. Bild 10).
Bild 9: Ermitteln der SpecID für eine gespeicherte Spezifikation
Bild 10: Bearbeiten der Spalteninformationen in MSysIMEXColumns
Kein Zugriff unter Access 2003 und älter
Wenn Sie dies unter älteren Access-Versionen ausprobieren, werden Sie schnell auf Widerstand stoßen: Die Daten der beiden Tabellen MSysIMEXSpecs und MSysIMEXColumns lassen sich nicht ändern. Genau wie die übrigen Systemtabellen scheinen diese beiden Tabellen geschützt zu sein. änderungen lassen sich offensichtlich nur per Assistent durchführen.