Makro zur Bildgrößenveränderung
Hallo,
ich bin leider kein VBA Experte und stelle deswegen hier die Frage wie ein Makro aussehen muss mit dem man alle Bilder in einem Excel Dokument markieren kann und diese in eine bestimmte Bildhöhe umwandeln kann.
Bisher mache ich das immer umständlich über den Zeichnen Pfeil mit dem ich alle markiere und dann mit Grafik formatieren. Dort stelle ich dann die Höhe auf 5. Das klappt ganz gut, dauert aber zu lange.
Danke
Andreas
Antwort schreiben
Antwort 1 von Saarbauer vom 18.07.2019, 10:37 Options
Hallo,
zeichne dir doch das erforderliche Markro auf.
Gruß
Helmut
Antwort 2 von AWW vom 18.07.2019, 10:42 Options
Wenn ich das aufzeichne, dann erwischt er im wahrscheinlich im Zweifelsfall nicht alle Bilder im Dokument. Oder doch ?
Sauberer wäre das auif jeden Fall in VBA.
Aber ich probiere das mit dem aufzeichnen mal.
Antwort 3 von Saarbauer vom 18.07.2019, 11:01 Options
Hallo,
die Aufzeichnung ist ein VBA-Makro. Aber so wie ich es aus deinen Angaben verstehe soll das Programm wohl automatisch die Bilder suchen und ändern.
Gruß
Helmut
Antwort 4 von AWW vom 18.07.2019, 11:07 Options
Genau, das Makro soll alle Bilder im Dokument suchen markieren und dann auf die Höhe 5 cm ändern.
Am besten wären 2 Makros. Eines das alle Bilder im Dokument markiert/auswählt.
Und ein Makro, das die Bildgröße aller Bilder auf eine angegebene Höhe verändert.
Grüße
Andreas
Antwort 5 von aww vom 18.07.2019, 11:50 Options
Also wie ich die Bildgröße verändere habe ich mittlerweile rausgefunden:
Sub Größe()
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Height = 141.75
End Sub
Wie kann ich aber per Makro alle Bilder im Tabellenblatt automatisch markieren. Egal wo diese sich befinden und wie groß diese sind!
Danke
Andreas
Antwort 6 von coros vom 18.07.2019, 12:20 Options
Hallo Andreas,
nachfolgendes Makro bring alle Bilder in Deinem Tabellenblatt auf die von Dir vorgegebene Größe. Kopiere das Makro in ein StandardModul.
[b]Option Explicit
Sub Bilder_ändern()
Dim Picture As Shape
For Each Picture In ActiveSheet.Shapes
With Picture
.Height = 141.75
End With
Next
End Sub[/b]
Ich hoffe, Du kommst klar. Bei Fragen melde Dich
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf
meiner HP in der
Rubrik Anleitungen und dort dann in der
Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 7 von aww vom 18.07.2019, 12:45 Options
Hey Oliver,
klappt super.
Wenn Du jetzt noch ein Makro parat hast mit dem ich alle Bilder makieren und kopieren kann, so dass ich die Bilder in einem anderen Excel Sheet manuell einfügen kann, wäre das super !
Vielen Dank schon mal
Andreas
Übrigens sehr coole HP von Dir. War ich auch schon mal drauf!
Antwort 8 von coros vom 18.07.2019, 14:04 Options
Hallo Andreas,
dann sieht das Makro folgendermaßen aus:
[b]Option Explicit
Sub Bilder_kopieren()
Dim Picture As Shape
Application.ScreenUpdating = False
For Each Picture In ActiveSheet.Shapes
With Picture
.Copy
End With
Sheets("Tabelle2").Paste
Next
End Sub[/b]
Hier werden alle Bidlewr aus dem aktiven Tabellenblatt in das Tabellenblatt mit dem Namen "Tabelle2" an die gleiche Position, wie sie im aktiven Blatt positioniert sind, kopiert.
Danke für das Homepage-Lob.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 9 von aww vom 18.07.2019, 14:45 Options
Hallo Oli,
gibt es auch die Möglichkeit lediglich alle Bilder zu markieren oder diese zu markieren und in die Zwischenablage zu kopieren ?
Ich will diese dann nämlich in anderen immer unterschiedlichen Excel Dokumenten verwenden.
Danke
Andreas
Antwort 10 von coros vom 18.07.2019, 15:09 Options
Hallo Andreas,
dann sieht das Makro wie folgt aus:
[b]Option Explicit
Sub Bilder_in_Zwischenablage()
Dim Picture As Shape
For Each Picture In ActiveSheet.Shapes
Picture.Select Replace:=False
Next
Selection.Copy
End Sub[/b]
Befinden sich nicht nur Grafiken, sondern auch Buttons oder Textfelder usw. in den Tabellenblättern, muss heruasgefiltert werden, bei welchem Objekt es sich um eine Grafik handelt. Das würde dann wie folgt aussehen. Das Makro ist das gleiche, außer dass nur Grafiken in die Zwischenablage kopiert werden.
[b]Option Explicit
Sub Nur_Bilder_in_Zwischenablage()
Dim Picture As Shape
For Each Picture In ActiveSheet.Shapes
If Picture.Type = 13 Then Picture.Select Replace:=False
Next
Selection.Copy
End Sub[/b]
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.