Es ist nicht immer notwendig, alles selbst zu erfinden, wenn Sie etwas verwenden können, das bereits existiert.

Sie haben Zugriff auf die meisten integrierten Dialogfelder in Excel und die anderen Anwendungen in Office.

Wenn Sie den Benutzer entscheiden lassen möchten, wo eine Arbeitsmappe gespeichert werden soll, können Sie den integrierten Dialog Speichern wie folgt anzeigen:

Application.Dialogs(xlDialogSaveAs).Show

Verwenden Sie den Objektbrowser, um eine Liste aller zugänglichen Dialoge in Excel zu erhalten.

Um es anzuzeigen, drücken Sie F2, während Sie ein Modul aktiviert haben. Wählen Sie Excel als Bibliothek aus und suchen Sie nach den Konstanten, die mit xlDialog beginnen …​.

Wenn Sie nur einen Dateinamen von dem Benutzer abrufen möchten, den Sie später zum Öffnen oder Speichern einer Arbeitsmappe verwenden möchten, können Sie die Methoden GetOpenFilename oder GetSaveAsFilename verwenden. Beide Methoden zeigen ihre jeweiligen Dialoge an, aber die Datei wird nicht geöffnet oder gespeichert, wenn der Benutzer den Dialog bestätigt.

Die Methoden geben stattdessen den vollständigen Dateinamen an die Datei zurück, die der Benutzer öffnen oder speichern möchte.

FullFileName = Application.GetOpenFilename("Excel files (.xl),.xl", _

1, "Custom Dialog Title", , False)

FullFileName = Application.GetSaveAsFilename("DefaultFilename.xls", _

"Excel files (.xl),.xl", 1, "Custom Dialog Title")

Das Ergebnis kann beliebig verwendet werden. Sie können später eine ausgewählte Arbeitsmappe wie folgt öffnen:

Workbooks.Open FullFileName

Oder Sie können eine Arbeitsmappe wie folgt speichern:

ActiveWorkbook.SaveAs FullFileName

Wenn der Benutzer das FileOpen-Dialogfeld oder das FileSaveAs-Dialogfeld bestätigt hat, hat er möglicherweise auch den aktiven oder aktuellen Ordner geändert. Daher verwende ich diese beiden Methoden häufig als einfachen Ansatz, um dem Benutzer die Auswahl eines Ordners zu ermöglichen. Eine andere Möglichkeit, den Benutzer einen Ordner auswählen zu lassen, finden Sie im Abschnitt Dateien und Ordner.