Gelegentlich werden Sie für eine bestimmte Aufgabe verschiedene Dateien benötigen. Das kann z.B. vorkommen wenn Sie ein Excel-Tool nutzen, dass die Bearbeitung, Datenerfassung und/oder die Erstellung von Schriftwechseln übernimmt und hierfür die Daten aus einer extern gespeicherten Adressliste, Anbieterliste etc. über ein Makro eingelesen und verarbeitet werden soll.
Heute stelle ich Ihnen zwei kleine VBA-Bausteine vor mit denen Sie während eines Makroablaufs an einer beliebigen Stelle diesen Vorgang in den automatisierten Ablauf integrieren können.
Der erste Programmcode enthält keine Fehlerroutine. Sie können den Code an der Stelle in Ihrem Makro einfügen, an der die weitere Excel-Datei geöffnet werden soll. Dazu brauchen Sie nur diesen einzeiligen Code einzufügen.
Application.Dialogs(xlDialogOpen).Show
Der VBA-Code bewirkt, dass sich ein Dialogfenster öffnet in dem Sie die Datei auswählen und öffnen können. Über den Button „Abbrechen“ können Sie den Vorgang abbrechen ohne eine Datei zu öffnen. Beachten Sie dabei aber, dass dies zu Problemen führen kann, wenn Ihr Makro in den Sie den VBA-Code hinzugefügt haben mit einer zu öffnenden Datei weitere Bearbeitungsschritte durchführen will. Aus diesem Grund ist es unter Umständen sinnvoll den einfachen Code um eine Überprüfungsroutine zu ergänzen.
Excel VBA: Datei Öffnen Dialog mit Variablenprüfung
In der folgenden zweiten Variante wird der Name der ausgewählten Datei zunächst an die Variable „Dateiauswahl“ übergeben und in der anschließend ausgeführten Wenn-Dann-Sonst-Funktion überprüft. Wurde eine Datei ausgewählt, wird sie geöffnet, nimmt die Variable keinen Wert an, erscheint stattdessen eine Hinweisbox mit zwei Optionen. Wird „OK“ geklickt, erscheint erneut das Datei-Auswahlmenü. Wird dagegen auf „Abbrechen“ geklickt, wird das Makro beendet. Jeder Befehl den das Makro anschließend eigentlich noch hätte ausführen sollen, wird dadurch nicht mehr ausgeführt.
Dim Dateiauswahl As Variant erneut: Dateiauswahl = Application.GetOpenFilename If Dateiauswahl <> False Then Workbooks.Open Filename:=Dateiauswahl Else If MsgBox("Es wurde keine Datei ausgewählt. Klicken Sie 'OK' um eine Datei auszuwählen, oder 'Abbrechen' um den Vorgang abzubrechen und das Makro zu beenden.", (vbOKCancel)) = vbOK Then GoTo erneut Else Exit Sub End If End If
Der zweite VBA-Code ist ggf. noch an Ihr Makro anzupassen. Wurden z.B. vor dem Code bereits einige Befehle ausgeführt, die beim Abbruch des Vorgangs wieder rückgängig gemacht werden sollen, dann sind entsprechende Befehle direkt nach der Zeile „Else“ und vor der Zeile „Exit Sub“ einzufügen. Auch wenn der Programmcode umständlicher ist, so sollten Sie den Code aus dem zweiten Beispiel doch bevorzugt verwenden, wenn es ansonsten in Folge keiner Dateiauswahl zu Fehlern bei der weiteren Ausführung kommt.
Datei Öffnen Dialog Variante mit Workbook-Variable für Folgebefehle
Mit der nachfolgenden Variante wird die Datei geöffnet und zusätzlich die geöffnete Datei in der Workbook-Variable „wb“ definiert. Für die weitere VBA Routinen können Sie die geöffnete Datei dann ganz einfach über die Variable steuern und ansprechen.
Sub DateiÖffnen() Dim wb As Workbook Dim varFileName ChDir ThisWorkbook.Path varFileName = Application.GetOpenFilename If varFileName = False Then Exit Sub Set wb = Workbooks.Open(varFileName) End Sub
In der angehängten Exceldatei können Sie beide Beispiele testen. Wie Sie sehen werden, unterscheiden Sie sich bei der Ausführung lediglich beim Klick auf den Button „Abbrechen“. Ohne Folgebefehle gibt es bei beiden Varianten keine Probleme. Ein sinnvoller Einsatz der Funktion setzt allerdings weitere Befehle voraus, weil es sonst nur eine nette Spielerei ist. Dateien öffnen geht über einen Doppelklick im Explorer Fenster oder über die Excelmenüleiste schließlich genauso komfortabel.
Excel-Dateien per Makro öffnen
Hallo, ich arbeite mit Teams und versuche Bilddateien, die in einem Ordner in Teams gespeichert sind mit aufzurufen. Theoretisch würde mir der Teams-Explorer reichen.
den Pfad, zugeordnet zum Objekt habe ich in der Excelliste.
Das Excel-Workbook ist auch auf Teams und wird auch hier geöffnet.
Leider habe ich über einen Pfad keinen zugriff. Liegt daran, dass der I-Explorer ein anderes Konto aufweist. und der Pfad immer eine Internetseite aufruft.
gibt es hier eine Lösung?
@Gerhard Aigner: Ich kenne jetzt das beschriebene Problem mit unterschiedlichen Konten nicht. Grundsätzlich gilt allerdings, dass Zugriffsrechte für den Dateipfad bestehen müssen, sonst funktioniert es nicht.