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

Ordner auswählen

Forumthread: Ordner auswählen

Ordner auswählen
16.11.2008 20:53:00
Micha
Hallo zusammen,
ich möchte über eine Schaltfläche einen zusätzlichen Speicherort abfragen. Wie kann ich es machen, das der User mit den normalen Speichern / Öffnen - Dialog einen Ordner benennen / auswählen kann? Das ganze möchte ich dann in eine Zelle schreiben, um es später mit VBA abzugreifen.
Danke Euch und einen schicken Sonntag noch...
Gruß Micha
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner auswählen
16.11.2008 21:03:41
Hajo_Zi
Hallo Micha,

Option Explicit
Option Private Module
'   von Nepumuk
Private Type InfoT
hwnd As Long
Root As Long
DisplayName As Long
Title As Long
Flags As Long
FName As Long
lParam As Long
Image As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As InfoT) As Long
Private Declare Function CoTaskMemFree Lib "ole32" (ByVal hMem As Long) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpStr1 As String, ByVal  _
lpStr2 As String) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pList As Long, ByVal lpBuffer  _
As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassname As  _
String, ByVal lpWindowName As String) As Long
Function GetAOrdner() As String
Dim xl As InfoT, IDList As Long, RVal As Long, FolderName As String
With xl
.hwnd = FindWindow("xlmain", vbNullString)
'        .hwnd = FindWindow("", "Auswahl")  ' Userform Auswahl
.Title = lstrcat("Bitte wählen Sie ein Verzeichnis", "")
.Flags = 1
End With
IDList = SHBrowseForFolder(xl)
If IDList  0 Then
FolderName = Space(256)
RVal = SHGetPathFromIDList(IDList, FolderName)
CoTaskMemFree (IDList)
FolderName = Trim(FolderName)
FolderName = Left(FolderName, Len(FolderName) - 1)
End If
GetAOrdner = FolderName
End Function
'   nicht verwendeter Code
'   Aufruf mit
Sub test()
StOrdner = GetAOrdner                       ' Verzeichnis auswählen
End Sub



Anzeige
AW: Ordner auswählen
16.11.2008 21:10:14
Micha
Danke Hajo, ich denke das von Tino ist das gleiche, wa...
Schicken Abend noch!
AW: Ordner auswählen
16.11.2008 21:04:00
Tino
Hallo,
hier eine Möglichkeit.
Erstelle einen Button und weise dem das Makro "OrdnerAuswahl" zu.
Der Pfad wird in A1 geschrieben.
Option Explicit

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

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

'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
GetDirectory = IIf(Right$(GetDirectory, 1) = "\", GetDirectory, GetDirectory & "\")
End Function

Sub OrdnerAuswahl()
 Range("A1") = GetDirectory("Bitte einen Ordner wählen")
End Sub


Gruß Tino

Anzeige
AW: Ordner auswählen
16.11.2008 21:09:00
Micha
Hallo Tino,
super, das funktioniert prima. Ich dachte allerdings an das Menü, welches zum Beispiel beim "Speichern unter" geöffnet wird. Geht das auch mit diesem?
Wenn nicht, nutze ich Deine Variante. Vielen Dank...
AW: Ordner auswählen
16.11.2008 21:26:00
Tino
Hallo,
was gefällt Dir an der Version von Hajo und mir nicht?
Möchtest Du den speichern unter Dialog, dass geht so
Beispiel:
Sub test()
Dim strPfad As String
    strPfad = Application.GetSaveAsFilename()
    strPfad = Left$(strPfad, InStrRev(strPfad, "\"))
    Range("A1") = strPfad
End Sub


PS: mir gefällt diese Version nicht besonders.
Gruß Tino

Anzeige
AW: Ordner auswählen
16.11.2008 21:33:00
Micha
Hallo Tino,
vielen Dank erst einmal. Der Vorteil bei dieser Version liegt darin, das der User im Dialog noch Ordner anlegen und löschen kann. Ich muss also in Variante 1 den Ordner bereits angelegt haben...
Problem bei der zweiten Variante ist aber, das der Dialog eine Datei haben möchte. Es reicht also nicht, einen Ordner auszuwählen... Kann man da noch was machen?
Gruß Micha
Anzeige
AW: Ordner auswählen
16.11.2008 21:45:15
Tino
Hallo,
die einigste Version dazu ist diese, wenn die Anführungszeichen nicht stören.
Modul Modul1
Sub test() 
Dim strPfad As String 
    strPfad = Application.GetSaveAsFilename(" ") 
    strPfad = Left$(strPfad, InStrRev(strPfad, "\")) 
    Range("A1") = strPfad 
End Sub 
 
 


Gruß Tino

Anzeige
AW: Ordner auswählen
16.11.2008 21:59:00
Micha
nö, das ist gut so... Danke schön und noch einen schicken Abend..!
Gruß Micha
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige