Bildabmessungen mit GetDetailsOf
Jeziro
Ich kämpfe mit einem komischen Problem. Ich habe Windows 7 und Excel 2003. Ich habe mir ein VBA Script geschrieben, mit welchem ich die Bildabmessungen von JPG Dateien in beliebigen Ordnern für die weitere Verarbeitung auslesen kann. Hierzu wird der Bildname, die Breite und die Höhe des jeweiligen Bildes mit GetDetailsOf ausgelesen. Wichtig ist, dass die Abmessungen als Zahlen in der Zelle landen, damit ich anschließend Berechnungen damit durchführen kann. Dir (abgespeckte) Code sieht folgendermaßen aus:
Sub einlesen2()
Dim objShell As Object
Dim objFolder As Object
Dim lngZeile As Long
Dim varFolderItem
Dim wks As Worksheet
Set wks = ThisWorkbook.Sheets("HTML-Generator")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(wks.Cells(2, 2).Value) 'Zelle B2 enthält den Pfad zum _
auszulesenden Ordner
lngZeile = 10
For Each varFolderItem In objFolder.Items
'Namen und Bildgrößen holen
wks.Cells(lngZeile, 1) = varFolderItem.Name
wks.Cells(lngZeile, 2) = Replace(objFolder.GetDetailsOf(varFolderItem, 162), " Pixel", " _
")
wks.Cells(lngZeile, 3) = Replace(objFolder.GetDetailsOf(varFolderItem, 164), " Pixel", " _
")
lngZeile = lngZeile + 1
Next
End Sub
In den Spalten B und C sehe ich nun auch Zahlen (z.B. 170), versuche ich diese allerdings zu addieren, so erhalte ich einen Fehler. Eine genauere Untersuchung der Zahlen ergibt, dass diese ein weiteres unsichtbares Zeichen an erster Stelle enthalten. Der Befehl Code() zeigt mir, dass es sich um ein Fragezeichen handelt (Wert 63). Auch ein Blick in das Lokal-Fenster bestätigt dies, da dort das Fragezeichen sichtbar ist. Versuche ich es allerdings mit der Replace-Funktion zu entfernen, so klappt es nicht. Versuche ich via vba danach zu suchen, so wird nichts gefunden. Mit der Excel Funktion SUCHEN finde ich das Fragezeichen hingegen problemlos.
Wie kriege ich das mistding weg, ohne ungeprüft das erste Zeichen zu löschen. Ich würde gerne Prüfen, ob sich an erster Stelle ein Fragezeichen befindet und dies dann löschen.
Hat jemand eine Idee?