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/2009.

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

Zusammenfassung

Importieren Sie Excel-Daten mit der DoCmd.TransferSpreadsheet-Methode

Techniken

Excel, VBA

Voraussetzungen

Access 2000 oder höher

Beispieldateien

-

Shortlink

692

Excel-Daten importieren mit TransferSpreadsheet

André Minhorst, Duisburg

Die TransferSpreadsheet-Methode des DoCmd-Objekts ist die erste Wahl, wenn es um das Importieren von Excel-Daten per VBA geht. Und auch wenn die Online-Hilfe diese Methode auf einer Bildschirmseite abhakt, gibt es doch einiges mehr zum praktischen Umgang damit zu berichten.

Grundsätzlich können Sie mit der TransferSpreadsheet-Methode nicht nur Daten importieren, sondern auch Verknüpfungen mit Excel-Tabellen erstellen und Daten aus Access-Tabellen nach Excel exportieren. Wir wollen uns in diesem Beitrag jedoch auf den Import konzentrieren. Die Syntax der TransferSpreadsheet-Methode sieht so aus (es gibt noch einen letzten Parameter, der aber nicht verwendet wird):

DoCmd.TransferSpreadsheet(<Transfertyp>, <Dateiformat>, <Tabellenname>, <Dateiname>, <Besitzt Feldnamen>, <Bereich>)

Da wir mit TransferSpreadsheet Daten aus Excel importieren möchten, kommt uns der erste Parameter ganz recht: Mit ihm legen Sie die Art des Datentransfers fest. Dazu verwenden wir den Parameter acImport (die übrigen Konstanten lauten acExport und acLink).

Als Nächstes müssen wir der Methode mitteilen, mit welcher Excel-Version wir es zu tun haben. Wenn Sie die TransferSpreadsheet-Methode für sich selbst verwenden, werden Sie wissen, mit welcher Excel-Version Sie arbeiten. Wenn Sie diese aber in eine Software einbauen, die Sie weitergeben möchten, ist dies möglicherweise nicht der Fall: Dann kann es durchaus vorkommen, dass nicht die gewünschte Excel-Version vorliegt. Also müssen wir herausfinden, um welche Version es sich handelt. Eine einfache Variante erfordert das Erzeugen einer Excel-Instanz und sieht so aus:

Public Function ExcelVersion() As String

    Dim objExcel As Excel.Application

    On Error Resume Next

    Set objExcel = _

    CreateObject("Excel.Application")

    If Err.Number = 0 Then

        With objExcel

        ExcelVersion = .Version

        End With

    End If

    objExcel.Quit

    Set objExcel = Nothing

End Function

Die letzten beiden Zeilen sind theoretisch nicht notwendig, weil die Excel-Instanz mit dem Verlassen des Gültigkeitsbereichs der Variablen objExcel ohnehin zerstört wird, aber Ordnung muss sein. Die obige Funktion liefert für Access 2007 beispielsweise den Wert 12.0 zurück - das ist nicht der Wert, den die TransferSpreadsheet-Methode für den Parameter SpreadsheetType erwartet. Die möchte vielmehr eine der dafür vorgesehenen Konstanten sehen, also beispielsweise acSpreadsheetTypeExcel12, was dem Zahlenwert 9 entspricht. Wie aber gelangen wir von einem String-Ausdruck wie 12.0 zu einer Konstanten wie acSpreadsheetTypeExcel12? Wir werden hier wohl nicht um den Einsatz eines Mappings herumkommen, das wie folgt aussieht:

Public Function GetSpreadsheet(strVersion As _

    String)

    Dim intSpreadsheetType As Integer

    Select Case Val(strVersion)

    Case 12 'Excel 2007

    intSpreadsheetType = 9

    Case 11, 10, 9, 8 'Excel 97-2003

    intSpreadsheetType = 8

    End Select

    GetSpreadsheetType = intSpreadsheetType

End Function

Excel-Versionen älter als Excel 97 werden hier nicht berücksichtigt.

Der folgende Parameter ist der Tabellenname der Zieltabelle. Hier können zwei Fälle auftreten: Entweder Sie geben eine Tabelle an, die bereits vorhanden ist, oder einen neuen Tabellennamen. Im ersten Fall fügt die TransferSpreadsheet-Methode die Daten an die angegebene Tabelle an, sonst erstellt sie die Tabelle automatisch neu.

Als Nächstes folgt der Name der Excel-Datei, aus der Sie Daten nach Access importieren möchten. Hier wissen Sie entweder von vornherein, wo die Datei liegt, oder Sie lassen den Benutzer dies auswählen (wie das funktioniert, zeigen wir beispielsweise im Beitrag Excel-Importassistent im Eigenbau, Shortlink 696).

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-Import-Assistent im Eigenbau

Importieren von Textdateien

Excel automatisieren

Tabellen wie unter Excel

Tilgen mit Access und Excel

Word, Excel und Co. im Griff

Datenaustausch zwischen Excel und Access

Automatisierter Import von Excel-Tabellen

Outlook und Access - Import und Export von Access-Daten

Export nach Excel

Indizierung mit Access

© 2003-2015 André Minhorst Alle Rechte vorbehalten.