Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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
Bilder in einem Ordner auslesen und sortieren
09.08.2017 16:26:57
Florian
Hallo Community,
ich benötige Hilfe bei einem Excel Makro.
Ich möchte dass alle Bild-Daten aus einem Ordner ausgelesen werden (Bild Name). Der Link der zu dem Ordnerführt soll in einer Msgbox eingegeben werden oder gleich über diese ausgewählt werden.
Ich habe mehrere Bilder die zu einem „Artikel“ gehören, das Hauptbild ist nur nach unserer Nummer benannt und alle fortlaufenden Bilder dann nach Nummer.01 /02 /03 ….. bis maximal .10 benannt, diese sollen dann auch gleich nebeneinander dargestellt werden.
Vorgehensweise wäre also folgende:
1. Makro über Schaltfläche aktivieren
2. Pfad zum Ordner in MsgBox eingeben
3. Bilddaten im Ordner werden ausgelesen
4. Zusammengehörende Bilder werden Nebeneinander dargestellt (bis max 10 Bilder, wenn es mehr sind die anderen nicht aufnehmen)
5. Usw.
6. End Sub ;)
Schon mal Danke für die Hilfe!

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder in einem Ordner auslesen und sortieren
09.08.2017 16:43:41
Michael
Hallo!
Worum geht's Dir genau?
Ich möchte dass alle Bild-Daten aus einem Ordner ausgelesen werden (Bild Name).
Zusammengehörende Bilder werden Nebeneinander dargestellt
Willst Du jetzt die Dateinamen aufgelistet haben, oder willst Du diese Bilddateien in Excel einfügen?
Wenn es um Zweiteres geht: Wohin? Auf ein Tabellenblatt? Dir ist klar, dass eingefügte Bilddateien die Dateigröße immens erhöhen? In welcher Größe sollen die Bilder ggf. eingefügt werden? Etc.
Schon mal Danke für die Hilfe!
Sofern Du schon erste Ansätze für diese Aufgabe hast, dann zeig sie, dann _helfen_ wir konkret dort weiter, wo Du stehst. Ansonsten bleib realistisch und bedank Dich ggf. für fertige Lösungen ;-).
LG
Michael
Anzeige
AW: Bilder in einem Ordner auslesen und sortieren
09.08.2017 18:11:47
Claus
Hallo,
also das Einlesen der Dateinamen in einem Verzeichnis kannst Du über folgenden Mechanismus machen:
Zeile=1
Datei = Dir(Pfad & "\Dateiname") -- Im Dateinamen sind Wildcards möglich, also beispielsweise *.jpg
Do Until Datei = ""
cells(zeile1,1)=Dateiname
...
Datei = Dir
Loop
Damit müsstest Du schon mal weiter kommen...
Die Pfadangabe über einen Dropdown zu machen, halte ich zwar für benutzerfreundlich, aber nicht zwingend nötig, denn den Pfad könntest Du ja in einem eigenen Sheet der Datei ablegen und dann auf die jeweilige Zelle referenzieren...
Gruss
Claus
Anzeige
AW: Bilder in einem Ordner auslesen und sortieren
10.08.2017 07:33:07
Florian
Hallo,
erst mal ein großes Kompliment, dass ist das erste Forum in dem ich tatsächlich mal eine Antwort auf eine Frage/Beitrag bekomme.
Ich habe das Ganze vielleicht etwas verwirrend erklärt.
Ich habe einen Ordner in dem sich Bilddaten zu unseren Artikel befinden, zu manchen Artikeln gibt es nur ein Bild, zu den meisten gibt es mehrer Bilder.
Ich möchte nun das alle Bildnamen in einer Exceltabelle aufgelistet werden.
Diese Makro Habe ich schon:
Sub Auslesen()
Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fdateien As Object
Dim strDat As String
Dim Zeile As Integer
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.getFolder("Link/zum/Ordner")
Set fdateien = fVerz.Files
For Each fDatei In fdateien
If InStr(fDatei, "") > 0 Then
Zeile = Zeile + 1
Cells(Zeile, 1) = fDatei.Name
End If
Next fDatei
End Sub
Das passt aber nicht so gut.
Es wäre gut wenn ich den Link zu dem Ordner in z.B. in Zelle C2 eintrage und das Makro dies dann erkennt und die Bildnamen ausließt, noch besser wäre wenn ich den Link zum Ordner direkt in einer MsgBox eintrage.
Und dann kommt der 2te Schritt:
Die Bildnamen werden in der Tabelle fortlaufen untereinander Dargestellt und zusätzlich werden Bilder die zum selben Artikel gehören in den Spalten neben dem Hauptbild dargestellt.
Ich versuch gerade mal schnell eine Excel Liste hochzuladen dort kann man in Tabellenblatt 2 sehen wie ich mir das Ergebnis Vorstelle.
Was man zusätlich noch beachten sollte ist, dass es zu manchen Artikeln mehr als 10 Bilder gibt ich benötige aber dann nur die Bildnamen der ersten 10.
Vorab schon mal vielen lieben Dank für die Hilfe!
Anzeige
Teste mal...
10.08.2017 13:04:48
Michael
Hallo Florian,
...folgenden Code auf Basis Deiner Bsp-Datei:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Beispiel")
Dim Dlg As FileDialog, Dic As Object
Dim Pfad$, Datei$, Rw&, Sp&, Idx$
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Bilder-Pfad wählen"
.AllowMultiSelect = False
If .Show  -1 Then
MsgBox "Vorgang abgebrochen", vbInformation
Exit Sub
Else: Pfad = .SelectedItems(1) & "\"
End If
End With
Set Dic = CreateObject("Scripting.Dictionary")
Datei = Dir(Pfad & "*.*", vbNormal)
With Ws
Do While Datei  ""
If LCase(Right(Datei, 3)) = "jpg" Or LCase(Right(Datei, 3)) = _
"png" Then
Idx = Left(Datei, InStr(1, Datei, ".") - 1)
Rw = .Cells(.Rows.Count, 8).End(xlUp).Offset(1, 0).Row
'Hauptdatei
If InStrRev(Datei, ".", Len(Datei) - 4) = 0 Then
If Not Dic.exists(Idx) Then
Dic.Add Idx, Rw
.Cells(Rw, 8) = Datei
.Cells(.Rows.Count, 6).End(xlUp).Offset(1, 0) = Datei
Else:
.Cells(Dic(Idx), 8) = Datei
.Cells(.Rows.Count, 6).End(xlUp).Offset(1, 0) = Datei
End If
'Folgedatei bis #10
Else:
Sp = CLng(Mid(Datei, InStr(1, Datei, ".") + 1, 2))
If Sp 
Pfad zum Ordner in MsgBox eingeben
Warum eine Inputbox (!), wenn man gleich einen Pfad-Auswahl-Dialog aufrufen kann; ist jetzt so im Code.
Noch eines: In Deiner Bsp-Datei listest Du in F:F alle Dateien auf, in H:H die Hauptdateien (ohne die zusätzliche Nummerierung), d.h. wenn Du neben den Hauptdateien die Folgedateien bis inkl. Nummerierung 10 willst, muss bis Spalte R eingetragen werden (ist in meinem Code auch so).
Gib Bescheid!
LG
Michael
Anzeige
AW: Teste mal...
10.08.2017 15:40:59
Florian
Hallo,
Danke für die Unterstützung echt!
Wenn ich das Makro ausführen will bekomme ich nach dem auswählen des Ordners die Fehlermeldung 13 "Typen Unverträglich" und es werden beim auswählen des Ordners im Ordner auch keine Inhalte (Bilder) angezeigt, obwohl sich JPEG Dateien darin befinden.
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Beispiel")
Dim Dlg As FileDialog, Dic As Object
Dim Pfad$, Datei$, Rw&, Sp&, Idx$
'''''Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Bilder-Pfad wählen"
.AllowMultiSelect = False
If .Show -1 Then
MsgBox "Vorgang abgebrochen", vbInformation
Exit Sub
Else: Pfad = .SelectedItems(1) & "\"
End If
End With
hier muss irgendwo der Wurm drin sein.
Nochmals echt vielen Dankt
Anzeige
Das kann ich nicht ganz nachvollziehen...
10.08.2017 15:54:39
Michael
Florian,
hier muss irgendwo der Wurm drin sein.
...denn ich habe meinen Code erfolgreich getestet.
werden beim auswählen des Ordners im Ordner auch keine Inhalte (Bilder) angezeigt
Ja, das passt so (in diesem Dialog) - es geht ja nur darum den Verzeichnis-Pfad zu erhalten; die Filterung über "png" bzw. "jpg" Dateitypen findet dann erst in der Schleife über die Dateien statt.
Wie gesagt, das läuft bei mir problemlos, ich kann daher noch nicht viel zu der Fehlermeldung sagen.
In welcher Codezeile springt der Debugger (gelb markiert) an?
LG
Michael
Anzeige
AW: Das kann ich nicht ganz nachvollziehen...
10.08.2017 16:08:34
Florian
Hallo,
habe es Fett markiert.
Ich überprüfe es bei mir auch nochmal.
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Beispiel")
Dim Dlg As FileDialog, Dic As Object
Dim Pfad$, Datei$, Rw&, Sp&, Idx$
'''''Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Bilder-Pfad wählen"
.AllowMultiSelect = False
If .Show -1 Then
AW: Das kann ich nicht ganz nachvollziehen...
10.08.2017 16:08:35
Florian
Hallo,
habe es Fett markiert.
Ich überprüfe es bei mir auch nochmal.
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Beispiel")
Dim Dlg As FileDialog, Dic As Object
Dim Pfad$, Datei$, Rw&, Sp&, Idx$
'''''Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Bilder-Pfad wählen"
.AllowMultiSelect = False
If .Show -1 Then
Anzeige
Das kann ich wirklich nicht nachvollziehen...
10.08.2017 16:30:20
Michael
Florian,
...arbeitest Du etwa nicht unter Windows? Greifst Du nicht auf ein lokales bzw. Netz-Laufwerk zu?
Sonst kann ich mir nicht mehr viel vorstellen.
Wie gesagt, der Code funktioniert, und mit dieser Pfad-Auswahl arbeite ich ständig.
Alternativ kannst Du auch den folgenden Code versuchen, da wird die Pfadangabe aus Zelle C2 des angegebenen Blattes (hier "Beispiel") bezogen:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Beispiel")
Dim Dlg As FileDialog, Dic As Object
Dim Pfad$, Datei$, Rw&, Sp&, Idx$
Application.ScreenUpdating = False
Pfad = IIf(Right(Ws.Range("C2"), 1) = "\", Ws.Range("C2"), _
Ws.Range("C2") & "\")
Set Dic = CreateObject("Scripting.Dictionary")
Datei = Dir(Pfad & "*.*", vbNormal)
With Ws
Do While Datei  ""
If LCase(Right(Datei, 3)) = "jpg" Or LCase(Right(Datei, 3)) = _
"png" Then
Idx = Left(Datei, InStr(1, Datei, ".") - 1)
Rw = .Cells(.Rows.Count, 8).End(xlUp).Offset(1, 0).Row
'Hauptdatei
If InStrRev(Datei, ".", Len(Datei) - 4) = 0 Then
If Not Dic.exists(Idx) Then
Dic.Add Idx, Rw
.Cells(Rw, 8) = Datei
.Cells(.Rows.Count, 6).End(xlUp).Offset(1, 0) = Datei
Else:
.Cells(Dic(Idx), 8) = Datei
.Cells(.Rows.Count, 6).End(xlUp).Offset(1, 0) = Datei
End If
'Folgedatei bis #10
Else:
Sp = CLng(Mid(Datei, InStr(1, Datei, ".") + 1, 2))
If Sp 
Dann könntest Du wenigstens die grds. Funktionalität testen...
LG
Michael
Anzeige
AW: Das kann ich wirklich nicht nachvollziehen...
10.08.2017 17:04:02
Florian
Hallo,
es tut mir sehr leid das ich da nicht hin bekomme!
kann es sein das hier (Fett Markiert) etwas nicht stimmt?
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Beispiel")
Dim Dlg As FileDialog, Dic As Object
Dim Pfad$, Datei$, Rw&, Sp&, Idx$
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Bilder-Pfad wählen"
.AllowMultiSelect = False
If .Show -1 Then
MsgBox "Vorgang abgebrochen", vbInformation
Exit Sub
Else: Pfad = .SelectedItems(1) & "\"
End If
End With
Set Dic = CreateObject("Scripting.Dictionary")
Datei = Dir(Pfad & "*.*", vbNormal)
With Ws
Do While Datei ""
If LCase(Right(Datei, 3)) = "jpg" Or LCase(Right(Datei, 3)) = _
"png" Then
Idx = Left(Datei, InStr(1, Datei, ".") - 1)
Rw = .Cells(.Rows.Count, 8).End(xlUp).Offset(1, 0).Row
'Hauptdatei
If InStrRev(Datei, ".", Len(Datei) - 4) = 0 Then
If Not Dic.exists(Idx) Then
Dic.Add Idx, Rw
.Cells(Rw, 8) = Datei
.Cells(.Rows.Count, 6).End(xlUp).Offset(1, 0) = Datei
Else:
.Cells(Dic(Idx), 8) = Datei
.Cells(.Rows.Count, 6).End(xlUp).Offset(1, 0) = Datei
End If
'Folgedatei bis #10
Else:
Sp = CLng(Mid(Datei, InStr(1, Datei, ".") + 1, 2))
Gäbe es die Möglichkeit das ich einfach deine Liste runterlade? (die in der das Makro läuft)
Danke für die Geduld echt!
Und doch ich Arbeite unter Windows.
Anzeige
NEIN!...
10.08.2017 17:14:09
Michael
Florian,
kann es sein das hier (Fett Markiert) etwas nicht stimmt?
...das kann nicht sein, da ich, wie bereits erwähnt, den Code schon erfolgreich getestet habe.
Hier Deine adaptierte Bsp-Datei retour: https://www.herber.de/bbs/user/115383.xlsm
Ich habe Dir beide Makros, Pfad-Auswahl als Dialog bzw. per Zelle, eingefügt - Du siehst auf dem Tabellenblatt für jedes Makro eine Schaltfläche. Wenn Du die Zell-Version nimmst, muss natürlich in C2 eine Pfadangabe stehen.
Wenn das nicht klappt, kann ich Dir nicht mehr helfen - mein Code funktioniert!
LG
Michael
AW: NEIN!...
11.08.2017 07:53:29
Florian
Hallo Michael,
ich bin ein trottel :D!
Das Makro funktioniert tadellos.
Die Bilder sind bei uns mit .pt01 .pt02 .pt03 benannt nicht nur mit .01 .02 .03.
Ich versuche das anzupassen.
Ich wollte dich auch gestern auf keinen Fall angreifen, ich bin sehr dankbar das du mir überhaupt geholfen hast.
Also nochmal vielen Dank!
Freut mich und...
11.08.2017 07:57:19
Michael
Guten Morgen Florian,
...wenn Du noch warten kannst, passe ich Dir den Code im Laufe des Vormittags noch entsprechend an.
Aber schon mal danke für die Rückmeldung.
Lg Michael
P.s.: Ich habe mich nicht angegriffen gefühlt 😉
Ergänzung...
11.08.2017 09:26:01
Michael
Hallo Flo!
Hier, wie versprochen, nochmal die Beispielmappe mit ergänztem Code, der die Bezeichnung "###.pt##.jpg" (bzw. .png) abdeckt: https://www.herber.de/bbs/user/115397.xlsm
Viel Erfolg damit!
LG
Michael
AW: Ergänzung...
11.08.2017 12:15:53
Florian
Hallo,
Perfekt, funktioniert TOP!
Vielen Dank!
Gerne, Danke für die Rückmeldung, owT
11.08.2017 12:17:08
Michael

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige