Dateien öffnen mit EXCEL VBA

Eine sehr häufig benötigte Routine in Excel VBA ist das Öffnen von Dateien und das Importieren von Inhalten anderer Dateien, um diese weiter auszuwerten. Hier finden Sie eine variable Prozedur, die je nach den Erfordernissen schnell angepasst werden kann.

Nehmen wir an, Sie möchten eine Datei namens Daten.xlsx (Excel 2007 / 2010) bzw. Daten.xls (Excel 2003) verwenden, die im Verzeichnis C:Daten abgelegt ist.

Der einfachste Weg, überhaupt erst einmal eine Routine in VBA dargestellt zu bekommen, ist immer der Makrorekorder. Er ist vor allem dann hilfreich, wenn eine komplexe Syntax mit vielen Parametern in VBA dargestellt werden soll.

Den Makrorekorder findet man in Excel 2003 unter Extras / Makros / Makro aufzeichnen, unter Excel 2010 ist es unter Entwicklertools / Code / Makro aufzeichnen.

Als Prozedur, die mit dem Makrorekorder erstellt wurde, sieht das dann wie folgt aus:

Sub Makro1()

‚ Makro1 Makro

    ChDir "C:Daten"

    Workbooks.Open Filename:="C:DatenDaten.xlsx"

End Sub

Hierzu einige Anmerkungen: Die Zeilen, die mit dem Hochkomma beginnen (oben die Zeilen 2-5), sind Kommentarzeilen, die beim Programmdurchlauf ignoriert werden. Im Folgenden wird diese Möglichkeit für Erläuterungen des Codes genutzt.

Wie man leicht sieht, hat der Makrorekorder genau das aufgezeichnet, was gemacht wurde: "Öffne Daten.xlsx aus dem Verzeichnis C:Daten".

Das mag hin und wieder durchaus ausreichend sein – und falls sich der Dateiname oder das Verzeichnis mal ändern, kann man natürlich den Code entsprechend anpassen oder das Makro neu aufzeichnen. Wirklich praktisch ist das aber nicht, schöner wäre es, wenn der Code variabel ist.

Und genau das möchte ich Ihnen nun zeigen.

[adcode categories=“office,excel“]

Variabler Code

Nehmen wir an, die Datei kommt täglich (aus irgendeiner anderen Software o. ä.) und hat das jeweilige Datum im Dateinamen. Die Dateien sollen beispielsweise "20120618_Daten.xlsx" heißen.

Wenn wir als einfachsten Fall annehmen, dass einmal am Tag die Datei genau dieses Tages ausgewertet werden soll, könnte man das Systemdatum verwenden. Die Prozedur sähe dann – incl. der notwendigen Datumsumwandlung – wie folgt aus:

Sub Makro2()

    datum = date()’liefert das aktuelle Systemdatum, entspricht der Excel-Funktion HEUTE()

    datum = format(datum, „yyyymmdd“) ‚ formatiert das Datum in einen Text, der dem notwendigen Format entspricht

    ChDir "C:Daten"

    Workbooks.Open Filename:="C:Daten“ & datum & „_Daten.xlsx" ‚ baut das Datum in den Dateinamen ein

End Sub

PS: Wenn Sie mehr Tipps im Umgang mit Excel erhalten möchte, empfehle ich Ihnen meine Office 2010 Tutorial-Filme