Automatisierter Import von Excel-Tabellen

Autor: André Minhorst, Duisburg

Es gibt einige Datenbanken, deren Daten nicht direkt in der Datenbank, sondern über den Export von unterschiedlichen anderen Tabellenformaten generiert wird. Sehr beliebt ist hier Microsoft Excel. Der Import des Inhalts einer Excel-Tabelle ist durch die Verwandtschaft von Access und Excel auch leicht mittels Assistenten zu realisieren. Doch wenn es um den immer wiederkehrenden Import einer größeren Anzahl von Tabellen geht, kann das Ganze schnell eintönig werden. Daher lernen Sie im vorliegenden Beitrag, wie Sie den Import bestimmter Tabellen via VBA automatisieren können.

Der Import von Excel-Tabellen kann grundsätzlich auf zwei unterschiedliche Arten erfolgen:

Ersten besteht die Möglichkeit, eine Excel-Tabelle in eine neue Access-Tabelle zu transferieren.

Die zweite Möglichkeit ist der Import der Excel-Tabelle in eine bestehende Access-Tabelle. In dem Fall gibt es wiederum zwei Alternativen:

Entweder man kopiert den kompletten Inhalt der Tabelle in die bestehende Tabelle nachdem man alle bestehenden Datensätze gelöscht hat, oder man kopiert nur die neuen Datensätze in die Tabelle. Dazu muss man lediglich einen eindeutigen Index festlegen, der auch Bestandteil der Excel-Tabelle ist. Im vorliegenden Beitrag lernen Sie die unterschiedlichen Möglichkeiten kennen.

Hinweis

Weitere Informationen zur Zusammenarbeit zwischen Access und Excel können Sie dem Beitrag Access und Excel in der Gruppe 4.14 des Praxishandbuches Access 97 entnehmen.

Mittelpunkt des Imports einer Excel-Tabelle ist die Methode TransferSpreadsheet des DoCmd-Befehls. Mit dieser Methode können Sie eine Excel-Tabelle oder einen Bereich einer Excel-Tabelle in eine vorgegebene Access-Tabelle importieren. Die Syntax der Methode lautet folgendermaßen:

DoCmd.TransferSpreadsheet [Transfertyp], [Spreadsheettyp], Tabellenname, Dateiname, [BesitztFeldnamen], [Bereich]

Für den Parameter Transfertyp können Sie die Konstanten acImport, acExport oder acLink angeben. Im vorliegenden Fall verwenden Sie die Konstante acImport, die auch gleichzeitig der Standardwert ist. Sie können den Parameter also weglassen.

Mit dem Parameter Spreadsheettyp legen Sie die Art der Tabelle fest. Es gibt einige Konstanten für den Parameter, interessant sind aber nur die Konstanten acSpreadsheetTypeExcel8 für Excel 97 bzw. acSpreadsheetTypeExcel9 für Excel 2000. Da die beiden Formate aber identisch sind, haben beide den Wert 8. Dieser Wert entspricht dem Standardwert und daher können Sie ihn auch weglassen.

Die Angabe des Parameters Tabellenname der Access-Tabelle hingegen ist nicht optional: Geben Sie hier unbedingt den Namen der Tabelle Ihrer Access-Datenbank an, in die Sie den Inhalt der Excel-Tabelle importieren möchten. Setzen Sie den Namen in Anführungszeichen.

Dem Parameter Dateiname weisen Sie den Namen der gewünschten Excel-Tabelle zu. Geben Sie den vollständigen Pfad inklusive Dateinamen an und setzen Sie die Information ebenfalls in Anführungszeichen.

Mit dem Parameter Besitzt Feldnamen teilen Sie der Methode mit, ob die erste Zeile der Excel-Tabelle die Feldnamen enthält. Wenn Sie den Wert True(-1) angeben, ignoriert Access die erste Zeile der Tabelle beim Einlesen. Wenn die Tabelle keine Feldnamen enthält (was in der Praxis nicht sehr häufig vorkommen) setzen Sie für den Parameter den Wert False(0) ein.

Schließlich teilen Sie der Methode mit, welchen Bereich der Excel-Datei sie importieren soll. Wenn Sie keinen Bereich angeben, importiert Access das komplette erste Tabellenblatt der Excel-Datei.

Andere Möglichkeiten sind z. B. die Angabe des Namens des gewünschten Tabellenblatts so-wie – falls erforderlich – die Bezeichnung eines festgelegten Bereiches des angegebenen Tabellenblatts oder die Beschreibung des Bereichs.

Die genaue Syntax der erfor-derlichen Angaben erfahren Sie weiter unten.

Um den Import der Excel-Tabellen möglichst komfortabel zu gestalten, erstellen Sie nun ein passendes Formular. Mit seiner Hilfe können Sie anschließend die Excel-Dateien mit den zu importierenden Daten auswählen und den Import starten.

Steuerelemente des Formulars

Das Formular enthält ein Textfeld sowie drei Schaltflächen (s. Abb. 1). Das Textfeld dient zur Eingabe des Namens der Excel-Datei. Die Schaltfläche, die sich unmittelbar neben dem Textfeld befindet, dient zum Aufrufen eines Dialoges zur Auswahl der Datei.

Die Schaltfläche mit der Beschriftung Tabellen importieren startet den Import-Vorgang. Die Schaltfläche mit der Beschriftung Schließen dient zum Beenden des Imports.

Auswahl der Excel-Datei

Die Auswahl der Excel-Datei erfolgt über den von Windows zur Verfügung gestellten Datei öffnen-Dialog. Ein Mausklick auf die Schaltfläche mit den drei Punkten […] aktiviert den Dialog.

Private Sub btnImportieren_Click()
    If txtDateiname = "" Or IsNull(txtDateiname) Then
        MsgBox "Wählen Sie bitte zunächst die gewünschte Excel-Datei aus."
        Exit Sub
    End If
    If Not FileExists(Nz(Me!txtDateiname)) Then
        MsgBox "Die Datei wurde nicht gefunden.", vbExclamation
        Me!txtDatei.SetFocus
        Exit Sub
    End If
    If vbNo = MsgBox("Der Import wird nun gestartet." & vbCrLf & vbCrLf _        & "Möchten Sie fortfahren", vbYesNo + vbExclamation) Then
        Exit Sub
    End If
    ''Importvorgang starten
End Sub

Der benötigte Code soll hier nicht weiter beschrieben werden. Sie finden ihn allerdings in den Modulen der Beispieldatenbank.

Hinweis

Weitere Informationen zur Programmierung des Aufrufs eines Dialoges zur Auswahl der Dateien finden Sie im Beitrag Dateidialoge mit Access öffnen in der Gruppe 5.5 im Praxishandbuch Access 97.

Alternativ kann der Anwender auch den kompletten Namen der Datei inklusive Pfadangabe von Hand eingeben.

Beenden des Import-Dialogs

Mit der Schaltfläche Schließen kann der Anwender den Dialog beenden. Um die Funktionalität der Schaltfläche zu gewährleisten, hinterlegen Sie für die Ereigniseigenschaft Beim Klicken die folgende Prozedur:

Private Sub btnSchliessen_Click()
    DoCmd.Close acForm, Me.Name
End Sub

Starten des Import-Vorganges

Hinter der Schaltfläche mit der Beschriftung Importieren befindet sich eine Prozedur, die den Import-Vorgang startet (Quellcode 1).

Die Prozedur überprüft zunächst, ob der Benutzer überhaupt eine Datei angegeben bzw. ausgewählt hat.

Anschließend kontrolliert die Prozedur das Vorhandensein der angegebenen Datei. Die dazu verwendete Prozedur können Sie der Beispieldatenbank entnehmen.

Schließlich startet ein Aufruf die Funktion zum Importieren der gewünschten Tabelle(n). Sie lernen in den folgenden Kapiteln unterschiedliche Vorgehensweisen kennen, die für verschiedene Einsätze verwendbar sind.

Zuvor jedoch lernen Sie ein wichtiges Feature von Excel kennen: die Möglichkeit, bestimmte Bereiche zu markieren und mit einem Namen zu versehen.

Excel bietet dem Anwender die Möglichkeit, unterschiedliche Bereiche festzulegen und sie zu benennen. Eine der bekanntesten Anwendungen der Benennung von Bereichen ist der so genannte Druckbereich. Der Anwender möchte meist nicht den ganzen Inhalt eines Tabellenblattes ausdrucken, da umfangreiche Kalkulationen meist noch Berechnungsfelder außerhalb der eigentlichen Informationen besitzen. Daher kann er festlegen, welchen Bereich des Tabellenblattes Excel ausdrucken soll.

Das geschieht, indem der Anwender den gewünschten Bereich markiert und anschließend den Menübefehl Datei ( Druckbereich ( Druckbereich festlegen ausführt (s. Abb. 2).

Der Bereich erhält nun den Namen Druckbereich. Sie können einem beliebigen Bereich auch einen selbst ausgewählten Namen zuweisen. Dazu markieren Sie den gewünschten Bereich, klicken anschließend in das Feld, das normalerweise den Zellnamen anzeigt, und geben den Namen des Bereichs ein (s. Abb. 3).

Es fehlt noch die einfachste Form der Benennung eines Bereiches: Sie findet im Register der einzelnen Tabellenblätter statt. Hier können Sie jedem einzelnen Tabellenblatt einen aussagekräftigeren Namen als beispielsweise Tabelle1 geben (s. Abb. 4). Der Bereichsname bezieht sich dann jeweils auf das ganze Tabellenblatt.

Abb. 5: Auswahl eines Druckbereichs in Excel

Schließlich können Sie sämtliche Bereiche der aktuellen Excel-Datei anzeigen lassen. Dazu klicken Sie einfach auf das Kombinationsfeld zur Eingabe der Bereichsnamen (s. Abb. 5). Sie können einen Bereich anzeigen, indem Sie auf seinen Namen klicken.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar