Danke für deine Hilfe. Das sieht für mich alles völlig wild und kompliziert aus.
Wenn du versuchst alles auf einmal zu verstehen, dann mag das zutreffen.
Betrachte eine Methode für sich und ignoriere den Rest.
Beispiel:
Sub Example()
If SearchFiles(strSelectedPath, colFiles) = 0 Then
'...
End If
End Sub
Search Files hat zwei Parameter und gibt einen Wert zurück. Den Namen nach ist der erste Parameter der vom nutzer ausgewählte Pfad und das zweite ist eine Collection mit Datei-Treffern. Der Rückgabewert ist die Anzahl der Treffer.
WIE diese Funktion an diese Informationen gelangt und sie dir schlussendlich liefern kann, ist dir an dieser Stelle hier völlig egal. Du bekommst sie einfach, Punkt!
Das gleiche gilt für alle Funktionen, auch
Private Function CheckFile(FullFilename As String) As Boolean
CheckFile = Right$(FullFilename, 4) = ".png"
End Function
Der Zweck dieser Funktion ist es, anhand des ihr übergebenen Dateinamens zu entscheiden, ob damit alles ok ist, oder nicht. Mehr interessiert dich hier an der Stelle nicht. Auch nicht wer sie aufruft.
Betrachtest du dir später
Private Function SearchFiles(Path As String, FoundFiles As VBA.Collection) As Long
dann wirst du CheckFile() dort vorfinden. An der Stelle interessiert dich aber nicht was diese Methode intern macht, es ist nur wichtig, dass sie die Information liefert, obdie Datei ein Treffer ist, oder nicht. Worauf die da drin genau schaut, ist für die Funktion SearchFiles() komplett wurscht!
Kurzum: Zerlege dein großes Problem in kleinere Probleme und betrachte jedes für sich. Allein dadurch schreibst du bereits übersichtlichen, wartbaren Code.
Kurze Verständnisfrage:
strSelectedPath = "C:\PP\Standort\Abteilung\Bereich\Bilder"
Kann ich auch durch meinen code ersetzen? Mir wäre es wichtig die Ordner manuell auszuwählen.
Klar kannst du das. Ich dachte das wäre offensichtlich und war deshalb zu faul. ;o)
Aus
Dim strSelectedPath As String
strSelectedPath = "C:\PP\Standort\Abteilung\Bereich\Bilder" '< bei dir kommt das durch den Auswahl-Dialog herein
wird
Set xFDObject = Application.FileDialog(msoFileDialogFolderPicker)
With xFDObject
.Title = "Bitte den Ordner mit den Bildern wählen:"
.InitialFileName = Application.ActiveWorkbook.Path
.Show
.AllowMultiSelect = False
End With
'Nur wenn ein Ordner angewählt wurde
If xFDObject.SelectedItems.Count > 0 Then
strSelectedPath = xFDObject.SelectedItems.Item(1)
Else
MsgBox "Keinen Ordner Ausgewählt", vbInformation Or vbOKOnly, "/ Information"
Exit Sub
End If
Grüße
|