Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Fotogröße automatisch ändern | Herbers Excel-Forum


Betrifft: Fotogröße automatisch ändern von: Sandra
Geschrieben am: 30.11.2009 12:33:15

Hallo Ihr lieben.

Ich hab mal wieder ein Problem.

Diesmal benötige ich ein Makro, welches beim Einfügen von Fotos die Größe des Bildes automatisch auf 6,77 x 9,03 cm ändert.

:-(

Könnt Ihr mir dabei helfen?

Liebe Grüß
Sandra

  

Betrifft: Fotogröße per Makro ändern von: NoNet
Geschrieben am: 30.11.2009 13:03:56

Hallo Sandra,

AUTOMATISCH kann man das Bild leider nicht formatieren, da es in Excel kein Ereignis gibt, das automatisch nach dem Einfügen eines Bildes ausgeführt wird.

Du könntest allerdings das folgende Makro kopiere und diesem einen Shortcut zuweisen :

Sub BildgroesseAnpassen()
    'Aktivierte Grafik 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(6.77)
            .Width = Application.CentimetersToPoints(9.03)
        End With
    End If
End Sub
Gruß, NoNet


  

Betrifft: AW: Fotogröße per Makro ändern von: Sandra
Geschrieben am: 30.11.2009 13:25:57

Hallo NoNet

Das funktioniert schon ganz gut. Aber das muss für alle Fotos klappen. Ich will das Makro nur einmal ausführen müssen.

Geht es sonst mit einem AddIn o. ä.?

Danke & Gruß
Sandra


  

Betrifft: GRöße ALLER Bilder per Makro ändern von: NoNet
Geschrieben am: 30.11.2009 14:52:40

Hallo Sandra,

probiere es mal hiermit :

Sub AlleBildgroessenAnpassen()
    Dim objPic As Object
    
    For Each objPic In ActiveSheet.Pictures
        'Alle Grafiken formatieren :
        With objPic.ShapeRange
            .LockAspectRatio = False
            'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
            .Height = Application.CentimetersToPoints(6.77)
            .Width = Application.CentimetersToPoints(9.03)
        End With
    Next
End Sub
Gruß, NoNet


  

Betrifft: AW: GRöße ALLER Bilder per Makro ändern von: Sandra
Geschrieben am: 30.11.2009 15:20:54

Hallo NoNet.

Das klappt super. Nun Gibt es nur ein Problem - der Chef möchte ab sofort die Fotos in ein Word-Dokument eingefügt haben. Dafür funktioniert dieses Makro wahrscheinlich nicht. Kennst Du eine Word-Forum-Seite die so gut ist wie dieses Excel-Forum?

P. s. Deine Hilfe war aber nicht umsonst. Durch die Größenanpassung die ich vornehmen kann, kann ich das Makro immer wieder verwenden.

Danke & Gruß
Sandra


  

Betrifft: Größe ALLER Bilder in WORD per Makro ändern von: NoNet
Geschrieben am: 30.11.2009 16:26:17

Hallo Sandra,

hier nun Makro-Lösung #3 - diesmal für WORD :

Sub AlleBildgroessenAnpassen()
    Dim objPic As Object
    
    For Each objPic In ActiveDocument.InlineShapes
        With objPic
            .LockAspectRatio = msoFalse
            .Width = Application.CentimetersToPoints(9.03)
            .Height = Application.CentimetersToPoints(6.77)
        End With
    Next
End Sub
Ob es ein vergleichbares Forum für WORD gibt, kann ich nicht beurteilen, da ich sehr selten in WORD-Foren hinein schaue.

Bis Mai 2008 gab es bei Spotlight.de eine WORD-Rubrik - dort habe ich gelegentlich auch Fragen beantwortet und man kann dort zumindest im vorhandenen Archiv noch suchen :

http://www.spotlight.de/zforen/msw/t/forum_msw_1.html

Aktuell kann ich folgende WORD-Foren empfehlen (Anmeldung erforderlich !) :

http://www.ms-office-forum.net
bzw. Unterforum WORD :
http://www.ms-office-forum.net/forum/forumdisplay.php?f=30

Oder auch das allseits bekannte Office-Loesung-Forum :

http://www.office-loesung.de

Viel Erfolg,
Gruß NoNet


  

Betrifft: AW: Größe ALLER Bilder in WORD per Makro ändern von: Sandra
Geschrieben am: 30.11.2009 17:10:48

Das funktioniert leider nicht.

Fehler:Laufzeitfehler 424: Objekt erforderlich.

Außerdem ist mir aufgefallen:

1. Passt er die Größe entsprechend der Ausrichtung an? Also ein Querformatbild muss die Maße ja "anders herum" haben.
2. Auf Seite 1 ist ein Bild das nicht bearbeitet werden soll. Es sollen nur die Bilder in der Tabelle angepasst werden. Geht es nicht irgendwie, dass das Bild bereits beim einfügen angepasst wird?

Danke für Deine Hilfe - ich werde mich mal bei Gelegenheit bei den Word-Foren umsehen.

Bis dato musste ich immer nur Makros für Excel erarbeiten.

Lieben Gruß Sandra


  

Betrifft: NEIN : Makro "beim Einfügen" gibt es nicht von: NoNet
Geschrieben am: 30.11.2009 17:41:05

Hallo Sandra,

da kommst Du ja mit immer neuen Anforderungen :

ein Querformatbild muss die Maße ja "anders herum" haben.

Das ist nicht schön und erschwert die Angelegenheit. Bemühe dich doch bitte gleich zu Beginn alle notwendigen Informationen anzugeben - Danke.
Geht es nicht irgendwie, dass das Bild bereits beim einfügen angepasst wird?

Nein, das geht leider nicht. Excel führt Makros "automatisch" nur in Verbindung mit sog. "Ereignissen" (engl.: "events") aus, z.B: wenn eine Zelle angeklickt wurde oder geändert wurde, ein anderes Blatt ausgewählt wurde etc.

Diese Ereignisse sind in Excel fest vorgegeben ! Ein Ereignis "Beim Einfügen von Bildern" gibt es in Excel nicht, daher kann es dazu auch kein "automatisches" 'Makro geben.

Wie das mit Bildern in Tabellen (oder: nur einer bestimmten Tabelle ?) funktioniert, kann ich leider nicht beantworten, da ich mich dazu zu wenig in WORD VBA (genauer: in der WORD Objekthierarchie und der zugehörigen VBA Schlüsselwörter) auskenne. In diesem Fall ist es tatsächlich geeigneter, wenn Du diese Frage nochmal in einem der genannten WORD-Foren stellst.

Kopiere im WORD-Forum bitte auch die URL Deiner Anfrage hier im Forum hinein, evtl. hilft das den dortigen Helfern. Hier ist die URL :

https://www.herber.de/forum/archiv/1120to1124/t1120981.htm#1120981

Viel Erfolg, Gruß NoNet


  

Betrifft: AW: NEIN : Makro "beim Einfügen" gibt es nicht von: Sandra
Geschrieben am: 01.12.2009 10:37:58

Hallo NoNet.

Es tut mir leid. Aber eine genauere Angabe war mir zu Beginn nicht möglich. Leider fälltd en Chefs immer nach und nach ein was sie haben möchten. :(

Ich habe das ganzue Thema jetzt mal veröffentlicht - mal sehen ob es hilft.

Dir danke ich sehr für Deine Hilfe. Deine Arbeit war ja trotzallem nicht umsonst.

Lieben Gruß
Sandra


  

Betrifft: AW: Größe ALLER Bilder in WORD per Makro ändern von: fcs
Geschrieben am: 30.11.2009 17:54:27

Hallo Sandra,

wie fügst du die Bilder denn in Word ein?

Wenn du die Bilder via Grafik einfügen aus Datei in das Word-Dokument schaffst, dann kann man wahrscheinlich das Makro mit der Anzeige eines Dateiauswahl-Dialogs starten und nach der Dateiauswahl dann das eingefügten Bild manipulieren.

Gruß
Franz


  

Betrifft: AW: Größe ALLER Bilder in WORD per Makro ändern von: Sandra
Geschrieben am: 01.12.2009 10:08:20

Guten Morgen Franz.

Das hört sich ja schon einmal nicht schlecht an.

Also der jetzige Stand sieht so aus:

- Ich habe eine Word-Datei.
- Auf Seiete 1 ist ein Bild, welches nicht geändert werden darf.
- Es gibt in dem Dokument eine Tabelle.
- In diese Tabelle werden die Bilder einzelnd mittels "Grafik einfügen" eingefügt.
- Die Bilder sind nur leider IMMER zu groß.
- Es gibt Bilder sowohl in horizontaler als auch in Vertikaler Ausrichtung.

Hast Du ne Idee, wie ich das realisiert bekomme?

Danke und Gruß
Sandra


  

Betrifft: AW: Größe ALLER Bilder in WORD per Makro ändern von: fcs
Geschrieben am: 01.12.2009 17:47:00

Hallo Sandra,

die nachträgliche Bearbeitung aller Grafikobjekte(Bilder) in der Datei ist etwas mühselig per Makro und auch störungsanfällig. Gut funktionieren die beiden Makros zum Anpassen der Bildgröße wenn du ein eingefügtes Bild markiert hast. Drehen kannst du dann wohl einfacher über die Grafik-Symbolleiste.

Für neu einzubindende Grafiken mal als Grundgerüst das folgende Makro. Es fügt an der Cursor-Position die gewählte Grafik ein und du kannst im Dialog wählen, ob gedreht werden soll.
Du wolltest Höhe und Breite fest vorgeben. Dadurch werden Grafiken ggf. verzerrt, wenn das Original ein anderes Seitenverhältnis hat.

Ich probier nachher nochmal, ob die Makros auch unter Word 2007 funktionieren.
Die Makros richtest du am besten in deiner Normal.dot ein, damit sie immer verfügbar sind.

Gruß
Franz

'Erstellt unter Word 2003 / Windows XP
Sub Grafik_Laden()
'
' Grafik_Laden Makro
' Grafik laden, Größe anpassen und ggf. drehen
'
  Dim objDoc As Document, DateiGrafik As Variant, objGrafik As InlineShape
  Dim objShape As Shape
  Dim Auswahl
  Set objDoc = ActiveDocument
  With Application.FileDialog(msoFileDialogOpen)
    .Title = "Bitte zu ladende Grafikdatei auswählen"
    .InitialView = msoFileDialogViewPreview
    .ButtonName = "Datei wählen"
    If .Show = -1 Then
        Selection.InlineShapes.AddPicture FileName:= _
          .SelectedItems(1), LinkToFile:=False, SaveWithDocument:=True
        Set objGrafik = objDoc.InlineShapes(objDoc.InlineShapes.Count)
        'Eingefügtes Bild formatieren - Zeilen mit nicht anzupassenden Formate ggf.  _
auskommentieren
        With objGrafik
          .Fill.Visible = msoFalse
          .Fill.Solid
          .Fill.Transparency = 0#
          .Line.Weight = 0.75
          .Line.Transparency = 0#
          .Line.Visible = msoFalse
          .LockAspectRatio = msoFalse  'Größenverhältniss nicht sperren - verzerrt ggf die  _
Bilder
          .Height = Application.CentimetersToPoints(6.77) 'Höhe
          .Width = Application.CentimetersToPoints(9.03) 'Breite
          .PictureFormat.Brightness = 0.5
          .PictureFormat.Contrast = 0.5
          .PictureFormat.ColorType = msoPictureAutomatic
          .PictureFormat.CropLeft = 0#
          .PictureFormat.CropRight = 0#
          .PictureFormat.CropTop = 0#
          Set objShape = .ConvertToShape 'Umwandlung für Drehen erforderlich
        End With
        With objShape
Grafik_Drehen:
          .WrapFormat.Type = wdWrapSquare 'für Drehen erforderlich
          Auswahl = VBA.InputBox(Prompt:="Bild drehen?" & vbLf & vbLf _
              & " 0 = nicht drehen" & vbLf _
              & " 1 = 90 Grad nach rechts drehen" & vbLf _
              & " 2 = 90 Grad nach links  drehen" & vbLf _
              & " 3 = 180 Grad nach rechts  drehen", _
            Title:="Eingefügte Grafik Drehen", _
            Default:=0)
          If Not Auswahl = False Then
          Select Case Auswahl
            Case 0
            Case 1
              .IncrementRotation 90#
            Case 2
              .IncrementRotation -90#
            Case 3
              .IncrementRotation -90#
              .IncrementRotation -90#
            Case Else
              MsgBox "Unzulässige Auswahl für Drehen Grafik. Bitte Eingabe wiederholen"
              GoTo Grafik_Drehen
          End Select
          End If
          .ConvertToInlineShape 'Rückkonvertierung
        End With
    End If
  End With
End Sub

Sub BildgroesseQuerAnpassen()
    'Aktivierte Grafik im Querformat in Größe anpassen
    Dim objRange As Object
    On Error GoTo Fehler
    Set objRange = Selection.InlineShapes(1)
      With objRange
            .LockAspectRatio = False
            'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
            .Height = Application.CentimetersToPoints(6.77)
            .Width = Application.CentimetersToPoints(9.03)
      End With
Fehler:
    With Err
      Select Case .Number
        Case 0 'Kein Fehler
        Case Else
          MsgBox "Fehler-nr.: " & .Number & vbLf & .Description
      End Select
    End With
End Sub

Sub BildgroesseHochAnpassen()
    'Aktivierte Grafik im Hochformat in Größe reduzieren
    Dim objRange As Object
    On Error GoTo Fehler
    Set objRange = Selection.InlineShapes(1)
      With objRange
            .LockAspectRatio = False
            'Breite und Höhe der Grafik bitte in Klammer hier anpassen :
            .Height = Application.CentimetersToPoints(9.03)
            .Width = Application.CentimetersToPoints(6.77)
      End With
Fehler:
    With Err
      Select Case .Number
        Case 0 'Kein Fehler
        Case Else
          MsgBox "Fehler-nr.: " & .Number & vbLf & .Description
      End Select
    End With
End Sub



  

Betrifft: AW: Größe ALLER Bilder in WORD per Makro ändern von: fcs
Geschrieben am: 02.12.2009 03:52:24

Hallo Sandra,

der unter Word 2003 erstellte Code funktioniert auch unter Word 2007.

Ich hab aber noch ein paar Anpassungen gemacht.

1. Filter für Dateiauswahl
2. Inputbox Option 0 weg
3. Hoch und querliegende Grafiken an Hand der Abmessungen unterschlich in den Abmessungen angepasst.
4. Verarbeitung der Inputbox-Eingaben geändert (Logic, Reihenfolge)

Gruß
Franz

angepasster Code als Textdatei:
https://www.herber.de/bbs/user/66315.txt


  

Betrifft: AW: Größe ALLER Bilder in WORD per Makro ändern von: Sandra
Geschrieben am: 03.12.2009 17:29:10

Hallo zusammen!

Tut mir leid, dass ich mich noch nicht gemeldet habe. Ich werde das bei Gelegenheit ausprobieren und mich noch einmal melden.

Lieben Gruß
und herzlichen Dank!!!

Sandra


Beiträge aus den Excel-Beispielen zum Thema "Fotogröße automatisch ändern"