| 
		
	
	
	
		
	Registriert seit: 03.11.2022
	
Version(en): 2019
 
	
		
		
		03.11.2022, 22:17 
(Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2022, 12:45 von Glausius.)
		
	 
		Hallo Exceler, ich lese mit folgendem VBA den Ordner mit Bildern aus. Das funktioniert wunderbar. Aber, so wie immer, wenn es dem Esel zu gut geht, geht er aufs Eis. Ich möchte gerne diesen Code erweitern. Und zwar sollte er noch die Pixel der Bilder anzeigen. Ist das überhaupt möglich? Code: Sub DateienKalmi300()
 Dim lngZeile As Long
 Dim objFileSystem As Object
 Dim objVerzeichnis As Object
 Dim objDateienliste As Object
 Dim objDatei As Object
 
 With Worksheets("Kalmi300")
 Sheets("Kalmi300").Select
 ActiveSheet.Unprotect
 
 Range("A4:A5000").ClearContents
 Range("A2").Select
 
 Set objFileSystem = CreateObject("scripting.FileSystemObject")
 Set objVerzeichnis = objFileSystem.getfolder("F:\Pictures\Kalmi\Bilder\300x300\")
 Set objDateienliste = objVerzeichnis.Files
 
 lngZeile = 4
 
 For Each objDatei In objDateienliste
 If Not objDatei Is Nothing And Right(LCase(objDatei.Name), 4) = ".jpg" Then
 ActiveSheet.Cells(lngZeile, 1) = objDatei.Name
 lngZeile = lngZeile + 1
 End If
 
 Next objDatei
 End With
 ActiveSheet.Protect
 
 End Sub
Vielen Dank für eure Hilfe Gruß Karlheinz
	
Nochmals vielen Dank
 
 Gruß
 
 Karlheinz
 
	
	
	
		
	Registriert seit: 22.11.2019
	
Version(en): 365
 
	
	
		Hallo Karlheinz, schau mal, ob Dich dies weiterbringt... Code: 
 Sub Test()Debug.Print GetDetails("D:\Pictures\Fotos\2008\Urlaub\Kroatien\", "Kroatien_2008.jpg")
 End Sub
 
 Function GetDetails(sPath As String, sFile As String)
 With CreateObject("Shell.Application").Namespace(CVar(sPath))
 GetDetails = .GetDetailsOf(sFile, 31) & " " & .GetDetailsOf(.ParseName(sFile), 31)
 End With
 
 End Function
 
_________viele Grüße
 Karl-Heinz
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:1 Nutzer sagt Danke an volti für diesen Beitrag 28
	  • Karlheinz16 
	
	
	
		
	Registriert seit: 03.11.2022
	
Version(en): 2019
 
	
	
		Hallo Karl-Heinz, vielen Dank für deinen Versuch mir zu helfen. Wenn ich das richtig sehe, dann ist das für "1" Bild, ich stelle mir aber das etwas anders vor. So zum Beispiel:
 Bild:      Breite: Höhe:
 IMG_1     300    247
 IMG_2   1500    900
 IMG_3     147    315
 
 Also eine Auflistung sämtlicher Bilder mit den dazu gehörigen Abmessungen.
 
 Trotzdem, vielen Dank für deinen Versuch.
 
 Gruß
 
 Karlheinz
 
Nochmals vielen Dank
 
 Gruß
 
 Karlheinz
 
	
	
	
		
	Registriert seit: 22.11.2019
	
Version(en): 365
 
	
	
		Hallo Karlheinz, hier noch ein Versuch. Leider ungetestet, da ich weder eine Testdatei noch den Testordner mit Bildern habe. Aber vielleicht hilft es Dir trotzdem.Tipp:  Die WITH-Klausel kann entfallen, da Du da ja gar nicht drauf referenzierst. Dazu müsstest Du jeweils einen Punkt vor die betreffenden Befehle setzen. (.Cells...) Da Du das Blatt ja selektiert hast, ist es aber ohnehin immer das ActiveSheet....... Code: 
 Sub DateienKalmi300()
 Dim lngZeile As Long
 Dim objFileSystem As Object
 Dim objVerzeichnis As Object
 Dim objDateienliste As Object
 Dim objDatei As Object
 Dim sArr() As String
 
 Sheets("Kalmi300").Select
 ActiveSheet.Unprotect
 
 Range("A4:A5000").ClearContents
 Range("A2").Select
 
 Set objFileSystem = CreateObject("scripting.FileSystemObject")
 Set objVerzeichnis = objFileSystem.GetFolder("F:\Pictures\Kalmi\Bilder\300x300\")
 Set objDateienliste = objVerzeichnis.Files
 
 lngZeile = 4
 
 For Each objDatei In objDateienliste
 If Not objDatei Is Nothing And Right(LCase(objDatei.Name), 4) = ".jpg" Then
 
 Cells(lngZeile, 1).Value = objDatei.Name
 With CreateObject("Shell.Application").Namespace(CVar(objDatei.Path))
 sArr = Split(.GetDetailsOf(.ParseName(objDatei.Name), 31), " x ")
 End With
 Cells(lngZeile, 2).Value = Mid$(sArr(0), 2)
 Cells(lngZeile, 3).Value = Left$(sArr(1), Len(sArr(1)) - 1)
 
 lngZeile = lngZeile + 1
 End If
 Next objDatei
 ActiveSheet.Protect
 
 End Sub
_________viele Grüße
 Karl-Heinz
 
	
	
	
		
	Registriert seit: 03.11.2022
	
Version(en): 2019
 
	
	
		Hallo Karl-Heinz,leider läuft der Code nicht. Es kommt folgende Fehlermeldung:
 
 Laufzeitfehler '-2147467259(80004005)
 Automatisierungsfehler
 Unbekannter Fehler
 
 Keine Ahnung, was das bedeuten soll.
 
 Gruß
 
 Karlheinz
 
Nochmals vielen Dank
 
 Gruß
 
 Karlheinz
 
	
	
	
		
	Registriert seit: 10.04.2014
	
Version(en): 97-2019 (32) + 365 (64)
 
	
	
		Hallo Karlheinz,
 das ist doch beim NameSpace, der keinen Spaß macht?
 
.      \\\|///      Hoffe, geholfen zu haben.( ô ô )      Grüße, André aus G in T
 ooO-(_)-Ooo    (Excel 97-2019+365)
 
	
	
	
		
	Registriert seit: 03.11.2022
	
Version(en): 2019
 
	
	
		Hallo schauan,leider verstehe ich das nicht. Was bedeutet das? Ist das so ein Insider-Witz?
 
 Trotzdem Danke
 
 Gruß Karlheinz
 
Nochmals vielen Dank
 
 Gruß
 
 Karlheinz
 
	
	
	
		
	Registriert seit: 10.04.2014
	
Version(en): 97-2019 (32) + 365 (64)
 
	
	
		Hallöchen,
 anders gesagt - wo kommt der Fehler?
 
.      \\\|///      Hoffe, geholfen zu haben.( ô ô )      Grüße, André aus G in T
 ooO-(_)-Ooo    (Excel 97-2019+365)
 
	
	
	
		
	Registriert seit: 10.04.2014
	
Version(en): 97-2019 (32) + 365 (64)
 
	
	
		Hallöchen, hier mal noch was, wo es mit dem NameSpace klappt - wie gesagt, falls dass die Klemmstelle war. Der Code kommt ohne das FileSystemObjekt aus. Ich hab die Size nicht extra gesplittet, und du müsstest sicher noch den Blattnamen anpassen (statt der 1) und ggf. auch nicht das ganze Blatt leeren... Code: Public Sub ExtractImageSize()Dim varPath, varFileName
 Dim objShell As Object, objFolder As Object
 Dim lngZeile  As Integer
 
 'Pfad festlegen
 varPath = "C:\Test\"
 'Blatt 1 aktivieren
 Worksheets(1).Activate
 'komplettes Blatt 1 leeren
 Cells.ClearContents
 'Objekte instanzieren
 Set objShell = CreateObject("Shell.Application")
 Set objFolder = objShell.Namespace(varPath)
 
 'Schleife ueber alle Items des Ordners
 For Each varFileName In objFolder.Items
 Debug.Print varFileName.isfolder 'Zeile kann weg ...
 'Wenn .jpg im Filename enthalten ist, dann
 'Hinweis: ein Schelm, der .jpg irgendwo anders hat als am Ende :-)
 If InStr(1, varFileName, ".jpg") Then
 'Zeilenzaehler hochsetzen (Start hier bei Zeile 1, ansonsten vor der Schleife einen Startwert -1 programmieren)
 lngZeile = lngZeile + 1
 'Filename in Spalte A ausgeben
 Cells(lngZeile, 1) = varFileName.Name
 'Size in Spalte B ausgeben
 Cells(lngZeile, 2) = objFolder.GetDetailsOf(varFileName, 31)
 'Ende Wenn .jpg im Filename enthalten ist, dann
 End If
 'Ende Schleife ueber alle Items des Ordners
 Next
 End Sub
.      \\\|///      Hoffe, geholfen zu haben.( ô ô )      Grüße, André aus G in T
 ooO-(_)-Ooo    (Excel 97-2019+365)
 
	
	
	
		
	Registriert seit: 03.11.2022
	
Version(en): 2019
 
	
	
		Hallo schauan, jetzt kommt
 
 Laufzeitfehler '91':
 Objektvariable oder With-Blockvariable nicht festgelegt
 
 Was habe ich falsch gemacht?
 
 Gruß
 
 Karlheinz
 
Nochmals vielen Dank
 
 Gruß
 
 Karlheinz
 |