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

Forumthread: VBA Bilder einfügen, Seitenverhältnis sperren

VBA Bilder einfügen, Seitenverhältnis sperren
09.08.2017 07:59:05
Bernd
Servus zusammen,
ich steh gerade auf dem Schlauch und finde den Knoten in meinem Hirn nicht :(
Ich lasse mir per VBA Bilder in eine Excel-Tabelle einfügen. In dieser Tabelle habe ich fest definierte Bereiche verbunden. Ich weiß, das ist nicht gerade optimal, aber nur so kann ich ein gleichbleibendes Layout garantieren.
Das Bild lasse ich mir mit folgendem Code aus einer Userform in die Tabelle laden:

Set objPicture = ActiveSheet.Shapes.AddPicture(Filename:=Me.TextBox6.Text, _
Linktofile:= msoFalse, savewithdocument:=msoTrue, left:=WS.Cells(94, 2).left, _
top:=WS.Cells(94, 2).top, height:=Range("B94:AE114").height, _
width:=Range("B94:AE114").width)
objPicture.Name = "Bild1"
Set objPicture = Nothing

ich habe bereits versucht in diesen Code noch die Funktion LockAspectRatio einzubauen, bekomme aber dann einen "Laufzeitfehler 448 Benanntes Argument nicht gefunden"...

Set objPicture = ActiveSheet.Shapes.AddPicture(Filename:=Me.TextBox6.Text, _
Linktofile:= msoFalse, savewithdocument:=msoTrue, LockAspectRatio:=msoTrue, _
left:=WS.Cells(94, 2).left, top:= WS.Cells(94, 2).top, _
height:=Range("B94:AE114").height, width:=Range("B94:AE114").width)
objPicture.Name = "Bild1"

Kann mir bitte jemand auf die Sprünge helfen?
Danke und Grüße, Bernd
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Bilder einfügen, Seitenverhältnis sperren
09.08.2017 08:42:42
Nepumuk
Hallo Bernd,
versuch es mal so:
Set objPicture = ActiveSheet.Shapes.AddPicture(Filename:=Me.TextBox6.Text, _
    Linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=ws.Cells(94, 2).Left, _
    Top:=ws.Cells(94, 2).Top, Height:=Range("B94:AE114").Height, _
    Width:=Range("B94:AE114").Width)
With objPicture
    .Name = "Bild1"
    .LockAspectRatio = msoTrue
End With
Set objPicture = Nothing

Gruß
Nepumuk
Anzeige
AW: VBA Bilder einfügen, Seitenverhältnis sperren
09.08.2017 09:23:51
Bernd
Hallo Nepumuk,
leider funktioniert das nicht. Das Bild wird weiterhin verzerrt in die Tabelle eingefügt.
Hast du vielleicht noch eine andere Idee?
Danke und Grüße, Bernd
AW: VBA Bilder einfügen, Seitenverhältnis sperren
09.08.2017 09:30:06
Nepumuk
Hallo Bernd,
dann füge das Bild in Originalgröße ein (Height = -1, Width = -1), sperre dann das Seitenverhältnis und passe anschließen die Breite / Höhe an.
Gruß
Nepumuk
Anzeige
AW: VBA Bilder einfügen, Seitenverhältnis sperren
09.08.2017 11:17:01
Bernd
Hallo Nepumuk,
vielen Dank für deine Unterstützung. Funktioniert prächtig.
Grüße, Bernd
AW: VBA Bilder einfügen, Seitenverhältnis sperren
09.08.2017 09:30:58
Nepumuk
Hallo Bernd,
dann füge das Bild in Originalgröße ein (Height = -1, Width = -1), sperre dann das Seitenverhältnis und passe anschließen die Breite / Höhe an.
Gruß
Nepumuk

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bilder in Excel einfügen und Seitenverhältnis sperren


Schritt-für-Schritt-Anleitung

Um ein Bild in eine Excel-Tabelle einzufügen und dabei das Seitenverhältnis zu sperren, folge diesen Schritten:

  1. VBA-Entwicklungsumgebung öffnen:

    • Drücke ALT + F11, um die Entwicklungsumgebung zu öffnen.
  2. Neues Modul erstellen:

    • Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)", wähle "Einfügen" und dann "Modul".
  3. Code einfügen:

    • Füge den folgenden Code in das Modul ein:
Sub BildEinfügenUndSperren()
    Dim objPicture As Shape
    Dim WS As Worksheet
    Set WS = ThisWorkbook.Sheets("DeinBlattname") ' Blattnamen anpassen

    ' Bild in Originalgröße einfügen
    Set objPicture = WS.Shapes.AddPicture(Filename:="C:\Pfad\zu\deinem\Bild.jpg", _
        LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
        Left:=WS.Cells(94, 2).Left, Top:=WS.Cells(94, 2).Top, _
        Height:=-1, Width:=-1) ' Höhe und Breite auf -1 setzen

    ' Seitenverhältnis sperren
    With objPicture
        .Name = "Bild1"
        .LockAspectRatio = msoTrue
        ' Anpassen der Größe
        .Height = Range("B94:AE114").Height
        .Width = Range("B94:AE114").Width
    End With

    Set objPicture = Nothing
End Sub
  1. Makro ausführen:
    • Schließe die Entwicklungsumgebung und führe das Makro aus, um das Bild in der Tabelle einzufügen.

Häufige Fehler und Lösungen

Fehler: "Laufzeitfehler 448: Benanntes Argument nicht gefunden"

  • Lösung: Stelle sicher, dass der LockAspectRatio-Befehl innerhalb einer With-Anweisung verwendet wird, wie im obigen Code gezeigt.

Fehler: Bild wird verzerrt eingefügt

  • Lösung: Setze bei der Initialisierung die Höhe und Breite auf -1 und sperre dann das Seitenverhältnis, bevor du die Größe anpasst.

Alternative Methoden

Wenn du Probleme mit VBA hast oder eine einfachere Methode bevorzugst, kannst du auch die folgenden Schritte ausprobieren:

  1. Füge das Bild manuell über "Einfügen" > "Bilder" in Excel ein.
  2. Klicke mit der rechten Maustaste auf das Bild und wähle "Größe und Eigenschaften".
  3. Aktiviere die Option "Seitenverhältnis sperren" unter den Eigenschaften.

Für PowerPoint gelten ähnliche Schritte, um ein Bild in einer Form ohne Verzerrung einzufügen.


Praktische Beispiele

Beispiel 1: Logo in Excel einfügen

  • Verwende den oben angegebenen VBA-Code, um ein Unternehmenslogo in die Tabelle einzufügen und das Seitenverhältnis zu sperren, um sicherzustellen, dass es nicht verzerrt wird.

Beispiel 2: Bilder in einer Präsentation

  • Nutze Shapes.AddPicture in PowerPoint, um Bilder mit gesperrtem Seitenverhältnis einzufügen, ohne sie zu verzerren.

Tipps für Profis

  • Verwende Variablen: Passe den Code an, um verschiedene Bildformate oder Leinwandgrößen dynamisch zu nutzen.
  • Fehlerbehandlung: Implementiere Error-Handling in deinem VBA-Code, um unvorhergesehene Probleme abzufangen.

FAQ: Häufige Fragen

1. Wie kann ich das Seitenverhältnis nachträglich ändern? Um das Seitenverhältnis eines bereits eingefügten Bildes zu ändern, wähle das Bild aus, gehe zu den "Format"-Optionen und aktiviere oder deaktiviere die Sperre des Seitenverhältnisses.

2. Funktioniert dieser Code in Excel 2016? Ja, der Code ist kompatibel mit Excel 2016 und neuer. Stelle sicher, dass du die richtigen Pfade und Blattnamen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige