Wenn Ihre VBA - Prozedur der Benutzer nach einem Dateinamen zu fragen braucht, Sie könnten die Funktion InputBox verwenden und lassen Sie den Excel - Benutzer eine Eingabe machen. Ein Eingabefeld ist jedoch normalerweise nicht das beste Werkzeug für diese Aufgabe, da es den meisten Benutzern schwerfällt, sich Pfade, umgekehrte Schrägstriche, Dateinamen und Dateierweiterungen zu merken. Mit anderen Worten, es ist viel zu einfach, einen Dateinamen einzugeben.
Um dieses Problem besser zu lösen, verwenden Sie die GetOpenFilename-Methode des Application-Objekts, die sicherstellt, dass Ihr Code einen gültigen Dateinamen einschließlich des vollständigen Pfads erhält. Die Methode GetOpenFilename zeigt das bekannte Dialogfeld Öffnen an (ein toter Klingelton für das Dialogfeld Excel wird angezeigt, wenn Sie Datei → Öffnen → Durchsuchen wählen).
Die GetOpenFilename-Methode öffnet die angegebene Datei nicht wirklich. Diese Methode gibt einfach den vom Benutzer ausgewählten Dateinamen als String zurück. Dann können Sie Code schreiben, um mit dem Dateinamen zu tun, was Sie wollen.
Die Syntax für die GetOpenFilename-Methode
Die offizielle Syntax der GetOpenFilename-Methode lautet wie folgt:
object.GetOpenFilename ([fileFilter], [filterIndex],
[Titel],[ButtonText], [Mehrfachauswahl])
Die Methode GetOpenFilename verwendet die optionalen Argumente unten.
Streit |
Was es macht |
Dateifilter |
Bestimmt die Dateitypen, die im Dialogfeld
angezeigt werden (z. B. *.TXT). Sie können mehrere Filter angeben, aus denen der Benutzer
auswählen kann. |
FilterIndex |
Legt fest, welcher der Dateifilter das Dialogfeld
standardmäßig anzeigt . |
Titel |
Gibt die Beschriftung für die
Titelleiste des Dialogfelds an . |
Schaltflächentext |
Ignoriert (wird nur für die Macintosh-Version von Excel verwendet). |
Mehrfachauswahl |
Bei True kann der Benutzer mehrere Dateien auswählen. |
Ein GetOpenFilename-Beispiel
Das Argument fileFilter bestimmt, was in der Dropdown-Liste Dateityp des Dialogfelds angezeigt wird. Dieses Argument besteht aus Paaren von Dateifilterzeichenfolgen, gefolgt von der Wildcard-Dateifilterspezifikation, wobei die einzelnen Teile und Paare durch Kommas getrennt werden. Wenn es weggelassen wird, wird dieses Argument standardmäßig wie folgt verwendet:
Alle Dateien (*.*), *.*
Beachten Sie, dass diese Zeichenfolge aus zwei Teilen besteht, die durch ein Komma getrennt sind:
Alle Dateien (*.*)
und
*.*
Der erste Teil dieser Zeichenfolge ist der Text, der in der Dropdown-Liste Dateityp angezeigt wird. Der zweite Teil bestimmt, welche Dateien das Dialogfeld anzeigt. *.* bedeutet beispielsweise alle Dateien.
Der Code im folgenden Beispiel öffnet ein Dialogfeld, in dem der Benutzer nach einem Dateinamen gefragt wird. Das Verfahren definiert fünf Dateifilter. Beachten Sie, dass die VBA-Zeilenfortsetzungssequenz verwendet wird, um die Filtervariable einzurichten. dies hilft, dieses ziemlich komplizierte Argument zu vereinfachen.
Sub GetImportFileName ()
Dim Finfo als String
Dim FilterIndex As Long
Titel als String dimmen
Dim FileName als Variante
'Liste der Dateifilter einrichten
FInfo = „Textdateien (*.txt),*.txt“ & _
„Lotus-Dateien (*.prn),*.prn“, & _
„Kommagetrennte Dateien (*.csv),*.csv“ & _
„ASCII-Dateien (*.asc),*.asc“, & _
"Alle Dateien (*.*),*.*"
' Standardmäßig *.* anzeigen
FilterIndex = 5
'Beschriftung des Dialogfelds festlegen
Title = „Wählen Sie eine zu importierende Datei“
' Dateinamen abrufen
FileName = Application.GetOpenFilename (FInfo, _
FilterIndex, Titel)
' Behandeln von Rückgabeinformationen aus dem Dialogfeld
Wenn Dateiname = False Then
MsgBox „Es wurde keine Datei ausgewählt.“
Anders
MsgBox „Sie haben ausgewählt“ & Dateiname
Ende Wenn
End Sub
Hier ist das Dialogfeld, das Excel anzeigt, wenn Sie dieses Verfahren ausführen. Die Darstellung kann je nach verwendeter Windows-Version und eingestellten Anzeigeoptionen variieren.

Die Methode GetOpen Filename zeigt ein anpassbares Dialogfeld an und gibt den Pfad und den Namen der ausgewählten Datei zurück. Es öffnet die Datei nicht.
In einer echten Anwendung würden Sie mit dem Dateinamen etwas Sinnvolleres machen. Sie können es beispielsweise mit einer Anweisung wie dieser öffnen:
Workbooks.Open FileName
Beachten Sie, dass die Variable FileName als Variant-Datentyp deklariert ist. Wenn der Benutzer auf Abbrechen klickt, enthält diese Variable einen booleschen Wert (False). Andernfalls ist FileName eine Zeichenfolge. Daher behandelt die Verwendung eines Variant-Datentyps beide Möglichkeiten.