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

Forumthread: Bildgröße auslesen

Bildgröße auslesen
21.11.2016 18:26:05
Oisse
Hallo Zusammen,
ich möchte gerne die Größe eines Bildes, also Breite und Höhe, ermitteln, das sich in einem Ordner befindet.
Hintergrund: Wenn es hochkant ist, dann ... Wenn es quer ist, dann
Bisher habe ich:

Sub Test()
Dim Pfad As String
Dim Pic As Picture
Pfad = ThisWorkbook.Path & "\Bilder\116983_10"
Set Pic = ThisWorkbook.Worksheets("Tabelle2").Pictures.Insert(Pfad)
MsgBox "Bildbreite: " & Pic.Picture.Width & Chr(10) _
& "Bildhöhe: " & Pic.Picture.Height
End Sub

Der Code an sich funktioniert aber schon nicht, weil er diese Insert Methode nicht findet und eigentlich will ich gar nicht einfügen sondern nur die Daten haben.
Wie bitte mache ich das?
Gruß
Oisse
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bildgröße auslesen
21.11.2016 19:23:56
Nepumuk
Hallo,
wenn es nur darum geht das Verhältnis von Breite zu Höhe zu ermitteln, dann teste mal:
Public Sub Test()
    Dim objPicture As IPictureDisp
    Set objPicture = LoadPicture("G:\Eigene Dateien\Eigene Bilder\Diagonales.jpg")
    Call MsgBox("Breite in Himetric " & CStr(objPicture.Width) & vbLf & _
        "Höhe in Himetric " & CStr(objPicture.Height))
    Set objPicture = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Bildgröße auslesen
21.11.2016 19:51:15
Oisse
Hallo Nepomuk und danke für die Antwort
Ja, es ging mir wirklich nur darum zu ermitteln ist das Bild im Hochformat oder im Querformat in der Datei.
Ich hoffe, ich kriege jetzt mit Deinem Makro alles so hin, wie ich mir das vorstelle.
Dein Makro ist mir auf jeden Fall eine riesige Hilfe.
Dankeschön nochmal
Gruß Oisse
Anzeige
Noch ne Frage
21.11.2016 20:07:53
Oisse
Ich will mit den Daten ermitteln ob das Bild quer oder hoch abgespeichert ist.
Aber wie muss denn jetzt die if Anweisung aussehen, denn so:
Set objPicture = LoadPicture(lPathCol & lPicNameCol)
Call MsgBox("Breite in Himetric " & CStr(objPicture.Width) & vbLf & _
"Höhe in Himetric " & CStr(objPicture.Height))
If objPicture.With > objPicture.Height Then
bb = 4
bh = 3
Else
bb = 3
bh = 4
End If
MsgBox bb & " und " & bh
Set objPicture = Nothing

funktioniert es leider nicht.
Anzeige
selbst rausgefunden
21.11.2016 21:53:40
Oisse
Variable mit objPicture.With und Variable mit objPicture.Hight setzen dann geht´s.
;
Anzeige
Anzeige

Infobox / Tutorial

Bildgröße auslesen in Excel


Schritt-für-Schritt-Anleitung

Um die Bildgröße in Excel zu ermitteln, kannst Du das folgende VBA-Makro verwenden. Damit kannst Du die Breite und Höhe eines Bildes abfragen, ohne es in ein Arbeitsblatt einzufügen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul.
  3. Füge den folgenden Code in das Modul ein:
Public Sub BildgroesseErmitteln()
    Dim objPicture As IPictureDisp
    Set objPicture = LoadPicture("G:\Eigene Dateien\Eigene Bilder\Diagonales.jpg") ' Pfad zum Bild anpassen
    MsgBox "Breite in Himetric: " & CStr(objPicture.Width) & vbLf & _
           "Höhe in Himetric: " & CStr(objPicture.Height)
    Set objPicture = Nothing
End Sub
  1. Ändere den Bildpfad in der LoadPicture-Funktion, um das gewünschte Bild auszuwählen.
  2. Führe das Makro aus, um die Bildgröße anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: „Insert-Methode nicht gefunden“

    • Lösung: Verwende die LoadPicture-Methode anstelle von Insert, um nur die Bilddaten zu erhalten.
  • Fehler: „Objektvariable nicht gesetzt“

    • Lösung: Stelle sicher, dass der Pfad zum Bild korrekt ist und das Bild existiert.
  • Fehler: „objPicture.With und objPicture.Height“

    • Lösung: Achte darauf, die richtigen Eigenschaften Width und Height zu verwenden (nicht With und Hight).

Alternative Methoden

Eine alternative Methode, um die Bildgröße herauszufinden, ist die Verwendung der Windows-Shell über VBA. Hier ist ein Beispiel:

Sub BildgroesseMitShell()
    Dim fso As Object
    Dim file As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.GetFile("G:\Eigene Dateien\Eigene Bilder\Diagonales.jpg") ' Pfad anpassen
    MsgBox "Dateigröße: " & file.Size & " Bytes"
End Sub

Diese Methode gibt die Dateigröße in Bytes zurück, ist aber nicht direkt die Bildgröße.


Praktische Beispiele

Um zu ermitteln, ob ein Bild im Hoch- oder Querformat gespeichert ist, kannst Du den folgenden Code verwenden:

Sub FormatErmitteln()
    Dim objPicture As IPictureDisp
    Set objPicture = LoadPicture("G:\Eigene Dateien\Eigene Bilder\Diagonales.jpg") ' Pfad anpassen
    Dim bb As Integer, bh As Integer

    If objPicture.Width > objPicture.Height Then
        bb = 4 ' Querformat
        bh = 3
    Else
        bb = 3 ' Hochformat
        bh = 4
    End If

    MsgBox "Format: " & bb & " und " & bh
    Set objPicture = Nothing
End Sub

Tipps für Profis

  • Verwende relative Pfade: Wenn Du mehrere Bilder hast, kann es hilfreich sein, relative Pfade zu verwenden, um die Flexibilität zu erhöhen.
  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next, um Fehler besser zu handhaben und benutzerfreundliche Fehlermeldungen anzuzeigen.
  • Speichere die Bilddaten in einer Tabelle: Du kannst die ermittelten Bildgrößen in einem Excel-Arbeitsblatt speichern, um sie später zu analysieren.

FAQ: Häufige Fragen

1. Wie kann ich die Bildgröße von mehreren Bildern gleichzeitig ermitteln?
Du kannst eine Schleife verwenden, um durch eine Liste von Bildpfaden zu iterieren und die Bildgröße für jedes Bild zu ermitteln.

2. Welche Einheiten verwendet das Makro für die Bildgröße?
Die Werte für die Breite und Höhe werden in Himetric (1 Himetric = 1/100 Zoll) zurückgegeben. Du kannst sie in andere Einheiten umrechnen, falls nötig.

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