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

Bildeigenschaften per VBA

Forumthread: Bildeigenschaften per VBA

Bildeigenschaften per VBA
21.07.2008 16:12:00
Boris
Hi,
ich füge mit folgendem Code Bilder in Excel ein. Bisher "manipuliere" ich nur die Größe. Ich würde nun gerne beim einfügen jedes Bild mit einem Rahmen der Dicke 0,5 versehen. Wie mache ich das?

Sub BilderEinfügen()
Dim objBild As Object
Set WS = ThisWorkbook.Worksheets("...")
Set objBild = WS.Pictures.Insert("...")
With objBild
.Top = WS.Range(WS.Range("...").Top
.Left = WS.Range(WS.Range("...").Left
.Height = .Width * 4
. 


Wie finde ich in Zukunft so etwas selber heraus? Wo und wie kann man die Objekteigenschaften nachschauen?
Viele Grüße
Boris

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bildeigenschaften per VBA
21.07.2008 16:19:41
Ramses
Hallo
"...Wie finde ich in Zukunft so etwas selber heraus? ..."
Extras - Makro - Makrorekorder aufzeichnen
Anschliessend den Code anschauen, ... und das meiste kannst du so auslesen/lernen
Sub Macro3()
    '
    ' Macro3 Macro
    ' Macro recorded 21.07.2008 by Ramses
    '
    ActiveSheet.Shapes("Picture 3").Select
    Selection.ShapeRange.Fill.Visible = msoFalse
    Selection.ShapeRange.Fill.Solid
    Selection.ShapeRange.Fill.Transparency = 0#
    Selection.ShapeRange.Line.Weight = 0.75
    Selection.ShapeRange.Line.DashStyle = msoLineSolid
    Selection.ShapeRange.Line.Style = msoLineSingle
    Selection.ShapeRange.Line.Transparency = 0#
    Selection.ShapeRange.Line.Visible = msoTrue
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 8
    Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
    Range("E7").Select
End Sub

Gruss Raienr

Anzeige
AW: Bildeigenschaften per VBA
21.07.2008 16:54:00
Boris
Der Makrorekorder ist (zumeist) nur sehr eingeschränkt hilfreich. In diesem Fall fügt er Bilder als Shapes ein.
Mein objBild ist jedoch als Object definiert. Wende ich die obige Ausgabe des Makroeditors auf das Object an, klappt es leider nicht...
Gruß
Boris

AW: Bildeigenschaften per VBA
21.07.2008 17:02:34
Ramses
Hallo
"...Mein objBild ist jedoch als Object definiert..."
Dann solltest du deine Variablen mal richtig deklarieren.
Dann hast du nämlich nach der Set-Anweisung im "Ausdruck" Fenster alle Methoden die du auf das Object anwenden kannst.
Userbild
Gruss Rainer

Anzeige
AW: Bildeigenschaften per VBA
21.07.2008 17:22:00
Boris
Mir wurde von jemandem hier im Forum geraten, das Bild als Object zu definieren, den Namen habe ich leider vergessen. Dieser jemand schien Ahnung zu haben...
Ich würde ungern meinen kompletten Code ändern. Es muss doch eine Möglichkeit geben, den Rahmen auch bei einem Object zu setzen....?
Gruß Boris

Anzeige
AW: Bildeigenschaften per VBA
21.07.2008 18:35:00
Herbert
Hi,
der Tipp mit dem Lokalfenster von Ramses geht natürlich auch mit deinem Bild als Objekt.
Man sollte ein Objekt immer so genau wie möglich deklarieren, desto einfacher wird die weitere Behandlung.
mfg Herbert

AW: Bildeigenschaften per VBA
21.07.2008 22:18:00
Ramses
Hallo
"..Mir wurde von jemandem hier im Forum geraten..."
Tja, und nun ?
Soll ich dir einen VBA-Kurs Online Crash Kurs im programmieren geben ?
Ich habe dir gezeigt wie es richtig geht und wie du lernen kannst wo was einzustellen ist.
Mit dem "Object" geht es eben nicht, da dies ein allgemeines Object ist, wozu EXCEL keinen Object-Catalog anbieten kann.
"...Ich würde ungern meinen kompletten Code ändern..."
Musst du doch auch gar nicht. Die VBA-Hilfe ist besser als ihr Ruf

Sub BilderEinfügen()
    Dim objBild As Shape
    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Sheet2")
    'FileName Required String. The file from which the OLE object is to be created.
    'LinkToFile Required MsoTriState. The file to link to.
    'SaveWithDocument Required MsoTriState. To save the picture with the document.
    'Left Required Single. The position (in points) of the upper-left corner of the picture relative to the upper-left corner of the document.
    'Top Required Single. The position (in points) of the upper-left corner of the picture relative to the top of the document.
    'Width Required Single. The width of the picture, in points.
    'Height Required Single. The height of the picture, in points.
    Set objBild = wks.Shapes.AddPicture("C:\Pfad\Ordner\xyz.jpg", False, True, 100, 100, 100, 100)
    With objBild
        '.Top = WS.Range(WS.Range("...").Top
        '.Left = WS.Range(WS.Range("...").Left
        '.Height = .Width * 4
        '. <<<----- HIER SOLL NUN DER CODE REIN
    End With
End Sub

Den Rest kriegst du dann im Einzelschrittmodus im Lokalfenster schon raus
Gruss Rainer

Anzeige
AW: Bildeigenschaften per VBA
22.07.2008 10:42:00
Boris
Hallo,
zunächst einmal: Problem gelöst. Sehr schön!
"Soll ich dir einen VBA-Kurs Online Crash Kurs im programmieren geben ?"
Ja gerne:) Kleiner Scherz...
"Ich habe dir gezeigt wie es richtig geht und wie du lernen kannst wo was einzustellen ist."
Zu meiner Schande muss ich gestehen: ich kannte das Expression-Fenster nicht......
"Mit dem "Object" geht es eben nicht, da dies ein allgemeines Object ist, wozu EXCEL keinen Object-Catalog anbieten kann."
Das stimmt nicht, geht auch mit "Object"...
Mein (gekürzter) Code sieht jetzt so aus:

Sub BilderEinfügen()
Dim objBild As Object
Dim WS As Worksheet
Set WS = ThisWorkbook.Worksheets("xx")
For i = xx To xx
Set objBild = WS.Pictures.Insert(xx)
Ratio = objBild.Height / objBild.Width
With objBild
.Top = WS.Range(xx).Top
.Left = WS.Range(xx).Left
.Width = WS.Range(xx).Width
.Height = .Width * Ratio
.Name = ("Bild" & i)
.ShapeRange.Line.Visible = msoTrue
.ShapeRange.Line.Weight = 0.25
End With
Next i
Set objBild = Nothing
End Sub


War zwar etwas holprig, aber trotzdem vielen Dank. Welche Vor-/Nachteile welche Methode hat (Shape vs Object) ist mir allerdings unklar...
Viele Grüße
Boris

Anzeige
AW: Bildeigenschaften per VBA
22.07.2008 23:10:00
Ramses
Hallo
"...Das stimmt nicht, geht auch mit "Object"....."
Nein,... geht nicht weil EXCEL das "Object" nicht identifizieren kann und im Expression-Fenster dann nicht alle Optionen anbietet/anzeigt.
Auch das Intellisense funktioniert nicht
"...Mein (gekürzter) Code sieht jetzt so aus:..."
Dann glaube ich das auch noch
Gruss Rainer

Anzeige
AW: Bildeigenschaften per VBA
23.07.2008 10:03:00
Boris
Hallo,
"Nein,... geht nicht weil EXCEL das "Object" nicht identifizieren kann und im Expression-Fenster dann nicht alle Optionen anbietet/anzeigt."
Scrolle ich per F8 durch den Code, zeigt das Epression-Fenster folgendes Bild an:
Userbild
Gruß
Boris
Anzeige
;
Anzeige

Infobox / Tutorial

Bildeigenschaften per VBA anpassen


Schritt-für-Schritt-Anleitung

Um Bilder in Excel mit VBA einzufügen und deren Bildeigenschaften anzupassen, kannst du den folgenden Code verwenden. Dieser Code fügt Bilder als Picture-Objekte ein und setzt einen Rahmen um jedes Bild:

Sub BilderEinfügen()
    Dim objBild As Object
    Dim WS As Worksheet
    Set WS = ThisWorkbook.Worksheets("DeinBlattname")

    For i = 1 To 5 ' Beispiel: 5 Bilder einfügen
        Set objBild = WS.Pictures.Insert("C:\Pfad\zu\deinem\bild" & i & ".jpg")
        Ratio = objBild.Height / objBild.Width
        With objBild
            .Top = WS.Range("A" & i).Top
            .Left = WS.Range("A" & i).Left
            .Width = WS.Range("A" & i).Width
            .Height = .Width * Ratio
            .Name = ("Bild" & i)
            .ShapeRange.Line.Visible = msoTrue
            .ShapeRange.Line.Weight = 0.5 ' Rahmenstärke
        End With
    Next i

    Set objBild = Nothing
End Sub

In diesem Beispiel wird das Bild in die Zelle A1 bis A5 eingefügt. Der Rahmen hat eine Dicke von 0,5.


Häufige Fehler und Lösungen

  1. Fehler: Bild wird nicht eingefügt.

    • Lösung: Stelle sicher, dass der Pfad zum Bild korrekt ist. Überprüfe die Schreibweise und die Dateiendung.
  2. Fehler: Kein Rahmen sichtbar.

    • Lösung: Überprüfe, ob die Eigenschaft .ShapeRange.Line.Visible auf msoTrue gesetzt ist. Ansonsten wird der Rahmen nicht angezeigt.
  3. Fehler: Das Bild wird als Shape eingefügt, nicht als Picture.

    • Lösung: Nutze die Methode WS.Pictures.Insert, um das Bild als Picture-Objekt einzufügen.

Alternative Methoden

Eine alternative Methode besteht darin, Bilder als Shapes einzufügen, was einige zusätzliche Vorteile bietet, wie z.B. mehr Anpassungsoptionen. Hier ein Beispiel:

Sub BildAlsShapeEinfügen()
    Dim objBild As Shape
    Dim WS As Worksheet
    Set WS = ThisWorkbook.Worksheets("DeinBlattname")

    Set objBild = WS.Shapes.AddPicture("C:\Pfad\zu\deinem\bild.jpg", _
        LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, _
        Left:=100, Top:=100, Width:=100, Height:=100)

    With objBild
        .Line.Visible = msoTrue
        .Line.Weight = 0.5 ' Rahmenstärke
    End With
End Sub

Diese Methode erlaubt es dir, mehr Eigenschaften des Shapes zu manipulieren, wie z.B. Füllfarbe und Schatten.


Praktische Beispiele

Hier sind einige nützliche Beispiele zur Anpassung von Bildeigenschaften:

  1. Bilder mit unterschiedlichen Rahmenfarben:

    .ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0) ' Roter Rahmen
  2. Bilder mit transparenter Füllung:

    .ShapeRange.Fill.Visible = msoFalse
  3. Bilder rotieren:

    .Rotation = 45 ' Bild um 45 Grad drehen

Diese Beispiele können einfach in den oben genannten Code integriert werden.


Tipps für Profis

  • Nutze das Lokalfenster: Wenn du mit Excel VBA arbeitest, ist das Lokalfenster sehr hilfreich, um die Eigenschaften deiner Objekte zu überprüfen.
  • Verwende die Hilfe-Funktion: Excel bietet eine umfassende VBA-Hilfe, die dir bei der Arbeit mit Objekten und Methoden hilft.
  • Deklariere Variablen präzise: Anstatt Dim objBild As Object zu verwenden, definiere es als Dim objBild As Shape, um Zugriff auf spezifische Methoden zu erhalten.

FAQ: Häufige Fragen

1. Wie kann ich die Größe des Rahmens anpassen?
Du kannst die Rahmenstärke mit .ShapeRange.Line.Weight ändern. Zum Beispiel, um die Dicke auf 1 Punkt zu setzen, verwende:

.ShapeRange.Line.Weight = 1

2. Ist es besser, Bilder als Shape oder Object einzufügen?
Das hängt von deinen Anforderungen ab. Shapes bieten mehr Anpassungsoptionen, während Picture-Objekte einfacher zu handhaben sind, wenn es nur um die Anzeige geht.

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