Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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é

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é
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

42 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige