Importspezifikation / Exportspezifikation

Werden Daten (in einem Flatfile-Format  – also txt, csv etc.) nach Access importiert oder aus Access exportiert, wird von Access automatisch ein Assistent aufgerufen, der beim Import bzw. Export unterstützen soll. Muss man häufiger im- oder exportieren und haben die Daten immer das gleiche oder ein ähnliches Format, kann man die Einstellungen aus dem Assistenten auch speichern.

Dies geht ganz einfach über die Schaltfläche im Assistenten ”Weitere…”
So können die Einstellungen als  Import- oder Exportspezifikation gespeichert werden.

Hat man nun eine oder mehrere Spezifikationen angelegt, so kommt man früher oder später an den Punkt, wo man Änderungen an den Spezifikationen vornehmen will oder muss. Ein Weg ist, die jeweilige Spezifikation neu zu erstellen, aber wer will das schon. Es gibt aber auch noch andere Möglichkeiten:

Die Spezifikationen werden in zwei Systemtabellen in Access gespeichert. Diese Tabellen kann man sich auch anzeigen lassen:
Extras – Optionen, Reiter Ansicht: Anzeigen Systemobjekte
Man wird nun ein paar weitere Tabellen in seiner Datenbank angezeigt bekommen. Relevant sind die Tabellen “MSysIMEXSpecs” hier sind die Spezifikationen angelegt und “MSysIMEXColumns” hier werden die einzelnen Spalten und deren Eigenschaften abgelegt.
Soweit sind die meisten schon gekommen und werden nun sagen: “Klar kann ich mir die Daten anzeigen lassen, aber ändern kann ich sie nicht!”
Diese Aussage ist halb richtig. Direkt in den Tabellen lassen sich die Daten der Spezifikationen tatsächlich nicht ändern, aber es gibt einen kleinen Trick:

Verknüpft man diese beiden Systemtabellen in eine zweite Datenbank, werden die Tabellen – oh Wunder – via Verknüpfung editierbar. Man sollte allerdings genau wissen, was man tut. Bei Fehlern können unangenehme Nebenwirkungen auftreten - also Vorsicht! 

In den IMEX-Tabellen werden die wenigsten Daten in Klarschrift angezeigt, deshalb hier schon mal als kleine Hilfe eine Übersicht der Datentypen.
Datentypen und Feldlängen sind erfahrungsgemäß die Dinge, die sich am häufigsten ändern.

DataType

DataTypeNum DataTypeTEXT
1 Boolean
2 Byte
3 Integer
4 Long Integer
5 Currency
6 Single
7 Double
8 Date/Time
10 String
11 OLE-Objekt
12 Memo
13 Hyperlink

Eine weitere Möglichkeit die IMEX-Tabellen zu manipulieren, besteht in einem Makro, dass die gewünschten Informationen ändert.

Man kann aber in vielen Fällen auch ganz auf Import- und Exportspezifikationen verzichten und nutzt die wesentlich vielseitigere schema.ini. Die schema.ini ist flexibel an die jeweiligen Bedürfnisse anpassbar.

Schreib was...

Kommentar von Bernd | 26.08.2010

Hallo,

Ihr Tipp, über eine Verknüpfung die Attribute der “MSysIMEXSpecs” zu ändern hat mir gerade das Leben gerettet ;-)
So konnte ich aus einer Importspezifikation durch Änderung der StartRow eine prima Exportspezifikation mit Formatangaben machen.

Funktioniert prima !

Danke und Gruß
Bernd

Antwort von Robert

Freut mich, dass es geholfen hat. Lächelnd
Wobei sich Formate im Export noch besser mit einer schema.ini beeinflussen lassen.

Kommentar von Arek | 30.04.2014

Hallo,
Problem: ab Access 2007 werden Kommas als Trennzeichen verwendet bei einem csv/txt-Export. Abhilfe schafft eine Import/Export-Spec oder schema.ini.
Oft weiß man jedoch gar nicht welche Spalten man denn Exportieren möchte..eigentlich möchte man einfach den standard-Export, jedoch weiterhin Semikolons, anstatt Kommas.
Im Internet kursieren ganze Code-Seiten, nur um eine flexible schema.ini dynamisch zu erzeugen..
Habe gerade (durch die Info hier) einen sehr einfachen Weg entdeckt:
-Exportspec erstellen/speichern
-links in der Navigations-Leiste mit den Access-Objekten->rechtsklick->Navigationsoptionen
-Systemobjekte anzeigen anklicken: Die Tabelle "MSysIMEXColumns" wird sichtbar
-hier stehen die zu importierenden/exportierenden Spalten. Einfach alle löschen...

Nun kann ganz gewohnt:
DoCmd.TransferText.... die Exportspec eingebunden werden.

Semikolon als Trennzeichen, eingestelltes Dezi-Trennzeichen usw. läuft. Trotzdem werden flexibel alle Spalten exportiert!

Gruß
Arek

Antwort von Robert

Eine schön einfache Lösung für (Voll-) Exporte, denn die Spalten kann man so wohl nur durch die zugrundeliegende Datenbasis beeinflussen, gefällt mir :)