Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bild hochformat/querformat

Forumthread: Bild hochformat/querformat

Bild hochformat/querformat
07.08.2013 14:13:12
Albert
Hallo zusammen,
ist es möglich, dass man beim Auswählen/Einfügen eines Bildes automatisch eine Größe vorgeben kann ohne dies manuell machen zu müssen.
Den nachfolgenden Code hab ich zusammengebastelt. Aber so wirklich zufrieden bin ich nicht, da auch die Abbruchbedingung nicht passt.
Private Sub Ok_Click()
Dim rngLocation As Range
Dim i As Integer
Dim shpBild As Shape
Set rngLocation = ActiveCell
Bild = Application.GetOpenFilename("C:\,*.jpg")
If Bild  0 Then
On Error GoTo fehlerbehandlung
ActiveSheet.Pictures.Insert(Bild).Select
'On Error GoTo 0
If FileLen(Bild) / 1024 > 500 Then
MsgBox ("Die Bilddateigröße übersteigt die 500kb Größe! Bitte reduzieren sie erst die  _
Dateigröße! ")
Exit Sub
Else
If querformat = True Then
If TypeName(Selection) = "Picture" Or TypeName(Selection) = "Grafik" Then 'nur  _
wenn Grafik markiert ist :
With Selection.ShapeRange
.LockAspectRatio = True
'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
.Top = rngLocation.Top + 32
.Left = rngLocation.Left + 8
.Height = Application.CentimetersToPoints(6.77)
.Width = Application.CentimetersToPoints(9)
End With
For Each shpBild In ActiveSheet.Shapes
If shpBild.Type = msoPicture Then
shpBild.Placement = xlFreeFloating
End If
Next
End If
End If
If hochformat = True Then
If TypeName(Selection) = "Picture" Or TypeName(Selection) = "Grafik" Then 'nur  _
wenn Grafik markiert ist :
With Selection.ShapeRange
.LockAspectRatio = True
'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
.Top = rngLocation.Top + 10
.Left = rngLocation.Left + 30
.Height = Application.CentimetersToPoints(9)
.Width = Application.CentimetersToPoints(7.25)
End With
For Each shpBild In ActiveSheet.Shapes
If shpBild.Type = msoPicture Then
shpBild.Placement = xlFreeFloating
End If
Next
End If
End If
End If
End If
Exit Sub
fehlerbehandlung:
If Err.Number = 1004 Then MsgBox "Fehler beim Einfügen der Grafik!" _
& Chr(13) & Chr(13) & "Wahrscheinlich kein lesbares Grafikformat"
End Sub
Ich wär euch für Hilfe super dankbar!
Gruß
A.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bild hochformat/querformat
07.08.2013 14:29:58
Rudi
Hallo,
das hab ich doch schon mal gesehen...
ist es möglich, dass man beim Auswählen/Einfügen eines Bildes automatisch eine Größe vorgeben kann
was meinst du damit?
Private Sub Ok_Click()
Dim rngLocation As Range
Dim i As Integer
Dim shpBild As Shape, Bild As String
Set rngLocation = ActiveCell
Bild = Application.GetOpenFilename("C:\,*.jpg")
If Bild  0 Then
If FileLen(Bild) / 1024 > 500 Then
MsgBox "Die Bilddateigröße übersteigt die 500kb Größe! Bitte reduzieren sie erst die  _
Dateigröße! "
Exit Sub
End If
On Error GoTo fehlerbehandlung
ActiveSheet.Pictures.Insert(Bild).Select
'On Error GoTo 0
If querformat = True Then
If TypeName(Selection) = "Picture" Or TypeName(Selection) = "Grafik" Then
'nur wenn Grafik markiert ist :
With Selection.ShapeRange
.LockAspectRatio = True
'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
.Top = rngLocation.Top + 32
.Left = rngLocation.Left + 8
.Height = Application.CentimetersToPoints(6.77)
.Width = Application.CentimetersToPoints(9)
End With
End If
End If
If hochformat = True Then
If TypeName(Selection) = "Picture" Or TypeName(Selection) = "Grafik" Then
'nur wenn Grafik markiert ist :
With Selection.ShapeRange
.LockAspectRatio = True
'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
.Top = rngLocation.Top + 10
.Left = rngLocation.Left + 30
.Height = Application.CentimetersToPoints(9)
.Width = Application.CentimetersToPoints(7.25)
End With
End If
End If
For Each shpBild In ActiveSheet.Shapes
If shpBild.Type = msoPicture Then
shpBild.Placement = xlFreeFloating
End If
Next
End If
Exit Sub
fehlerbehandlung:
If Err.Number = 1004 Then MsgBox "Fehler beim Einfügen der Grafik!" _
& Chr(13) & Chr(13) & "Wahrscheinlich kein lesbares Grafikformat"
End Sub
Woher kommen querformat und hochformat?
da .LockAspectRatio=True würde ich entweder die Höhe oder die Breite einstellen.
Gruß
Rudi

Anzeige
AW: Bild hochformat/querformat
07.08.2013 16:00:31
Albert
Servus Rudi,
möglicherweise kommt es daher, dass du hierbei einen großen Teil beigetragen hast. :)
Das hochformat/querformat kommt aus einer Userform, die abgefragt wird.
Zu deiner Frage: Wenn ich ein Bild auswähle, steht ja eigentlich vom fotografieren her schon fest, ob es hoch- oder querformat ist.... Dank ich mal.
Wenn ja, dann könnte man doch dieses Attribut nutzen, um später das hoch-/querformat im Code anzusprechen.
Gruß
A.

Anzeige
AW: Bild hochformat/querformat
07.08.2013 16:42:43
Rudi
Hallo,
steht ja eigentlich vom fotografieren her schon fest
wenn deine Kamera automatisch dreht oder du das von Hand gemacht hast schon.
Püfe doch einfach, ob die Höhe des Bildes größer ist als die Breite.
....
ActiveSheet.Pictures.Insert(Bild).Select
with selection.Shaperange
if .height > .width then
hochformat=true
else
querformat=true
end if
.....

Gruß
Rudi

Anzeige
AW: Bild hochformat/querformat
08.08.2013 07:28:06
Albert
Moin Rudi,
das ist eine sehr gute Idee. Werd deinen Schnipsel gleich einbauen.
Feedback gibts umgehend!
Gruß
A.
;
Anzeige

Infobox / Tutorial

Bilder im Hochformat und Querformat in Excel umwandeln


Schritt-für-Schritt-Anleitung

Um ein Bild im Hochformat in ein Querformat umzuwandeln oder umgekehrt, kannst du den folgenden VBA-Code verwenden. Dieser Code prüft die Dimensionen des Bildes und passt die Größe entsprechend an.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul ein: Klicke auf "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Private Sub Ok_Click()
    Dim rngLocation As Range
    Dim shpBild As Shape
    Dim Bild As String
    Dim hochformat As Boolean
    Dim querformat As Boolean

    Set rngLocation = ActiveCell
    Bild = Application.GetOpenFilename("C:\,*.jpg")

    If Bild <> "False" Then
        On Error GoTo fehlerbehandlung
        ActiveSheet.Pictures.Insert(Bild).Select

        With Selection.ShapeRange
            If .Height > .Width Then
                hochformat = True
            Else
                querformat = True
            End If

            .LockAspectRatio = True
            If querformat Then
                .Top = rngLocation.Top + 32
                .Left = rngLocation.Left + 8
                .Height = Application.CentimetersToPoints(6.77)
                .Width = Application.CentimetersToPoints(9)
            ElseIf hochformat Then
                .Top = rngLocation.Top + 10
                .Left = rngLocation.Left + 30
                .Height = Application.CentimetersToPoints(9)
                .Width = Application.CentimetersToPoints(7.25)
            End If
        End With
    End If

    Exit Sub

fehlerbehandlung:
    MsgBox "Fehler beim Einfügen der Grafik!" & Chr(13) & "Wahrscheinlich kein lesbares Grafikformat"
End Sub
  1. Schließe den VBA-Editor und speichere deine Datei als Excel-Makroarbeitsmappe (*.xlsm).
  2. Führe das Makro aus, um ein Bild auszuwählen und die Größe entsprechend anzupassen.

Häufige Fehler und Lösungen

  • Fehler beim Einfügen der Grafik: Dieser Fehler tritt häufig auf, wenn das ausgewählte Bildformat nicht unterstützt wird. Stelle sicher, dass du ein unterstütztes Format wie JPG oder PNG verwendest.

  • Bild wird nicht korrekt skaliert: Überprüfe, ob die LockAspectRatio-Eigenschaft im Code korrekt gesetzt ist, um Verzerrungen zu vermeiden.

  • Das Bild bleibt im Hochformat: Wenn das Bild im Hochformat bleibt, überprüfe die Dimensionen des Bildes. Der Code stellt sicher, dass die richtige Bedingung für die Größe geprüft wird.


Alternative Methoden

  1. Manuelles Drehen: Du kannst das Bild auch manuell in Excel drehen, indem du das Bild auswählst und auf die Drehoptionen in der Symbolleiste klickst.

  2. Verwendung von Bildbearbeitungssoftware: Wenn du umfangreiche Anpassungen an Bildern vornehmen möchtest, könnte es sinnvoll sein, externe Bildbearbeitungssoftware zu verwenden, bevor du die Bilder in Excel einfügst.


Praktische Beispiele

  • Hochformat in Querformat umwandeln: Wenn du ein Bild im Hochformat hast (z.B. ein hochkant Foto), wird der VBA-Code automatisch überprüfen, ob die Höhe größer ist als die Breite und es entsprechend anpassen.

  • Querformat-Bilder in Hochformat umwandeln: Der Code erkennt auch, wenn ein querformat Bild eingefügt wird und passt die Größenparameter an, um es in die gewünschte Form zu bringen.


Tipps für Profis

  • Optimierung der Bildgrößen: Vor dem Einfügen der Bilder in Excel ist es ratsam, die Bildgrößen zu optimieren, um die Dateigröße deiner Excel-Arbeitsmappe zu verringern.

  • Verwendung von Vorlagen: Erstelle Vorlagen mit bereits definierten Größen für Hochformat und Querformat, um Zeit zu sparen.

  • Makros automatisieren: Du kannst den VBA-Code in ein Makro umwandeln und es einer Schaltfläche in Excel zuweisen, um die Verwendung zu vereinfachen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Bild im Querformat bleibt?
Stelle sicher, dass die Breite des Bildes größer ist als die Höhe. Der VBA-Code prüft dies und passt das Bild entsprechend an.

2. Kann ich auch andere Bildformate verwenden?
Ja, du kannst andere Formate wie PNG oder BMP verwenden, solange sie im Code entsprechend angepasst werden.

3. Was mache ich, wenn das Bild nicht richtig eingefügt wird?
Prüfe, ob das Bildformat unterstützt wird und ob der Pfad korrekt ist. Stelle auch sicher, dass das Bild nicht beschädigt ist.

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