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 6/2003.

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

Von Access nach Excel und zurück

Manfred Hoffbauer, Düsseldorf

Access verfügt über mehrere komfortable Methoden für den Datenaustausch mit Excel-Arbeitsblättern. Wer diese Methoden häufig nutzt, kann seine Arbeit mit dem Assistenten aus diesem Beitrag weiter optimieren: Er speichert die Einstellungen für den Datenaustausch mit Excel in einer Tabelle.

Die Menübefehle

Für den gelegentlichen Datenaustausch mit Excel sind die Menübefehle von Access am besten geeignet.

Sie sind ohne zusätzliche Installationsarbeiten sofort verfügbar.

Tabelle speichern unter

Das Exportieren einer Access-Tabelle in ein Excel-Arbeitsblatt erfolgt über den Befehl Datei/Speichern unter/Exportieren.

Zur Anwendung des Befehls gehen Sie wie folgt vor:

  • Öffnen Sie das Datenblatt der Tabelle, die Sie exportieren wollen.
  • Wählen Sie den Befehl Datei ( Speichern unter/Exportieren aus der Menüzeile.
  • Markieren Sie in dem sich öffnenden Dialog mit der Titelzeile Speicher unter ... die Option In eine externe Datei oder Datenbank.
  • In dem sich öffnenden Dialog Speichern Tabelle ‚Name’ in ... legen Sie das Laufwerk, den Ordner, den Dateinamen und den Dateityp der Zieldatei fest.
  • Mit einem Klick auf den Button Exportieren starten Sie den Vorgang. (
  • Mit dem Kombinationsfeld Dateityp bestimmen Sie das Format der Datei, in welche die Tabelle exportiert wird
    (s. Abb. 1). Access zeigt in der Liste mit der Beschriftung Dateityp alle Dateitypen an, in die es exportieren kann.

    Abb. 1: Mit der Liste Dateityp legen Sie das Format für die Exportdatei fest.

    Für einen Export in ein Excel-Arbeitsblatt sollten Sie einen der mit Microsoft Excel gekennzeichneten Dateitypen auswählen.

    Abb. 2: Die exportierte Datei sollte sich mit Excel öffnen lassen.

    Mit der Auswahl eines Dateityps passt Access die Erweiterung der Zieldatei an. Wenn Sie beispielsweise Microsoft Excel als Dateityp auswählen, dann ändert sich die Dateierweiterung auf .xls.

    Ein Klick auf die Schaltfläche Exportieren startet den Vorgang. Access generiert die Arbeitsblattdatei und schließt den Dialog. Zur Kontrolle können Sie die generierte Datei mit Excel öffnen (s. Abb. 2).

    Externe Daten importieren

    Der Befehl Datei ( Externe Daten ( Importieren ist das Gegenstück zu Speichern unter.

    Mit diesem Befehl importieren Sie die Daten aus einem Excel-Arbeitsblatt in eine Access-Tabelle. Zur Anwendung des Befehls gehen Sie wie folgt vor:

  • Wählen Sie den Befehl Datei ( Externe Daten ( Importieren aus der Menüzeile.
  • In dem sich öffnenden Dialog Importieren sollten Sie als Erstes den Dateityp (zum Beispiel Microsoft Excel (*.xls)) der zu importierenden Datei auswählen.
  • Nach der Auswahl des Dateityps zeigt der Dialog nur noch Ordner und die Dateien des gewählten Typs an. Im Beispiel werden also nur noch Ordner und Excel-Arbeitsblätter angezeigt.
  • Markieren Sie die Datei, die Sie importieren wollen.
  • Ein Klick auf die Schaltfläche Importieren öffnet den Dialog Import-Assistent für Kalkulationstabellen, mit dem Sie weitere Einstellungen vornehmen können.
  • Wählen Sie auf jeder der folgenden Dialogseiten die gewünschten Optionen und klicken Sie jeweils auf die Schaltfläche Weiter.
  • Mit einem Klick auf die Schaltfläche Fertig stellen starten Sie den Importvorgang entweder von der letzten Dialogseite des Assistenten oder von einer vorherigen. Falls Sie vor der letzten Dialogseite auf Fertig stellen klicken, setzt Access für die restlichen Optionen Standardwerte ein. (
  • Abb. 3: Der Import-Assistent für Kalkulationstabellen bietet fast die gleichen Optionen wie die TransferSpreadsheet-Methode.

    Ein genauer Blick auf die verschiedenen Optionen des Import-Assistenten für Kalkulationstabellen lohnt sich auf jeden Fall. Der Grund: Die meisten Optionen finden Sie später in der TransferSpreadsheet-Methode wieder.

    Tabellenblätter und benannte
    Bereiche

    Der Import-Assistent für Kalkulationstabellen zeigt auf der ersten Dialogseite eine Auswahlliste der Tabellenblätter der Excel-Arbeitsblattdatei an. Die Tabellenblätter sind die Register des Arbeitsblatts.

    Über eine zweite Option können Sie eine Liste der benannten Bereiche des Arbeitsblatts abfragen. Diese Option ist nur dann sinnvoll, wenn Sie die zu importierenden Daten vorher in Excel als benannten Bereich definiert haben.

    Erste Zeile enthält
    Spaltenüberschriften

    Auf der zweiten Dialogseite stellen Sie mit dem gleichnamigen Kontrollkästchen ein, ob die erste Zeile der zu importierenden Excel-Datei die Feldnamen enthält. Falls Sie das Kontrollkästchen ankreuzen, verwendet Access die Bezeichnungen in der ersten Zeile als Feldnamen für die Importtabelle.

    Optionen für die Importtabelle

    Auf den nächsten drei Dialogseiten können Sie mehrere Optionen für die Importtabelle festlegen. Der Import kann in eine neue oder eine bestehende Tabelle erfolgen.

    Außerdem können Sie für jede Spalte aus der Excel-Tabelle ein Datenfeld in der Access-Tabelle zuweisen, Sie können Datentypen festlegen, Feldnamen ändern und einiges mehr. Diese Optionen stehen in der TransferSpreadsheet-Methode nicht zur Verfügung und werden deshalb an dieser Stelle nicht weiter erläutert.

    Assistent im Eigenbau

    Die Menübefehle für den Datenaustausch sind sehr komfortabel, erfordern aber auch die Einstellung zahlreicher Optionen. Mit dem Assistenten aus diesem Beitrag können Sie wiederkehrende Aufgaben weiter optimieren. Er bietet Ihnen die Möglichkeit, die verschiedenen Optionen in einer Tabelle zu speichern. Damit können Sie mehrere Import- und Exportvorgänge einmal festlegen und jederzeit wieder abrufen.

    Hinweis

    Die für Access 97 geeignete Version des Assistenten finden Sie in der Datenbank TransferSpreadsheet97.mdb. Die Version für Access 2000 und XP ist in der Datenbank TransferSpreadsheet2000.mdb enthalten. (

    Das genaue Äquivalent zu den Menübefehlen von Access ist die TransferSpreadsheet-Methode. Sie können diese Methode als TransferArbeitsblatt-Methode in Makros oder als TransferSpreadsheet-Methode in VBA verwenden. Die Programmierung des Assistenten erfolgt mit VBA.

    Die Parameter der
    TransferSpreadsheet-Methode

    Die Syntax für den Aufruf der TransferSpreadsheet-Methode lautet wie folgt:

    DoCmd.TransferSpreadsheet [Transfertyp]
    [, Dateiformat], Tabellenname, 
    Dateiname[, Besitzt Feldnamen][, Bereich]

    Die Beispieldatenbank zu diesem Beitrag enthält ein Formular, mit dem Sie alle Parameter der TransferSpreadsheet-Methode einstellen und in einer Tabelle speichern können.

    AAbb. 4: Das Formular des Datentransfer-Assistenten

    Damit können Sie die Einstellungen für mehrere Im- und Exportvorgänge komfortabel verwalten und jederzeit wieder abrufen. Das Formular hat den Namen frmTransfers, die Tabelle heißt tblTransfers.

    Transfertyp

    Für den optionalen Parameter Transfertyp können Sie die folgenden drei Parameter angeben:

    Parameter

    Wert

    acImport

    0

    acExport

    1

    acLink

    2

    Tab. 1: Die zulässigen Werte für Transfertyp

    Damit diese Werte nicht nur als Konstanten in VBA, sondern auch für den Assistenten verfügbar sind, wurde die Tabelle tblTransfertypen angelegt. Sie speichert die Werte aus obiger Tabelle in den Feldern TransfertypID und Transfertyp.

    Abb. 5: Das Datenblatt der Tabelle tblTransfertypen

    Beim Aufruf der TransferSpreadsheet-Methode steuert der Transfertyp die durchzuführende Aktion. Sie können mit der gleichen Methode Daten importieren oder exportieren.

    Im Formular frmTransfers können Sie den Transfertyp über ein Kombinationsfeld auswählen. Das Formular speichert die TransfertypID des ausgewählten Eintrags im gleichnamigen Feld der Tabelle tblTransfers. Das Feld TransfertypID ist ein Nachschlagefeld, das mit der Tabelle tblTransfertypen verknüpft ist.

    Dateiformat

    Mit dem Parameter Dateiformat legen Sie das Format der Datei fest, aus der Sie Daten importieren oder in die Sie Daten exportieren wollen. Auch diese Parameter sind als Konstanten in VBA definiert. Die Tabelle tblDateiformate enthält die mit Access 97 und Excel verwendbaren Dateiformate.

    Der Datentransfer-Assistent speichert das ausgewählte Dateiformat im Feld DateiformatID der Tabelle tblTransfers. Es handelt sich um ein Nachschlagefeld, das mit der DateiformatID aus tblDateiformate verknüpft ist. Wenn Sie einen Listeneintrag aus dem Kombinationsfeld auswählen, dann speichert Access automatisch die entsprechende ID in der Tabelle.

    Abb. 6: Diese Dateiformate stehen ab Access 97 zur Verfügung.

    Hinweis

    Das Dateiformat acSpreadsheetTypeExcel9 ist erst ab Access 2000 verfügbar. Die Konstante hat wie acSpreadsheetTypeExcel97 den Wert 8. Der Grund besteht darin, dass die Dateiformate von Excel 97 und Excel 2000, zumindest soweit es den Datenaustausch mit Access angeht, kompatibel sind. Die Konstante acSpreadsheetTypeExcel97 heißt bei Access 2000 acSpreadsheetTypeExcel8. (

    Tabellenname

    Mit dem Parameter Tabellenname geben Sie den Namen einer Access-Tabelle als Zeichenkette an. Beim Importieren ist dies der Name der Tabelle, in die die Daten des Arbeitsblatts importiert werden. Beim Exportieren ist es der Name der Tabelle, deren Daten Sie exportieren wollen.

    Access fügt beim Importieren die Daten automatisch an eine bestehende Tabelle an. Dies kann nur dann funktionieren, wenn die Datenfelder und -typen der Tabelle zu den Importdaten passen. Sie können auch den Namen einer neuen Tabelle angeben - Access legt diese Tabelle dann automatisch neu an. Die neue Tabelle erhält die Datenfelder und -typen, die nach einer Analyse der Exceldatei am besten zu passen scheinen.

    Private Sub TabellenLesen()

        Dim tdf As TableDef

        Dim sSource As String

        For Each tdf In CurrentDb.TableDefs

            If ((tdf.Attributes And dbSystemObject) Or _

                (tdf.Attributes And dbHiddenObject)) = 0 _
                Then

                sSource = sSource & tdf.Name & ";"

            End If

        Next

        If Len(sSource) > 0 Then

            sSource = Left(sSource, Len(sSource) - 1)

        End If

        Me.Tabellenname.RowSource = sSource

    End Sub

    Quellcode 1

    Falls Sie in eine bestehende Tabelle importieren oder aus einer bestehenden Tabelle exportieren wollen, dann können Sie den Tabellennamen einfach aus dem Kombinationsfeld Tabellenname auswählen.

    Die Eigenschaft Herkunftstyp des Kombinationsfeldes hat den Wert Wertliste. Das Füllen der Wertliste erfolgt über den Aufruf der Prozedur TabellenLesen in der Beim Öffnen-Ereigniseigenschaft des Formulars. Die Prozedur können Sie Quellcode 1 entnehmen.

    Die Schleife durchläuft alle Tabellen der aktuellen Datenbank. Die Namen der Tabellen werden durch Semikola getrennt in einer Zeichenkette aneinandergefügt. Die Systemtabellen der Datenbank und eventuell vorhandene versteckte Tabellen werden dabei übersprungen.

    Die Trennung durch Semikola bewirkt, dass die entstehende Zeichenkette direkt der Eigenschaft Datensatzherkunft des Kombinationsfeldes zugewiesen und dort angezeigt werden kann.

    Fast automatische Erkennung von
    Datentypen

    Access analysiert beim Import nicht alle Zeilen des Arbeitsblatts. Befinden sich in einem Arbeitsblatt mit 100 Zeilen in einer Spalte nur ganze Zahlen, dann legt Access für diese Spalte ein Feld mit dem Datentyp Zahl - Double an.

    Wenn Sie in die Zeilen 50 und 75 eine Zeichenkette wie beispielsweise "x" eingeben, bleibt es bei dem Double-Feld. Nur bei den Datensätzen, die aus den Zeilen 50 und 75 importiert werden sollen, bleibt das Feld leer. Ursache: Das "x" lässt sich nicht in einen Double-Wert umwandeln.

    Wenn Sie aber in die dritte Zeile ein "x" eingeben, dann legt Access für diese Spalte ein Feld mit dem Datentyp Text an. Es liegt also nahe, dass Access nur die Datentypen der ersten Zeilen aus dem Excel-Arbeitsblatt analysiert.

    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:

    Verwandte Beiträge:

    Excel-Daten importieren mit TransferSpreadsheet

    Excel-Import-Assistent im Eigenbau

    Outlook und Access - Import und Export von Access-Daten

    Excel automatisieren

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.