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

Forumthread: Bild aus Zwischenspeicher an Zellgöße anpassen

Bild aus Zwischenspeicher an Zellgöße anpassen
26.04.2017 20:56:37
Enrico
Hallo,
ich möchte per Makro aus dem Zwischenspeicher ein Bild in eine Zelle einfügen.
Bisher habe ich das folgende Makro verwendet.
Sub Bild_einfügen_und_Bildgröße_anpassen()
'Bild aus Zwischenspeicher einfügen
ActiveSheet.Paste
'abhängig von Zellposition und Zellgröße
Selection.Placement = xlMoveAndSize
'Größe formatieren :
If TypeName(Selection) = "Picture" Then 'nur wenn Grafik markiert ist :
With Selection.ShapeRange
.LockAspectRatio = False
'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
.Height = Application.CentimetersToPoints(3.3)
.Width = Application.CentimetersToPoints(4.5)
End With
End If
'Bild komprimieren
Application.SendKeys "w~"
Application.CommandBars.ExecuteMso "PicturesCompress"
End Sub

Das Makro habe ich aus verschiedenen VBA Schnippseln aus dem Internet zusammen gefügt, weil ich selbst von VBA keine Ahnung habe.
Jetzt soll das Makro folgende Aufgabe mit abarbeiten:
Das Seitenverhältnis des Bildes soll nicht geändert werden und das Bild trotzdem in die Zelle passen.
Wenn am Rand der Zelle Lücken entstehen, weil z.B. ein Hochformat-Bild eingefügt wird, ist für mich i.O.
Lässt sich das per VBA umsetzen?
Ich bin für jede Hilfe dankbar.
Gruß
Enrico
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bild aus Zwischenspeicher an Zellgöße anpassen
27.04.2017 13:59:59
Karl-heinz
Hallo Enrico,
vielleicht helfen Dir Diese Ansätze hier. Sub1 passt das Bild komplett in die Zelle ein. Sub2 behält das Verhältnis bei und zentriert das Bild in der Zelle.
Sub Bild_einfügen_und_Bildgröße_anpassen1()
'Bild aus Zwischenspeicher einfügen
Dim X As Long, Y As Long, H As Long, B As Long
With ActiveCell
X = .Left: Y = .Top:  H = .Height: B = .Width
End With
ActiveSheet.Paste
If TypeName(Selection) = "Picture" Then
With Selection.ShapeRange
.LockAspectRatio = False
.Left = X: .Top = Y: .Height = H: .Width = B
End With
End If
End Sub

Sub Bild_einfügen_und_Bildgröße_anpassen2()
'Bild aus Zwischenspeicher einfügen
Dim X As Long, Y As Long, H As Long, B As Long, R1 As Double, R2 As Double
With ActiveCell
X = .Left: Y = .Top:  H = .Height: B = .Width
End With
ActiveSheet.Paste
If TypeName(Selection) = "Picture" Then
With Selection.ShapeRange
.LockAspectRatio = True
.Left = X: .Top = Y
R1 = .Width / B: R2 = .Height / H
If R1 
viele Grüße
Karl-Heinz
Anzeige
AW: Bild aus Zwischenspeicher an Zellgöße anpassen
03.05.2017 21:05:17
Enrico
Hallo Karl-Heinz,
es funktioniert wie gewünscht.
Vielen Dank.
Gruß
Enrico
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bild aus Zwischenspeicher an Zellgröße anpassen


Schritt-für-Schritt-Anleitung

Um ein Bild aus dem Zwischenspeicher in eine Excel-Zelle einzufügen und die Größe automatisch anzupassen, kannst Du das folgende VBA-Makro verwenden. Dies sorgt dafür, dass das Bild an die Zellgröße angepasst wird.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

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

    Sub Bild_einfügen_und_Bildgröße_anpassen()
       'Bild aus Zwischenspeicher einfügen
       ActiveSheet.Paste
       'abhängig von Zellposition und Zellgröße
       Selection.Placement = xlMoveAndSize
       'Größe formatieren :
       If TypeName(Selection) = "Picture" Then 'nur wenn Grafik markiert ist :
           With Selection.ShapeRange
               .LockAspectRatio = False
               'Die Höhe und Breite hier anpassen:
               .Height = Application.CentimetersToPoints(3.3)
               .Width = Application.CentimetersToPoints(4.5)
           End With
       End If
       'Bild komprimieren
       Application.SendKeys "w~"
       Application.CommandBars.ExecuteMso "PicturesCompress"
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Kopiere ein Bild in die Zwischenablage und führe das Makro aus.

Das Bild wird in die aktive Zelle eingefügt und die Größe wird entsprechend angepasst.


Häufige Fehler und Lösungen

  • Problem: Das Bild wird nicht in die Zelle eingefügt.

    • Lösung: Stelle sicher, dass Du ein Bild in die Zwischenablage kopiert hast, bevor Du das Makro ausführst.
  • Problem: Das Bild wird verzerrt.

    • Lösung: Verwende die .LockAspectRatio = True-Eigenschaft, um das Seitenverhältnis des Bildes beizubehalten.

Alternative Methoden

Eine alternative Methode besteht darin, ein weiteres Makro zu verwenden, das das Bild an die Zellgröße anpasst, ohne das Seitenverhältnis zu verändern:

Sub Bild_einfügen_und_Bildgröße_anpassen1()
    'Bild aus Zwischenspeicher einfügen
    Dim X As Long, Y As Long, H As Long, B As Long
    With ActiveCell
        X = .Left: Y = .Top: H = .Height: B = .Width
    End With
    ActiveSheet.Paste
    If TypeName(Selection) = "Picture" Then
        With Selection.ShapeRange
            .LockAspectRatio = False
            .Left = X: .Top = Y: .Height = H: .Width = B
        End With
    End If
End Sub

Praktische Beispiele

Um ein Bild in eine Zelle zu zentrieren, kannst Du das folgende Makro verwenden:

Sub Bild_einfügen_und_Bildgröße_anpassen2()
    'Bild aus Zwischenspeicher einfügen
    Dim X As Long, Y As Long, H As Long, B As Long, R1 As Double, R2 As Double
    With ActiveCell
        X = .Left: Y = .Top: H = .Height: B = .Width
    End With
    ActiveSheet.Paste
    If TypeName(Selection) = "Picture" Then
        With Selection.ShapeRange
            .LockAspectRatio = True
            .Left = X: .Top = Y
            R1 = .Width / B: R2 = .Height / H
            If R1 < R2 Then
                .Width = B
                .Height = R1 * H
            Else
                .Height = H
                .Width = R2 * B
            End If
        End With
    End If
End Sub

Dieses Skript sorgt dafür, dass das Bild in der Zelle zentriert ist und das Seitenverhältnis beibehalten wird.


Tipps für Profis

  • Experimentiere mit den Werten in den Makros, um das Bild optimal an die Zellgröße anzupassen.
  • Nutze die Funktion Application.CutCopyMode = False, um den Auswahlrahmen um das eingefügte Bild zu entfernen.
  • Wenn Du viele Bilder einfügst, könnte es sinnvoll sein, ein weiteres Makro zu erstellen, das die Größe aller Bilder in einem Arbeitsblatt automatisch anpasst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Bild richtig in der Zelle zentriert ist?
Verwende das zweite Makro, das das Bild zentriert und das Seitenverhältnis beibehält.

2. Kann ich das Bild automatisch an die Zellgröße anpassen, ohne VBA zu verwenden?
In Excel gibt es keine native Funktion, um Bilder automatisch an Zellen anzupassen. VBA ist der effektivste Weg, um dies zu erreichen.

3. Ist das Anpassen der Bildgröße in Excel auch in älteren Versionen möglich?
Ja, die grundlegenden VBA-Funktionen sind auch in älteren Excel-Versionen verfügbar.

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