HomeVBA ProgrammierungOffice u. VBA SeminareFAQs, Tipps & DownloadsKontaktadresse

 

 

 

Das FileDialog Objekt

Office XP wurde mit neuen Ö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 10.0 Object Library enthalten.

Der zugehörige Objektmodellausschnitt:

Objektmodell Ausschnitt: FileDialog

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:

Beispiel 1
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. Solche Eigenschaftsänderungen bleiben im FileDialog Objekt erhalten. D.h. Sie müssen Sie zurücksetzen, wenn Sie bei einer späteren Verwendung wieder Standardwerte haben möchten.

 z.B. .ButtonName = "" 

Mit der InitialFileName Eigenschaft können Sie vorgeben, welcher Ordner ausgewählt werden soll. z.B. in Word:

    .InitialFileName = ActiveDocument.Path & "\*.doc"

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.

Beispiel 2
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

Beispiel 3
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)