ich möchte aus bestimmten Excel-Tabellen bestimmte Daten importieren! Der User soll über ein UserForm den Pfad dieser Dateien angeben. Geht das evtl. sogar mit einem schicken Verzeichnisbaum? Wie geht das mittels Makro?
Vielen Dank
Philipp
hallo philipp
einen schicken verzeichnissbaum?
versuch mal so:
Sub durchsuchen()
Dim Ordnerpfad
Dim dat
Set dat = Application.FileDialog(msoFileDialogFilePicker)
With dat
.Title = "Wo bin ich...."
.InitialFileName = "d:\" 'oder was auch immer
If .Show = -1 Then
For Each Ordnerpfad In .SelectedItems
MsgBox Ordnerpfad 'Zur weiteren verwendung
Next Ordnerpfad
End If
End With
End Sub
wenn du es ganz schick haben willst, versuch mal so:
Option Explicit
Private 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
Sub OrdnerAuswahl()
'aus den FAQ abgeschrieben
Dim smsg As String, spath As String
smsg = "Wo bin ich... ?"
spath = ordner(smsg)
If spath <> "" Then MsgBox spath
End Sub
Function ordner(Optional smsg) As String
Dim lpBrowseInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer
lpBrowseInfo.pidlRoot = 0&
If IsMissing(smsg) Then
lpBrowseInfo.lpszTitle = "Wählen sie bitte einen Ordner aus."
Else
lpBrowseInfo.lpszTitle = smsg
End If
lpBrowseInfo.ulFlags = &H1
x = SHBrowseForFolder(lpBrowseInfo)
path = Space$(512)
r = SHGetpathfromidlist(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
ordner = Left(path, pos - 1)
Else
ordner = ""
End If
End Function
bei VBA-Nein würde ich an deiner stelle aber die erste variante vorziehen.
ransi
Sub t()
Dim g
g = Application.GetOpenFilename
If g <> False Then MsgBox g
End Sub