Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
856to860
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
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Laufwerk und Verzeichnisse aufrufen

Laufwerk und Verzeichnisse aufrufen
24.03.2007 14:24:28
Christian
Hallo,
ich möchte mit VBA in einer CombiBox aus der Liste ein LW und daraus entsprechende Verzeichnisse auswählen. Wie geht das? Gibt es schon etwas fertiges? Das xlDialog(FindFile) kann ich leider hierfür nicht einsetzen.
Vielen Dank im Vorraus für Infos bzw. Hilfestellungen.
Gruß
Christian

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufwerk und Verzeichnisse aufrufen
24.03.2007 14:30:00
Lukas
Hallo Christian
Möchtest du einen Ordnerdialog haben? (Makro Ordnerauswahl starten)
Option Explicit
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

Public Function GetFolderInternal(ByVal Caption As String, _
ByVal Default As String) As String
Dim BI As BROWSEINFO
Dim ListIdx As Long
Dim Path As String
With BI
.lpszTitle = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpFn = MakeFktnPtr(AddressOf BrowseCallbackProc)
.lParam = Default
End With
Path = String$(MAX_PATH + 1, vbNullChar)
ListIdx = SHBrowseForFolder(BI)
If SHGetPathFromIDList(ListIdx, Path) Then
GetFolderInternal = Left$(Path, InStr(Path, vbNullChar) - 1)
End If
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
SendMessage hWnd, BFFM_SETSELECTION, 1&, lpData
End If
End Function


Private Function MakeFktnPtr(ByVal FktnPtr As Long) As Long
MakeFktnPtr = FktnPtr
End Function
Sub Ordnerauswahl()
Dim Verzeichnis As String
Dim Verzeichnis2
Verzeichnis2 = GetFolderInternal(Verzeichnis, Verzeichnis)
MsgBox Verzeichnis2
End Sub

Meinst du sowas?
Gruss
Lukas
Anzeige
AW: Laufwerk und Verzeichnisse aufrufen
24.03.2007 14:49:00
Christian
Hallo Lukas,
uff, ob ich so was meine? Ja, wenn ich z.B. damit in einer UserForm.Initialize die LW in einer Combobox auswählen und aus den dann aufgelisteten Verzeichnissen eines auswählen kann usw., dann meine ich das.
oder geht das auch einfacher?
Gruß Christian
AW: Laufwerk und Verzeichnisse aufrufen
24.03.2007 14:51:00
Lukas
Hallo Christian
Ich kenne keine kürzere Methode
Gruss
Lukas
AW: Laufwerk und Verzeichnisse aufrufen
24.03.2007 14:54:38
Christian
Hallo Lukas,
dann danke ich Dir erst einmal, ich versuche mich darin einzuarbeiten.
Gruß Christian
AW: Laufwerk und Verzeichnisse aufrufen
ransi
Hallo Christian
Etwas kürzer ist das hier:
Option Explicit

Sub Aufruf()
Call get_Folder("Was soll ich machen?")
End Sub


Sub get_Folder(Optional capt, Optional StartVerzeichniss)
'K.Rola
Dim objShell As Object
Dim objFolder As Object
Dim objItem As Object
Set objShell = CreateObject("Shell.Application")
With objShell
    Set objFolder = .BrowseForFolder(0&, capt, &H200, StartVerzeichniss)
End With
If Not objFolder Is Nothing Then
    Set objItem = objFolder.Self
    MsgBox objItem.Path
End If
End Sub



Alternativ auch das hier:
Option Explicit

Sub Ordnersuche()
Dim dat
Set dat = Application.FileDialog(msoFileDialogFolderPicker)
With dat
    .Title = "Netzwerk...."
    .InitialFileName = "C:\" 'oder was auch immer
    If .Show = -1 Then MsgBox .SelectedItems(1) 'Zur weiteren Verwendung
End With
End Sub


ransi
Anzeige
AW: Laufwerk und Verzeichnisse aufrufen
25.03.2007 11:24:39
Christian
Hallo Ransi,
Vielen Dank für Deinen Hinweis. Bei der Zeile : If .Show = -1 MsgBox ..... kommt die Meldung: "Object unterstützt diese Eigenschaft oder Methode nicht". Weißt Du warum?
Gruß
Christian
AW: Laufwerk und Verzeichnisse aufrufen
25.03.2007 12:23:00
Horst
Hi,
der Code ist fehlerfrei!
nfg Horst

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige