online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon snailhouse vom 14.11.2019, 21:14 Options

Excel VAB: FileDialog

Hallo zusammen,

ich möchte ähnlich wie in diesem Beispiel (aus der Hilfe) einen Ordner auswählen, um diesen Pfad anschließend in einem Makro weiterzuverwenden
(in diesem Beispiel lassen sich leider nur Dateien auswählen). Was muss ich hierfür an den Parametern ändern?


Sub UseFileDialogOpen()
    Dim lngCount As Long
    ' Open the file dialog
    With Application.FileDialog(msoFileDialogOpen)
        .Show
        ' Display paths of each file selected
        For lngCount = 1 To .SelectedItems.Count
            MsgBox .SelectedItems(lngCount)
        Next lngCount
    End With
End Sub


Gruß
Jürgen


Antwort schreiben

Antwort 1 von snailhouse vom 14.11.2019, 21:16 Options

Die Überschrift sollte natürlich
Excel VBA: FileDialog
heißen..

Antwort 2 von gast123 vom 15.11.2019, 16:09 Options

hi all

ein beispiel :-)

gruss gast123

Option Explicit
Private Type BrowseInfo
hwndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pIDList As Long, ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Dim Verzeichnisse()
Dim Dateien()
Dim Anzdateien As Long
Sub Einlesen()
Dim Ordnername
Dim Pfad1 As String
Dim Obergrenze As Long
Dim Anzordner As Long
Dim i As Long
Const cVerzeichnistiefe = 5
Dim intVerzeichnistiefe As Integer
Dim Start As Long
Ordnername = Ordnerwählen("Ab welchem Verzeichnis einlesen?")
If Ordnername = False Then Exit Sub
ChDir Ordnername
ChDir ".."
If Ordnername <> "" Then
Anzdateien = 0
intVerzeichnistiefe = 0
Pfad1 = Ordnername
If Right(Ordnername, 1) <> "\" Then Pfad1 = Pfad1 & "\"
ReDim Verzeichnisse(0)
Verzeichnisse(0) = Pfad1
Obergrenze = UBound(Verzeichnisse)
ReDim Dateien(0)

Rekursion:
For i = Start To Obergrenze
Verzeichnisse_suchen Verzeichnisse(i), Obergrenze
intVerzeichnistiefe = intVerzeichnistiefe + 1
Start = Start + 1
Obergrenze = UBound(Verzeichnisse)
If intVerzeichnistiefe < cVerzeichnistiefe Then GoTo Rekursion
intVerzeichnistiefe = intVerzeichnistiefe - 1
Next
Anzordner = Obergrenze + 1
If Anzordner = 0 Then
MsgBox "Es gibt nichts zu tun!", vbInformation + vbOKOnly, "Keine Ordner"
Else
For i = 0 To Anzordner - 1
Cells(i + 1, 1).Value = Verzeichnisse(i)
Next
End If
End If
End Sub

Private Sub Verzeichnisse_suchen(ByVal Pfad As String, ByVal Arraygrenze As Long)
Dim Name1 As String
Name1 = Dir(Pfad, vbDirectory)
Do While Name1 <> ""
If Name1 <> "." And Name1 <> ".." Then
If (GetAttr(Pfad & Name1) And vbDirectory) = vbDirectory Then
Arraygrenze = Arraygrenze + 1
ReDim Preserve Verzeichnisse(Arraygrenze)
Verzeichnisse(Arraygrenze) = Pfad & Name1 & "\"
End If
End If
Name1 = Dir
Loop
End Sub

Private Function Ordnerwählen(ByVal strTitle As String) As String
Dim lngIDList As Long
Dim strBuffer As String
Dim UserBrowseInfo As BrowseInfo
With UserBrowseInfo
.hwndOwner = 0
.lpszTitle = lstrcat(strTitle, "")
.ulFlags = 3
End With
lngIDList = SHBrowseForFolder(UserBrowseInfo)
If (lngIDList) Then
strBuffer = Space(260)
SHGetPathFromIDList lngIDList, strBuffer
strBuffer = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
Ordnerwählen = strBuffer
End If
End Function 

Antwort 3 von Marie vom 16.11.2019, 02:30 Options

http://www.supportnet.de/fresh/2005/11/id1205132.asp

Antwort 4 ist der BrowseFolder Dialog von Terry Kraft. Um gleich die Frage zu beantworten, die ich damals nicht gesehen hatte:Das Ist eine API, die kannst Du überall benutzen, egal in welcher Version von VB oder VBA.

Gruß Marie

Antwort 4 von snailhouse vom 22.11.2019, 00:25 Options

Hallo,

vielen Dank für die Info, ich glaube, das muss ich mir erst einmal in Ruhe anschauen... ich hatte gehofft, das Problem läßt sich einfacher lösen... aber da muss ich mich erst einmal durchbeißen.

Trotzdem natürlich danke!

Gruß
Jürgen

Ähnliche Themen

symbolleisten in excel
luisa  14.01.2007 - 253 Hits - 4 Antworten

Excel 2002 Dateien in Excel 2007 für MS Vista Home Premium
1tiggy  09.11.2007 - 181 Hits - 5 Antworten

*.msg Dateien mit Excel verschicken
Bugg  15.11.2007 - 87 Hits -

Absturz von Powerpoint UND Excel
RalfH  22.11.2007 - 144 Hits -

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 16:59:01 2026