Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1868to1872
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
Inhaltsverzeichnis

objFileDialog umändern

objFileDialog umändern
14.02.2022 11:32:32
Chris
Hallo liebe Helfer!!!
ich habe einen super CODE, mit dem ich mittels objFileDialog einen Ordner wählen konnte und dann die META-Daten aller Dateien auslesen konnte. Funktioniert perfekt funktioniert...
Diesen muss ich jetzt aber (möglichst aufwandsarm) so anpassen, dass er nacheinander eine kleine UNC-Pfad Liste abarbeitet, und genaud das gleiche macht wie vorher. Nur eben nicht nur für einen manuell ausgewählten Ordner, sondern für mehrere (sind ca. 5 im BEreich A2 bis A10) einer weiteren Tabelle.
Hier mein bisheriger CODE (habe NICHT relevantes Zeug rausgenommen...) ... Wir hat eine Idee, wie ich möglichst wenig anpassen muss? DANKE DANKE DANKE

Set objFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
With objFileDialog
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(.SelectedItems(1))
astrFolders = GetFolders(.SelectedItems(1) & "\")
HauptOrdnerString = objFolder.Title
' Jeden Ordner (zunächst den Hauptordr, dann die unterordner, durchlaufen
For Each vntFolder In astrFolders
Set objFolder = objShell.Namespace(vntFolder)
' Alle Zeilen d.h. Dateien durchlaufen
For Each vntFileName In objFolder.items
Do Until lngIndex = 333
If objFolder.GetDetailsOf(vntFileName, lngIndex)  "" Then
Worksheets(1).Cells(Startzeile + lngRow, vonSpalte + i) = objFolder.GetDetailsOf(vntFileName, lngIndex)
End If
i = i + 1
lngIndex = lngIndex + 1
Loop
lngRow = lngRow + 1
lngIndex = 1
i = 2
Next
Next

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

Betreff
Datum
Anwender
Anzeige
AW: objFileDialog umändern
14.02.2022 14:19:23
Rudi
Hallo,
als Ansatz:

Dim rngC As Range
Set objShell = CreateObject("Shell.Application")
For Each rngC In Range("A2:A10")
Set objFolder = objShell.Namespace(rngC)
astrFolders = GetFolders(rngC & "\")
HauptOrdnerString = objFolder.Title
' Jeden Ordner (zunächst den Hauptordr, dann die unterordner, durchlaufen
For Each vntFolder In astrFolders
Set objFolder = objShell.Namespace(vntFolder)
' Alle Zeilen d.h. Dateien durchlaufen
For Each vntFileName In objFolder.items
Do Until lngIndex = 333
If objFolder.GetDetailsOf(vntFileName, lngIndex)  "" Then
Worksheets(1).Cells(Startzeile + lngRow, vonSpalte + i) = _
objFolder.GetDetailsOf(vntFileName, lngIndex)
End If
i = i + 1
lngIndex = lngIndex + 1
Loop
lngRow = lngRow + 1
lngIndex = 1
i = 2
Next
Next
Next rngC
Gruß
Rudi
Anzeige
AW: objFileDialog umändern
14.02.2022 14:32:11
Piet
Hallo
und höfliche Frage zu dieser Zeile - astrFolders = GetFolders(rngC & "\") bei mir erscheint die Zeile in gelb mit der Meldung:
Fehler beim Kompilieren! Sub oder Funktion nicht definiert. Woran kann das liegen? Excel 2016 In Zelle A2 steht dieser Ordner - D:\Excel Forum
mfg Piet
AW: objFileDialog umändern
14.02.2022 15:18:19
Rudi
Hallo,
GetFolders() dürfte eine eigene Function sein, deren Code wir nicht kennen.
Gruß
Rudi
AW: objFileDialog umändern
14.02.2022 15:41:36
Nepumuk
Hallo,
das ist GetFolders:

Private Function GetFolders(ByVal pvstrPath As String) As String()
Dim astrFolders() As String
Dim strFolder As String, strPath As String
Dim ialngIndex1 As Long, ialngIndex2 As Long
ReDim Preserve astrFolders(ialngIndex1)
astrFolders(ialngIndex1) = pvstrPath
ialngIndex1 = 1
ialngIndex2 = 1
strPath = pvstrPath
Do
strFolder = Dir$(PathName:=strPath & "*", Attributes:=vbDirectory)
Do Until strFolder = vbNullString
If strFolder  "." And strFolder  ".." Then
If GetAttr(PathName:=strPath & strFolder) And vbDirectory Then
ReDim Preserve astrFolders(0 To ialngIndex1)
astrFolders(ialngIndex1) = strPath & strFolder & "\"
ialngIndex1 = ialngIndex1 + 1
End If
End If
strFolder = Dir$
Loop
If ialngIndex1 = ialngIndex2 Then Exit Do
strPath = astrFolders(ialngIndex2)
ialngIndex2 = ialngIndex2 + 1
Loop
GetFolders = astrFolders
End Function
Gruß
Nepumuk
Anzeige
AW: objFileDialog umändern
14.02.2022 17:04:30
Piet
Danke an Nepumuk
amüsant, genau den Code habe ich in einer Datei von dir, aber der Groschen ist mir jetzt erst gefallen das er von dir stammt! Danke für die Auskunft.
mfg Piet
AW: objFileDialog umändern
15.02.2022 09:05:27
christoph.essen@gmx.de
Hallo Rudi & Nepumuk, DANKE schonmal...
In dieser Zeile hängt er aber und das ObjFolder bleibt NOTHING:
Set objFolder = objShell.Namespace(rngC)
Liegt das etwa an dem Unterschied zum UNC-Pfad? Im alten Code wurde vom objFileDialog.selectedItems(1) als "Z:\..." gespeichert...
rngC im neuen CODe hat aber ja die UNC Schreibweise, also "\\server\..."
Könnte das der Grund sein? Wie wandel ich also den String rngC in die "normale" (nicht-UNC) Pfad-Schreibweise um?
VLG und DANKE Euch... Bin Euch immer sehr DANKBAR.
Anzeige
AW: objFileDialog umändern
15.02.2022 09:09:56
christoph.essen@gmx.de
:-( ... Nee Habe es gerade ausprobiert und in den Rangebereich einfach einen Pfad in normalerschreibweise eingetragen. Gleicher Fehler.
Das objFolder bleibt NOTHING. Also liegt es an der folgenden Zeile:

Set objFolder = objShell.Namespace(rngC)
Vorher hieß die Zeile, bei der alles geklappt hat:

With objFileDialog
If .Show = -1 Then
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(.SelectedItems(1))

AW: objFileDialog umändern
15.02.2022 09:30:48
christoph.essen@gmx.de

Set objFolder = objShell.Namespace(UCase(rngC))
DIE LÖSUNG: UCase hat gefehlt... Verrückt aber wahr.
Jetzt läuft es. 1000 DANK und VLG an alle, die hier so großartig mitmachen!!!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige