Visual Basic
Von: Zondan, 24.2.2008 23:42 Uhr
gibt es eine Möglichkeit das aus vielen Programmen bekannte "Datei öffnen" (bzw. eigentlich bräuchte ich "Pfad öffnen") Fenster mit einem VB Befehl aufzurufen und den Pfad zurückzubekommen?

kurz zur Anwendung, in einen Ordner liegen mehrere Dateien mit Messwerten, und diesen Pfad soll der Benutzer eingeben können, bisher funktionierte das per Copy und Paste aus dem Dateimanager, was etwas umständlich ist (vor allem für Leihen).

Vielen Danke schon mal für eure Antworten!



  1. Antwort von Thomas Ramel 0
    Re: VBA Excel 2000: Pfad öffnen
    Grüezi Zondan gibt es eine Möglichkeit das aus vielen Programmen bekannte
    "Datei öffnen" (bzw. eigentlich bräuchte ich "Pfad öffnen")
    Fenster mit einem VB Befehl aufzurufen und den Pfad
    zurückzubekommen?
    Ich habe hier ein paar Code-Zeilen, die mit Excel problemlos funktionieren; vielleicht reicht das schon oder Du kannst sie anpassen:

    Option Explicit
    
    Public Type BROWSEINFO
       hOwner              As Long
       pidlRoot         As Long
       pszDisplayName   As String
       lpszTitle        As String
       ulFlags          As Long
       lpfn             As Long
       lParam           As Long
       iImage           As Long
    End Type
    
    Declare Function SHGetPathFromIDList Lib "shell32.dll" _
                                         Alias "SHGetPathFromIDListA" _
                                         (ByVal pidl As Long, ByVal _
                                         pszPath As String) As Long
    
    Declare Function SHBrowseForFolder Lib "shell32.dll" _
                                       Alias "SHBrowseForFolderA" _
                                       (lpBrowseInfo As BROWSEINFO) As Long
    
    
    'Ruft das Dialogfeld zur Ordnerauswahl auf
    Function GetDirectory(Msg) As String
    Dim bInfo           As BROWSEINFO
    Dim Path            As String
    Dim R As Long, x As Long, pos As Integer
       With bInfo
          .pidlRoot = 0&
          .lpszTitle = Msg
          .ulFlags = &H1
       End With
       x = SHBrowseForFolder(bInfo)
       Path = Space$(512)
       R = SHGetPathFromIDList(ByVal x, ByVal Path)
       If R Then
          pos = InStr(Path, Chr$(0))
          GetDirectory = Left(Path, pos - 1)
       Else
          GetDirectory = ""
       End If
    End Function
    
    Public Sub open_Path()
    Dim strPath         As String
    strPath = GetDirectory("Bitte einen Ordner wählen")    'Ersatz: ... = C:\Eigene Dateien"
       
       MsgBox strPath
    
    End Sub


    --
    Mit freundlichen Grüssen

    Thomas Ramel
    - MVP für MS-Excel -
    3 Kommentare
    • von Zondan 0
      Re^2: VBA Excel 2000: Pfad öffnen
      Danke schonmal, hab momentan grad keine Zeit es zu testen,
      werd mich aber heut abend drum kümmern!
    • von Zondan 0
      Re^3: VBA Excel 2000: Pfad öffnen
      Juhu, klappt wunderbar (nachdem ich es in ein Modul kopiert habe und nicht in eine Tabelle)

      Werd mich jetzt mal hinsetzen und versuchen alles zu verstehen!
    • Re^4: VBA Excel 2000: Pfad öffnen
      Grüezi Zodan Juhu, klappt wunderbar (nachdem ich es in ein Modul kopiert
      habe und nicht in eine Tabelle)
      Jo, das hatte ich nicht erwähnt - Sorry.

      Prinzipiell gehört aber jeglicher Code der nicht mit Ereignissen des Tabellenblattes zusammenhängt in ein Modul und nicht hinters Tabellenblatt.

      --
      Mit freundlichen Grüssen

      Thomas Ramel
      - MVP für MS-Excel -
  2. Antwort von drambeldier 0
    Re: VBA Excel 2000: Pfad öffnen
    Moin, Zondan,

    eine brauchbare Pfadsuche gibt es bei http://www.vbarchiv.net/archiv/tipp_1089.html, die hat den Vorteil, dass der Pfad für das Suchfenster vorgegeben werden kann (zB per CurDIr). Dann noch der Ballast raus, der den Pfadnamen für die Anzeige verkürzt, und schon kann's losgehen.

    Gruß Ralf