Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
532to536
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
532to536
532to536
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verzeichnis auswählen, Standard-Pfad?

Verzeichnis auswählen, Standard-Pfad?
16.12.2004 16:37:04
Edwin
Hallo,
ich habe folgenden Code kopiert und er läuft auch, aber ich hätte gerne, dass als Standardpfad "c:/daten" gewählt wird.
Kann mir jemand sagen, an welcher Stelle ich diesen Code abändern muss?
Sorry, dass ich immer mit solchen Anfängerfragen Euch nerven muss.
Gruß
Edwin
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

Function GetDirectory(Optional Msg As String) As String
Dim bInfo As BROWSEINFO
Dim Path As String
Dim r As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = "Wählen Sie bitte einen Ordner aus."
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
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


Sub DirAuswahl()
Verzeichnisse = ""
Dim sMsg As String, sPath As String
sMsg = "Wählen Sie bitte einen Ordner aus:"
sPath = GetDirectory(sMsg)
If sPath <> "" Then Verzeichnisse = sPath
End Sub


Sub neuesVerzeichnis()
Dim sDir As String
sDir = GetDirectory
If sDir = "" Then Exit Sub
If Right(sDir, 1) <> "\" Then sDir = sDir & "\"
SendKeys "{end}"
sDir = InputBox("Neuen Verzeichnisnamen eingeben:", , sDir)
If sDir = "" Then Exit Sub
On Error GoTo ERRORHANDLER
MkDir sDir
Verzeichnisse = sDir
Exit Sub
ERRORHANDLER:
MsgBox "Das Verzeichnis konnte nicht erstellt werden!"
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnis auswählen, Standard-Pfad?
Tobias
Hallo Edwin,
Sub Ordnerauswahl()
Dim strDefaultPath As String
Dim strOldPath As String

strOldPath = Verzeichnisse
strDefaultPath = "C:\daten"
Verzeichnisse = GetFolderInternal(strDefaultPath, strDefaultPath)
If Verzeichnisse = "" Then Verzeichnisse = strOldPath

End Sub
Private Type BROWSEINFO
hWndOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As String
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (ByRef lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Private Const WM_USER As Long = &H400
Private Const BIF_RETURNONLYFSDIRS As Long = 1
Private Const BFFM_INITIALIZED As Long = 1
Private Const BFFM_SETSELECTION As Long = (WM_USER + 102)
Private Const MAX_PATH As Long = 260
Private Verzeichnis2 As String
Public Verzeichnisse As String

Public Function GetFolderInternal(ByVal Caption As String, _
ByVal Default As String) As String

Dim bInfo As BROWSEINFO
Dim ListIdx As Long
Dim Path As String

With bInfo
.lpszTitle = "Wählen Sie bitte einen Ordner aus."
.ulFlags = BIF_RETURNONLYFSDIRS
.lpfn = MakeLongPath(AddressOf BrowseCallbackProc)
.lParam = Default
End With
Path = String$(MAX_PATH + 1, vbNullChar)
ListIdx = SHBrowseForFolder(bInfo)
If SHGetPathFromIDList(ListIdx, Path) Then GetFolderInternal = Left$(Path, InStr(Path, vbNullChar) - 1)
Call CoTaskMemFree(ListIdx)

End Function

Private Function BrowseCallbackProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal lParam As Long, _
ByVal lpData As Long) As Long
On Error Resume Next
If Msg = BFFM_INITIALIZED Then Call SendMessage(hWnd, BFFM_SETSELECTION, 1&, lpData)
End Function


Private Function MakeLongPath(ByVal lngAddress As Long) As Long
MakeLongPath = lngAddress
End Function

Gruss
Tobias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige