Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
844to848
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
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bildgröße aus den Bildeigenschaften auslesen?

Bildgröße aus den Bildeigenschaften auslesen?
12.02.2007 13:09:54
Kasimir
Hallo Leute,
ich hoffe, Ihr könnt mir weiterhelfen. Ich möchte über ein Dialogfeld ein Bild in ein Tabellenblatt einlesen. Vor dem Einlesen möchte ich aber die Bildbreite und –höhe auslesen, weil das Bild nur eine bestimmte Pixelgröße haben darf. Nun habe ich in der Recherche ein Makro von K.Rola gefunden, das die Eigenschaften von Bildern ausließt. Das habe ich wie folgt abgeändert:

Sub Bildeigenschaften_abfragen()
Const STRFOLDER As String = "C:\Eigene Dateien\Bilder"
Dim objShell As Object, objFolder As Object
Dim varName
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(STRFOLDER)
For Each varName In objFolder.Items
If varName = "Bild.JPG" Then
Breite = objFolder.GetDetailsOf(varName, 27)
Höhe = objFolder.GetDetailsOf(varName, 28)
Exit For
End If
Next
MsgBox Breite & " , " & Höhe
End Sub

Das Makro funktioniert auch soweit. Nun möchte ich aber nicht immer von einem fest vorgegebenen Bild die Eigenschaften auslesen, sondern möchte das Bild über ein Dialogfenster auswählen. Das kann man ja mit den Codezeilen
Name_des_Bildes = Application.GetOpenFilename( _
"Bilddateien (*.JPG), *.xls, Alle Dateien (*.*), *.*", 1, _
"Bild auswählen...", MultiSelect:=False)

realisieren. Nur wie bekomme ich denn nun aus der Variablen "Name_des_Bildes" heraus, was der Pfad und was der Bildname ist, damit ich diese Zeilen im obigen Makro anwenden kann. Wie bekomme ich also den Pfad und den Namen aus der Variablen herausgefiltert? Weiß das jemand.
Danke Euch,
Kasimir

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

Betreff
Datum
Anwender
Anzeige
AW: Bildgröße aus den Bildeigenschaften auslesen?
12.02.2007 13:36:44
Rudi
Hallo,

Sub tt()
Dim Name_des_Bildes As String, strName As String, strPfad As String
Name_des_Bildes = Application.GetOpenFilename( _
"Bilddateien (*.JPG), *.xls, Alle Dateien (*.*), *.*", 1, _
"Bild auswählen...", MultiSelect:=False)
strPfad = Left(Name_des_Bildes, InStrRev(Name_des_Bildes, "\") - 1)
strName = Replace(Name_des_Bildes, strPfad & "\", "")
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Wie kombiniere ich beide Makros?
12.02.2007 14:02:35
Kasimir
Hallo Rudi,
danke Dir für Deine Hilfe. Genau so meinte ich es. Nur nun hänge ich daran, die beiden Makros miteinander zu kombinieren. Ich habe das mal folgendermaßen zusammengefast:

Sub Dateieigenschaften()
'Const STRFOLDER As String = "H:\Daten Dannenberg\Programmbilder"
Dim objShell As Object, objFolder As Object
Dim varName
Dim Name_des_Bildes As String, strName As String, strPfad As String
Name_des_Bildes = Application.GetOpenFilename( _
"Bilddateien (*.JPG), *.xls, Alle Dateien (*.*), *.*", 1, _
"Bild auswählen...", MultiSelect:=False)
strPfad = Left(Name_des_Bildes, InStrRev(Name_des_Bildes, "\") - 1)
strName = Replace(Name_des_Bildes, strPfad & "\", "")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(strPfad)
For Each varName In objFolder.Items
If varName = strName Then
Breite = objFolder.GetDetailsOf(varName, 27)
Höhe = objFolder.GetDetailsOf(varName, 28)
Exit For
End If
Next
If Breite > "150 Pixel" Then
MsgBox "Die maximale Bildgröße darf 150 x 150 Pixel nicht überschreiten. Das von Ihnen ausgewählte " _
& "Bild hat aber eine Größe von " & Breite & " x " & Höhe & ". Das Bild wird nicht eingelesen", vbCritical, _
"Fehler Breite..."
Exit Sub
End If
If Höhe > "150 Pixel" Then
MsgBox "Die maximale Bildgröße darf 150 x 150 Pixel nicht überschreiten. Das von Ihnen ausgewählte " _
& "Bild hat aber eine Größe von " & Breite & " x " & Höhe & ". Das Bild wird nicht eingelesen", vbCritical, _
"Fehler Höhe..."
Exit Sub
End If
End Sub


Leider funktioniert das nicht. Es kommt ein Laufzeitfehler 91 "Objektvariable oder with-Blockvariable nicht festgelegt" und die Zeile
For Each varName In objFolder.Items
wird gelb markiert. Wieso denn? Jemand einen Tip für mich?
Gruß,
Kasimir
Anzeige
AW: Bildgröße aus den Bildeigenschaften auslesen?
12.02.2007 13:53:59
Hans
Hallo Kasimir,
Rudi hat recht, aber ich merke gerade das das Shell-Objekt so seine Tücken hat. Eine Stringvariable wird wohl nicht anerkannt, also als Komplettcode:

Sub Bildeigenschaften_abfragen()
Const STRFOLDER As String = "C:\Bilder"
Dim objShell As Object, objFolder As Object
Dim varName As Object
Dim Breite As Variant, Höhe As Variant, Name_des_Bildes As Variant
Dim sPath As Variant, sFile As String
Name_des_Bildes = Application.GetOpenFilename( _
"Bilddateien (*.JPG), *.xls, Alle Dateien (*.*), *.*", 1, _
"Bild auswählen...", MultiSelect:=False)
If Name_des_Bildes = False Then Exit Sub
sFile = Dir(Name_des_Bildes)
sPath = Replace(Name_des_Bildes, 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
MsgBox Breite & " , " & Höhe
End Sub

gruss hans
Anzeige
Funktioniert bestens, danke!
12.02.2007 14:08:18
Kasimir
Hall Hans,
danke Dir für Deine Lösung. Genau das war's. Das mit der Variablen ist mir auch aufgefallen, da immer ein Laufzeitfehler aufgetreten ist wenn ich beide Makros miteinander kombiniert hatte, ich aber nicht wusste warum. Damit ist auch meine neue Frage erledigt und das Thema kann geschlossen werden.
Danke nochmal an Euch beide und einen schönen Tag noch,
Kasimir

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige