Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Dateiöffnen-Dialog?

Forumthread: VBA: Dateiöffnen-Dialog?

VBA: Dateiöffnen-Dialog?
15.06.2009 11:23:17
André
Moin zusammen,
ich möchte in VBA einen Dateiöffnen-Dialog einblenden, in dem der User eine XLSM-Datei auswählen soll. Wenn er den Dialog bestätigt, soll die Datei aber nicht geöffnet werden, sondern den Dateinamen (inkl. Pfad) brauche ich in einer Variablen. Wie mache ich das?
Gruß, André
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Dateiöffnen-Dialog?
15.06.2009 11:56:30
Tino
Hallo,
hier mal ein Beispiel.
Sub test()
Dim strPfad As String
strPfad = Application.GetOpenFilename("Excel Files (*.XLSM), *.XLSM")

'prüfe ob abbrechen gedrückt 
If strPfad <> CStr(False) Then
 'Dein Code 
 '... 
End If

End Sub


Gruß Tino

Anzeige
AW: VBA: Dateiöffnen-Dialog?
15.06.2009 12:04:03
André
Moin Tino,
danke, das ist schön einfach und funktioniert soweit auch.
Nun habe ich noch ein Problem: Zwar bekomme ich so den kompletten Dateipfad, wie ich es ja auch wollte. Wenn ich aber zusätzlich noch den Dateinamen ohne Pfad brauche, wie kann ich den daraus extrahieren? Gibt es dafür in VBA sowas wie Regular Expressions?
Gruß, André
Anzeige
strDateiname=dir(strPfad) _oT
15.06.2009 12:11:59
NoNet
_oT = "ohne Text"
genau das habe ich gesucht
15.06.2009 12:19:27
André
Super! Vielen Dank.
Gruß, André
Universeller "Dateiauswahl"-Dialog
15.06.2009 11:56:49
NoNet
Hallo André,
ich habe mir zu diesem Zweck eine universelle UDF (VBA Function) erstellt :
VBA-Code:
Public Function strDateiAuswahl(Optional strVerzeichnis = "", _
                                Optional strDateityp = "*.*", _
                                Optional strTitel = "Alle Dateien", _
                                Optional strOldFiles = "", _
                                Optional strTrennzeichen = ";") As String
    '26.01.2009, NoNet - www.excelei (z.Zt. down !)
    'Aufruf z.B. :
    'Msgbox strDateiAuswahl("C:\temp", "*.xls; *.xlt", "Alle XL-Dateien" ,"Alte Auswahl", vblf)
    Dim strDateien As String, strDateiname As Variant, strAktDir As String
    Dim intZ As Integer
    strAktDir = CurDir 'Aktuelles Verzeichnis speichern
    On Error Resume Next
    If strVerzeichnis <> "" Then ChDir strVerzeichnis 'Verzeichnis wechseln
    On Error GoTo 0
    strDateiname = Application.GetOpenFilename( _
          FileFilter:=strTitel & " (" & strDateityp & "), " & strDateityp, _
          Title:="Bitte Dateien auswählen", MultiSelect:=True)
    If TypeName(strDateiname) = "Boolean" Then
        'MsgBox "Keine Datei ausgewählt !"
        ChDir strAktDir 'Verzeichnis auf ursprünglichen Pfad wechseln
        strDateiAuswahl = strOldFiles
    Else
        'Dateinamen zusammensetzen :
        For intZ = LBound(strDateiname) To UBound(strDateiname)
            strDateien = strDateien & strDateiname(intZ) & IIf(intZ < UBound(strDateiname), strTrennzeichen, "")
        Next
        strDateiAuswahl = strDateien
    End If
End Function
Aufruf-Beispiel der FUNCTION, um alle XLSM-Dateien auszuwählen :
MsgBox strDateiAuswahl("C:\Dein\Ordner", "*.xlsm", "Excel 2007 mit Makros (XLSM)", "", vbLf)
Mit der Option Multiselect:=TRUE könnnen mehrere Dateien ausgewählt werden, falls nur EINE Datei ausgewählt werden soll, dann bitte auf FALSE ändern !
Viel Spass mit der UDF, Gruß, NoNet
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Dateiöffnen-Dialog in Excel


Schritt-für-Schritt-Anleitung

Um einen VBA Dateiöffnen-Dialog in Excel zu implementieren, folge diesen Schritten:

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub DateiOeffnenDialog()
    Dim strPfad As String
    strPfad = Application.GetOpenFilename("Excel Files (*.XLSM), *.XLSM")

    If strPfad <> CStr(False) Then
        ' Hier kannst du deinen Code einfügen, um mit dem Pfad zu arbeiten.
        MsgBox "Ausgewählte Datei: " & strPfad
    End If
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus (Alt + F8).

Häufige Fehler und Lösungen

  • Fehler: Der Dialog öffnet sich nicht.

    • Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu "Datei" > "Optionen" > "Trust Center" und aktiviere die Makros.
  • Fehler: Der ausgewählte Pfad wird nicht korrekt angezeigt.

    • Lösung: Überprüfe, ob der Rückgabewert von Application.GetOpenFilename mit CStr(False) verglichen wird. Dies signalisiert, dass der Benutzer den Dialog abgebrochen hat.

Alternative Methoden

Eine Alternative Methode, um den Dateiöffnen-Dialog zu implementieren, ist die Nutzung einer universellen Funktion. Hier ist ein Beispiel:

Public Function strDateiAuswahl(Optional strVerzeichnis As String = "", _
                                 Optional strDateityp As String = "*.*", _
                                 Optional strTitel As String = "Alle Dateien") As String
    Dim strDateiname As Variant
    strDateiname = Application.GetOpenFilename(FileFilter:=strTitel & " (" & strDateityp & "), " & strDateityp, _
                                                Title:="Bitte Dateien auswählen", MultiSelect:=False)
    If TypeName(strDateiname) <> "Boolean" Then
        strDateiAuswahl = strDateiname
    End If
End Function

Mit dieser Funktion kannst du verschiedene Dateitypen auswählen und den Dialog mit einem spezifischen Titel öffnen.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung des Excel VBA Dateiöffnen Dialogs:

  1. Datei mit Pfad auswählen:

    Dim dateiPfad As String
    dateiPfad = strDateiAuswahl("C:\Dein\Ordner", "*.xlsm", "Excel 2007 mit Makros (XLSM)")
    MsgBox "Ausgewählte Datei: " & dateiPfad
  2. Extrahiere den Dateinamen ohne Pfad:

    Dim dateiName As String
    dateiName = Dir(dateiPfad)
    MsgBox "Dateiname: " & dateiName

Tipps für Profis

  • Nutze den Parameter MultiSelect in Application.GetOpenFilename, um dem Benutzer zu ermöglichen, mehrere Dateien auszuwählen.
  • Erstelle eine benutzerdefinierte Funktion (UDF), um die Wiederverwendbarkeit des Codes zu erhöhen.
  • Verwende Regular Expressions, um komplexe Dateinamen zu verarbeiten, falls notwendig.

FAQ: Häufige Fragen

1. Wie kann ich den Dialog so einstellen, dass nur bestimmte Dateiformate angezeigt werden? Du kannst den FileFilter-Parameter in Application.GetOpenFilename anpassen, um nur bestimmte Dateiformate anzuzeigen. Zum Beispiel: "Excel Files (*.XLSM), *.XLSM".

2. Ist es möglich, den Dialogfeld-Titel zu ändern? Ja, du kannst den Titel des Dialogfeldes ändern, indem du den Title-Parameter in Application.GetOpenFilename setzt.

3. Wie kann ich den Dateinamen ohne Pfad erhalten? Verwende die Dir-Funktion, um den Dateinamen aus dem vollständigen Pfad zu extrahieren. Beispiel: Dim dateiName As String: dateiName = Dir(strPfad).

4. Funktioniert das in allen Excel-Versionen? Die oben genannten Codes sind in den gängigen Versionen von Excel, wie Excel 2010 und neuer, anwendbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige