Das FileDialog Objekt
Das FileDialog Objekt wurde mit Office XP eingeführt. Damit wurden die Microsoft Office Anwendungen mit neuen/einheitlichen Öffnen und Speichern Dialogen ausgestattet. Wie Sie diese Dialoge mit VBA verwenden können, zeigt der folgende Artikel. Die erforderlichen Objekte (Methoden, Eigenschaften u. Konstanten) sind, wie alle gemeinsamen Features der Office Anwendungen, in der Office xx.x Object Library enthalten. Über Extras/Verweise können Sie die Object Library hinzufügen.
Der zugehörige Objektmodellausschnitt:

Jede Office Anwendungen hat eine Instanz des FileDialog-Objekts. Einen Zugriff darauf bekommen Sie über die FileDialog Eigenschaft der Application:
Dim oFileDialog As FileDialog
Set oFileDialog = Application.FileDialog(MsoFileDialogType)
Es gibt vier verschiedene MsoFileDialogTypen:
Public Enum MsoFileDialogType
msoFileDialogOpen=1
msoFileDialogSaveAs=2
msoFileDialogFilePicker=3
msoFileDialogFolderPicker=4
End Enum
Die wichtigsten Eigenschaften und Methoden an Beispielen:
Einen Ordner auswählen mit dem FolderPicker
Dim oFileDialog As FileDialog
Set oFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
With oFileDialog
.Title = "Wählen Sie bitte den gewünschten Ordner aus!"
.ButtonName = "Weiter"
.Show
End With
Mit der ButtonName - Eigenschaft können Sie die Beschriftung der Standardschaltfläche (Öffnen) verändern.
Mit der InitialFileName Eigenschaft können Sie vorgeben, welcher Ordner ausgewählt werden soll. z.B. in Word:
.InitialFileName = ActiveDocument.Path & "\*.docx"
Die Show-Methode zeigt den Dialog an und gibt einen Integer Wert zurück, der über den verwendeten Button zum Schließen Auskunft gibt. Das Systemmenüfeld und die Abbrechen Schaltfläche geben 0 zurück. Die Ok oder Öffnen Schaltfläche -1 (ist true)
If .Show = True Then
MsgBox .SelectedItems(1)
Else
MsgBox "Abbruch"
End If
Die SelectedItems Eigenschaft gibt eine FileDialogsSelectedItems Auflistung zurück. Im Falle der Ordner Auswahl kann es nur einer sein.
Dateien auswählen mit dem FilePicker
Bei diesem Dialog können Sie mit der AllowMultiSelect Eigenschaft festlegen, ob mehrere Dateien ausgewählt werden dürfen. Die Auswahl wird nacheinander in einer For Each Schleife verarbeitet:
Sub BspDateienAuswählen()
Dim oFileDialog As FileDialog
Set oFileDialog = Application.FileDialog(msoFileDialogFilePicker)
With oFileDialog
.Title = "Grafiken auswählen"
.ButtonName = "Katalog erstellen"
.AllowMultiSelect = True
If .Show = True Then
Dim vItem As Variant
For Each vItem In .SelectedItems
'Verarbeitung starten
MsgBox vItem
Next
End If
End With
End Sub
Über die InitialView Eigenschaft legen Sie die verwendete Ansicht im Dialog fest. z.B. Miniaturansichten:
.InitialView = msoFileDialogViewThumbnail
FileDialogFilters
Mit FileDialogFilters legen Sie die Auswahl an Dateitypen Ihrer Dialoge fest.
With oFileDialog
.Filters.Clear
.Filters.Add "Alles", "*.*"
.Filters.Add "Nur die Texte", "*.rtf;*.txt;*.doc", 1
...
Die Clear Methode löscht eventuell bereits vorhandene Filter. Mit Add können Sie weitere hinzufügen. Der Add Methode können Sie neben Beschreibung und Extensionen noch eine optionale Zahl mitgeben, mit der die Reihenfolge der Filter festgelegt wird.
Dateien öffnen oder speichern
Mit den beiden übrig gebliebenen FileDialogs msoFileDialogOpen und msoFileDialogSaveAs bilden Sie die Standard öffnen und speichern unter Dialoge von Word nach.
Für diese beiden Dialoge gibt es die Execute Methode, die anschließend das eigentliche öffnen oder speichern übernimmt. Sie hat unmittelbar nach der Show Methode zu folgen.
If .Show = True Then
.Execute
End If
Fazit
Diese Dialoge erfüllen sicherlich alles was an Öffnen, Einfügen und Speicherfunktionalität in benutzerdefinierten Anwendungen benötigt wird. Eine einheitliche Handhabung dieser Dialoge über alle Office Anwendungen ist zu begrüßen. Leider bietet einem hier VBA bei der Programmierung einige Methoden an, die in der Anwendung gar nicht möglich sind (z.B. dürfen Sie bei Speichern unter .. keine Filter setzen)