Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bildgröße in Pixeln auslesen, Excel 2000

Forumthread: Bildgröße in Pixeln auslesen, Excel 2000

Bildgröße in Pixeln auslesen, Excel 2000
24.02.2007 22:04:05
Kasimir
Hallo an alle!
Ich habe da mal eine Frage, zu einem Makro, dass ich zum Teil in der Recherche gefunden habe. Mit nachfolgendem Makro kann ich aus einem Bild, die Eigenschaften und hier speziell die Breite und Höhe in Pixelangaben, auslesen. Nun ist mir aber aufgefallen, dass dieser Code in Excel 2000 so nicht funktioniert.
Option Explicit
Sub Bildeigenschaften()
Dim Drive As String, Pfad As String
Dim objShell As Object, objFolder As Object
Dim varName As Object, Breite As Variant, Höhe As Variant
Dim sPath As Variant, sFile As String
Dim Bild As Variant
Drive = Left(ThisWorkbook.Path, 2)
Pfad = "C:\"
ChDrive (Drive)
ChDir (Pfad)
Bild = Application.GetOpenFilename( _
"Bilddateien (*.JPG), *.xls, Alle Dateien (*.*), *.*", 1, _
"Bild auswählen...", MultiSelect:=False)
If Bild = "" Or Bild = False Then Exit Sub
If Right(Bild, 3) <> "jpg" Then Exit Sub
If Bild = False Then Exit Sub
sFile = Dir(Bild)
sPath = Replace(Bild, sFile, "")
sPath = Left(sPath, Len(sPath) - 1)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(sPath)
For Each varName In objFolder.Items
If varName = sFile Then
Breite = objFolder.GetDetailsOf(varName, 27)
Höhe = objFolder.GetDetailsOf(varName, 28)
Exit For
End If
Next
Breite = CInt(Mid(Breite, 1, InStr(1, Breite, " ") - 1))
Höhe = CInt(Mid(Höhe, 1, InStr(1, Höhe, " ") - 1))
MsgBox Breite & " , " & Höhe

Das Problem ist, dass mir der Code in Excel 2003 die Breite und Höhe ausgibt. In Excel 2000 leider nicht. Es kommt zu einem Laufzeitfehler 91 und die Zeile
For Each varName In objFolder.Items
wird gelb markiert. Weiß jemand, warum das so ist?
Danke Euch,
Kasimir
Anzeige

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bildgröße in Pixeln auslesen, Excel 2000
24.02.2007 22:40:02
Jörg
Hi,
geht in Excel 2000 ohne problem.
mfg Jörg
AW: Bildgröße in Pixeln auslesen, Excel 2000
24.02.2007 23:32:23
Kasimir
Hallo Jörg,
danke Dir für Deine Antwort. Bei mir funktionierts leider nicht. Ich habe das Makro mal auf einem anderen Rechner ausprobiert, aber ebenfalls unter Excel 2000. Dort erhalt ich einen Fehler in den Zeilen
Breite = CInt(Mid(Breite, 1, InStr(1, Breite, " ") - 1))
Höhe = CInt(Mid(Höhe, 1, InStr(1, Höhe, " ") - 1))

Das liegt aber scheinbar daran, das die Variablen Breite und Höhe keine Werte erhalten und daher kann in den Werten auch nicht nach einem Leerzeichen gesucht werden. Weiß jemand, warum die variablen leer sind.
Danke Euch,
Kasimir
Anzeige
AW: Bildgröße in Pixeln auslesen, Excel 2000
24.02.2007 23:53:59
Jörg
Hi,
wenn
Breite = CInt(VBA.Mid(Breite, 1, InStr(1, Breite, " ") - 1))
Höhe = CInt(VBA.Mid(Höhe, 1, InStr(1, Höhe, " ") - 1))
funktioniert, stimmt was mit den Verweisen nicht, ggf. neu setzen.
mfg Jörg
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 00:03:42
Kasimir
Hallo Jörg,
danke Dir für die Antwort. Das mit den Verwiesen kann ich mir nicht vorstellen, da es definitiv daran liegt, dass die Variablen keinen Wert enthalten. Da die Instr-Methode nicht nach einen Leeerzeichen suchen kann, erscheint der Fehler. Mein Problem ist es nun, warum ernthalten die Variablen keinen Wert.
Gruß Kasimir
Anzeige
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 08:56:05
ransi
Hallo Kasimir
Evtl. liegt es an der GROß und kleinschreibung:
If LCase(Right(Bild, 3)) <> "jpg" Then Exit Sub

Dann hättest du das auch schon mal ausgeschlossen...
ransi
Anzeige
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 09:18:11
Kasimir
Morgen ransi,
danke Dir für Deine Antwort. Auch wenn ich Deine Zeile in mein Makro kopiere, bleiben die Variablen Breite und Höhe ohne Wert. Komisch ist nur, dass ja scheinbar bei anderen das Makro funktioniert, jedenfalls nach Rückmeldung von Jörg. Ich habe es auf zwei Rechnern mit Office 2000 probiert und es funktioniert auf beiden Rechnern nicht.
Gruß,
Kasimir
Anzeige
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 09:28:17
ransi
HAllo Kasimir
Werden denn in Spalte AB btw. AC die Breiten und Höhen gelistet ?
Sub Dateieigenschaften()
    'von k.rola
    Const STRFOLDER As String = "d:\Eigene Dateien" 'anpassen
    Dim objShell As Object
    Dim objFolder As Object
    Dim x As Byte
    Dim spalte As Integer
    Dim zeile As Long
    Dim varName, arrHeaders(34)
    If Dir(STRFOLDER, 16) = "" Then
        MsgBox "Der Ordner " & STRFOLDER & " wurde nicht gefunden!" & Space(10), 64, "weise hin..."
        Exit Sub
    End If
    Application.ScreenUpdating = False
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(STRFOLDER)
    spalte = 1
    For x = 0 To 33
        arrHeaders(x) = objFolder.GetDetailsOf(varName, x)
        Cells(1, spalte + x) = arrHeaders(x)
    Next
    Rows(1).Font.Bold = True
    zeile = 2
    For Each varName In objFolder.Items
        For x = 0 To 33
            Cells(zeile, spalte + x) = objFolder.GetDetailsOf(varName, x)
        Next
        zeile = zeile + 1
    Next
    Columns.AutoFit
    Application.ScreenUpdating = True
End Sub

ransi
Anzeige
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 09:44:41
Kasimir
Hallo ransi,
nein, dort werden keine Bilddaten gelistet. Komisch ist, dass ich das Makro mal auf OfficeXP mit Excel 2003 getetstet habe. Dort wird mir in den Spalten AA und AB die Größen angezeigt. In Zeile 1 in Spalte AA steht die Überschrift "Abmessungen". Wenn ich dass jetzt mal auf dem anderen Rechner teste, auf dem Office2000 und Windows 2000 installiert ist, erhalte ich keine Werte in den Spalte AA und AB. Die Überschriften in den Spalte AA und AB sind aber völlig anders. Dort steht in AA die Überschrift "Sendezeit" und in AB "Anruferkennung". Hängt das eventuell mit dem Betriebssystem zusammen?
Gruß,
Kasimir
Anzeige
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 09:59:58
ransi
Hallo
Werden denn unter Win 2000 die gesuchten Werte überhaupt irgendwo im Explorer gelistet ?
ransi
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 11:12:08
Kasimir
Hallo ransi,
ja, wenn ich in den Eigenschaften eines Bildes im Register "Dateiinfo" schaue, dann wird dort eine Breite und eine Höhe angezeigt.
Danke und Gruß,
Kasimir
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 12:57:05
schauan
Hallo Kasimir,
lasse Dir mal alle Eigenschaften auflisten. Es kann sein, dass sie in 2000 unter anderen Nummern liegen.
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Bildgröße in Pixeln auslesen, Excel 2000
25.02.2007 13:08:26
Kasimir
Hallo André,
danke Dir für Deine Antwort. Das habe ich ja bereits mit dem Makro von ransi überprüft. Nur leider werden mir dort keine Höhe oder Breite aufgelistet. Aber in den Eigenschaften der Bilder stehen die Höhen und die Breiten.
Gruß,
Kasimir
EXIF
25.02.2007 13:33:23
ransi
Hallo Kasimir
Keine Höhe oder Breite.
Wie sieht es mit "Abmessungen" aus ?
Option Explicit

Sub Dateieigenschaften()
    Dim objShell As Object
    Dim objFolder As Object
    Dim x As Byte
    Dim varname
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace("C:\")
    For x = 0 To 50
        Debug.Print objFolder.GetDetailsOf(varname, x)
    Next
End Sub

Wenn das alles nichts hilflt, weiss ich nix mehr.
Ausser du googlst mal nach EXIF.
ransi
Anzeige
AW: EXIF
25.02.2007 13:43:25
Kasimir
Hallo ransi,
danke Dir für Deine Antwort. Wenn ich das Makro starte, was muss dann passieren? Bei mir tut sich im Moment nichts. Ich habe in der Zeile
Set objFolder = objShell.Namespace("C:\")
einen Pfad angegeben, in dem sich Bilder im mit der Endung ".jpg" befinden. Ist das richtig?
Danke und Gruß,
Kasimir
Anzeige
AW: EXIF
25.02.2007 13:48:35
ransi
HAllo
Schau mal ins Direktfenster.
DA sollte jetzt gelistet werden welche Dateieigenschaften die dur im Explorer (Nicht Rechte Maus auf Datei -Eigenschaften-Register Dateiinfo) anzeigen lassen kannst.
ransi
AW: EXIF
25.02.2007 14:27:37
Kasimir
Hallo ransi,
nein, dort werden die Bildmaße auch nicht angezeigt. Dabei ist mir jetzt aufgefallen, dass im Explorer die Maße doch nicht angezeigt werden. ich erhalte nur Maße, wenn ich eine Bilddatei mit der rechten Maustaste anklicke und dann auf den Registerreiter "Dateiinfo" wechsele. Dort werden mir die Pixelangaben angezeigt. Aber im Explorer selber kann ich diese, anders als bei WindowsXP im Explorer, nicht anzeigen lassen.
Gibt es da noch eine Chance, an die Bildmaße heran zu kommen und zwar sowohl bei Betriebssystem Windows 2000 als auch bei Windows XP?
Danke und Gruß,
Kasimir
Anzeige
Win2000 Problem ??
25.02.2007 15:02:50
ransi
Hallo Kasimir
Ich versuche mal zusammenzufassen:
Unter WinXP kann man sich im Explorer die Abmessungen, die Breite und die Höhe eines .jpg anzeigen lassen. Diese Werte kan man mit VBA auslesen.
Ausserdem sind in der Registerkarte Dateiinfo die gleichen Infos.
Unter Win2000 werden die Infos nicht im Explorer gezeigt.
Möglicherweise wird das da noch nicht unterstützt...
Dafür aber auch in der Registerkarte DateiInfos.
Wie man an diese Werte herankommt weiss ich nicht.
ransi
Anzeige
AW: Win2000 Problem ??
25.02.2007 15:59:47
schauan
Hallöchen,
dann schaue mal hier:
http://www.office-loesung.de/ftopic89707_0_0_asc.php
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige
AW: Win2000 Problem ??
25.02.2007 17:25:06
Kasimir
Hallo André,
danke Dir für Deine Antwort. Leider erhalte ich auch bei dem von Dir geposteten Makro einen Laufzeitfehler 438 und die Zeile
With Application.FileDialog(msoFileDialogFilePicker)
wird gelb markiert. Muss für das Makro ein ganz spezieller Veweis gestezt sein?
Gruß,
Kasimir
Anzeige
AW: Win2000 Problem ??
25.02.2007 17:41:30
Jan
Hi,
Filedialog gibt es erst ab Excel 2002,
verwende Application.GetOpenFilename
mfg Jan
AW: Win2000 Problem ??
25.02.2007 19:48:12
Kasimir
Hallo an alle!
Jetzt funktionierts. Mit dem Makro aus dem Link von André und den Tipp von Jan, anstelle von Application.FileDialog(msoFileDialogFilePicker) mit Application.GetOpenFilename zu arbeiten, funktionierts bei Windows 2000 & Excel 2000, sowie bei Windows XP & Excel 2000 und logischerweise auch unter Windows XP und Excel 2003. Somit ist dank Eurer Mithilfe die Aufgabe zu 100% gelöst.
Nochmal einen herzliches Dankeschön an alle, die mir gehoöfen haben.
Gruß,
Kasimir
Anzeige
;
Anzeige

Infobox / Tutorial

Bildgröße in Pixeln auslesen und umrechnen in Excel 2000


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul einfügen: Klicke auf Einfügen > Modul.

  3. Makro kopieren: Füge den folgenden Code in das Modul ein:

    Option Explicit
    
    Sub Bildeigenschaften()
       Dim Drive As String, Pfad As String
       Dim objShell As Object, objFolder As Object
       Dim varName As Object, Breite As Variant, Höhe As Variant
       Dim sPath As Variant, sFile As String
       Dim Bild As Variant
    
       Drive = Left(ThisWorkbook.Path, 2)
       Pfad = "C:\"
       ChDrive (Drive)
       ChDir (Pfad)
       Bild = Application.GetOpenFilename("Bilddateien (*.JPG), *.xls, Alle Dateien (*.*), *.*", 1, "Bild auswählen...", MultiSelect:=False)
    
       If Bild = "" Or Bild = False Then Exit Sub
       If LCase(Right(Bild, 3)) <> "jpg" Then Exit Sub
       sFile = Dir(Bild)
       sPath = Replace(Bild, sFile, "")
       sPath = Left(sPath, Len(sPath) - 1)
       Set objShell = CreateObject("Shell.Application")
       Set objFolder = objShell.Namespace(sPath)
    
       For Each varName In objFolder.Items
           If varName = sFile Then
               Breite = objFolder.GetDetailsOf(varName, 27)
               Höhe = objFolder.GetDetailsOf(varName, 28)
               Exit For
           End If
       Next
    
       Breite = CInt(Mid(Breite, 1, InStr(1, Breite, " ") - 1))
       Höhe = CInt(Mid(Höhe, 1, InStr(1, Höhe, " ") - 1))
       MsgBox Breite & " , " & Höhe
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Laufzeitfehler 91: Wenn du diesen Fehler erhältst, kann das daran liegen, dass der Code die Bilddatei nicht finden kann. Überprüfe den Pfad und die Bilddatei.
  • Leere Variablen: Wenn die Variablen Breite und Höhe leer bleiben, stelle sicher, dass die Bilddatei tatsächlich Eigenschaften hat. Versuche, die Dateieigenschaften in Windows zu überprüfen.
  • Groß- und Kleinschreibung: Achte darauf, dass die Dateiendung korrekt in Kleinbuchstaben geschrieben ist (jpg).

Alternative Methoden

Eine alternative Methode zur Bildgrößenauslesung ist die Verwendung der FileDialog-Methode (ab Excel 2002 verfügbar). Für Excel 2000 kannst du Application.GetOpenFilename verwenden, um eine Datei auszuwählen.

Dim Bild As Variant
Bild = Application.GetOpenFilename("Bilddateien (*.jpg), *.jpg", 1, "Bild auswählen", , False)

Praktische Beispiele

Um die Bildgrößen in Pixeln in eine Tabelle zu übertragen, kannst du das folgende Makro anpassen. Es listet die Breite und Höhe in den Zellen A1 und B1 auf.

Cells(1, 1).Value = Breite
Cells(1, 2).Value = Höhe

Damit kannst du eine Bildgrößen-Pixel-Tabelle erstellen, die dir hilft, die Dimensionen der Bilder einfach zu vergleichen.


Tipps für Profis

  • Pixel in cm umrechnen: Um die Pixelgröße in Zentimeter umzurechnen, kannst du die Formel verwenden:

    [ \text{cm} = \frac{\text{Pixel}}{\text{DPI}} \times 2.54 ]

    Setze DPI (dots per inch) je nach Bildauflösung (häufig 72 oder 300 DPI).

  • Verweise überprüfen: Falls du Probleme mit dem Code hast, überprüfe die Verweise in deinem VBA-Projekt. Manchmal kann es hilfreich sein, die Verweise zurückzusetzen.


FAQ: Häufige Fragen

1. Warum funktioniert das Makro nicht auf meinem Computer?
Es könnte an unterschiedlichen Excel-Versionen oder fehlenden Verweisen liegen. Stelle sicher, dass alle benötigten Bibliotheken aktiviert sind.

2. Wie kann ich die Bildgröße in Zentimetern anzeigen?
Verwende die oben genannte Formel zur Umrechnung von Pixel in cm. Du kannst eine zusätzliche Funktion im Makro implementieren, um diese Umrechnung durchzuführen.

3. Gibt es Unterschiede zwischen Excel 2000 und 2003?
Ja, einige Funktionen und Methoden sind in neueren Versionen verfügbar. Achte darauf, welche Funktionen du verwendest, wenn du ältere Versionen nutzt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige