37414
Goto Top

VBA-Makro in Word - eingefügtes Bild während Makroaufzeichnung editieren

Hallo,

ich habe ein kleines Makro mit dem Makro-Recorder von Word 2016 aufgezeichnet.
Dieses setzt einen Namen in ein Word-Dokument und darüber die zum Namen passende Unterschrift als JPG-Datei.

Grds. funktioniert das Makro gut...

Aber merkwürdiger Weise wird das Foto ein Stückchen zu hoch eingesetzt und ich muss es - nachdem ich die Makro-Aufzeichnung beendet habe - manuell anklicken, damit ich über die Layout-Einstellungen "vor den Text" auswählen kann. Danach kann ich es dann manuell um 8 Klicks nach unten verschieben.

Natürlich habe ich versucht, die Layout-Einstellungen schon während der Aufzeichnung des Makros vorzunehmen.
Leider geht das nicht... denn während man das Makro aufzeichnet, kann das eingesetzte Foto nicht editiert werden (re. Maustaste / Layouteinstellungen).

Nun meine Frage:
Gibt es eine Möglichkeit, während der Makro-Aufzeichnung ein eingesetztes Bild auch zu editieren, sodass man über die re. Maustaste den Textumbruch auf "Vor den Text" einstellen kann?
Wenn nein --> Was muss ich im VBA-Code des Makros eintragen, um das eingesetzte Foto mit Textumbruch "Vor den Text" einzusetzen?

  • Vielleicht gibt es ja sogar eine Möglichkeit, per VBA-Makro ein Foto an eine ganz bestimmte Stelle in ein Dokument einsetzen zu können (Koordinaten)

Danke und Gruß,
imebro

Content-Key: 502238

Url: https://administrator.de/contentid/502238

Printed on: April 24, 2024 at 12:04 o'clock

Mitglied: 141320
141320 Oct 08, 2019 updated at 16:23:00 (UTC)
Goto Top
Word-Marko: ein Bild aus einem festgelegten Ordner in ein Dokument einbinden

Bild als "Shape" hinzufügen und WrapFormat.Type Property entsprechend setzen.

Sub RipSteve()
    Dim pic As Shape
    Set pic = ActiveDocument.Shapes.AddPicture("https://karrierebibel.de/wp-content/uploads/2019/01/Unterschrift-Steve-Jobs-Apple.png", False, True, Top:=Application.MillimetersToPoints(10), Left:=Application.MillimetersToPoints(10))  
    pic.WrapFormat.Type = wdWrapFront
End Sub
Mitglied: 37414
37414 Oct 08, 2019 at 16:27:44 (UTC)
Goto Top
OK und danke. Werde das gleich morgen Früh mal testen.

LG
imebro
Mitglied: 37414
37414 Oct 09, 2019 updated at 06:57:46 (UTC)
Goto Top
Nochmals danke an Dich "nc6400".

Habe jetzt mal ein kleines Script geschrieben und Deine Code-Zeilen mit eingebaut.
Dabei habe ich ein wenig herumgefrickelt und bin nicht sicher, ob das nicht einfacher gehen würde face-smile

Was macht dieses Makro?
- zuerst den Text "freundlichen Grüßen" suchen (dabei wird dieser Text grau markiert von der Windows-Suche).
- dann mit dem Cursor 1 x nach rechts (Markierung verschwindet) und dann 1 x nach unten (damit der Cursor unter dem Text steht)
- jetzt 7 Tab-Sprünge nach rechts
- dann das Foto mit der Unterschrift einfügen
- am Ende das Foto in die gleiche Höhe setzen, wie das bereits vorhandene (Unterschrift-Foto, welches links eingesetzt ist)

Hier mein jetztiger Code:

Sub WB()
'  
' Zweite Unterschrift rechts einfügen in Word-Dokument (für WB-Antrag)  
'  
    Selection.GoTo wdGoToPage, wdGoToFirst
    With ActiveDocument.Content.Find
        .Text = "freundlichen Grüßen"  
        .Forward = True
        Selection.MoveDown Unit:=wdLine, Count:=5
    End With
    
    Selection.TypeText Text:=vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & vbTab
    Dim pic As Shape
    Set pic = ActiveDocument.Shapes.AddPicture("C:\Users\Name\Desktop\unterschrift.jpg", False, True, Top:=Application.MillimetersToPoints(28), Left:=Application.MillimetersToPoints(90))  
    pic.WrapFormat.Type = wdWrapFront
    
End Sub

Erklärung zu 2 meiner Code-Einträge:
1) In Code-Zeile 5 habe ich mit "Count:=5" das eingesetzte Foto ein Stück nach unten bewegt, sodass es schon fast neben der schon existierenden Unterschrift steht.

2) Da das neu eingesetzte Foto mit der Unterschrift auf der gleichen Höhe stehen soll, wie die bereits existierende Unterschrift, habe ich dann in Code-Zeile 10 mit "Top:=Application.MillimetersToPoints(28), Left:=Application.MillimetersToPoints(90))" das eingesetzte Foto noch etwas weiter nach unten geschoben sowie ein Stück weiter nach rechts.

Vielleicht gibt es ja sogar eine Möglichkeit, ein Foto auf gleicher Höhe einzusetzen, wie ein bereits vorhandenes Foto. Und dazu auch noch mit einem bestimmten Abstand vom bereits vorhandenen Foto...

Wie gesagt... das Makro funktioniert so, aber ich würde halt gerne wissen, wie man es richtig macht face-smile

Danke und Gruß,
imebro
Mitglied: 141320
141320 Oct 09, 2019 updated at 07:21:33 (UTC)
Goto Top
aber ich würde halt gerne wissen, wie man es richtig macht
Setze eine Textmarke an die gewünschte Stelle, deren Position du dann über ThisDocument.Bookmarks("BlaBlub").Range ansprichst, dann diese der AddPicture Methode als Anchor übergeben.
Photo sind nichts weiter als Shape-Objekte die du ebenfalls enumerieren und somit ansprechen kannst.
Es geht alles schau dir einfach mal die Properties der einzelnen Objekte an dann geht auch dir ein Lichtlein auf, dann baucht man hier auch keine Romane über so was banales verfassen.
https://docs.microsoft.com/de-de/office/vba/api/overview/word/object-mod ...
Mitglied: 37414
37414 Oct 09, 2019 at 08:22:23 (UTC)
Goto Top
Danke Dir nochmals.

Habe das jetzt mal so im Makro ausprobiert.
Textmarke eingesetzt, Namen hierfür vergeben und diese dann im Makro angesprungen.
Das funktioniert auch...
Aber auch hierbei wird das Foto dann ja noch nicht mit "Textumbruch: Vor den Text" eingesetzt.
All das muss ich dann in diesem Makro auch noch einsetzen, sodass am Ende mein Makro sinnvoller ist, da ich in den Wordvorlagen (.dotx) nicht noch die Textmarke einsetzen und abspeichern muss.

Die Erläuterungen über Deinen Link habe ich mir mal grob angeschaut. Aber um ehrlich zu sein, blicke ich da (jedenfalls nicht auf Anhieb) nicht durch. Damit müßte ich mich schon eingehender beschäftigen. Leider brauche ich das Makro schon spätestens morgen face-smile

Gibt es denn keine Möglichkeit, ein Foto quasi in der gleichen Höhe und mit einem bestimmten Abstand zu einem anderen per Makro einzusetzen?
Ich denke gerade an diese grüne Linie, die in Word 2016 erscheint, wenn man ein Foto ausrichtet. Diese Linie zeigt ja offenbar an, wann das zweite Foto die gleiche Höhe hat.

Danke und Gruß,
imebro
Mitglied: 141320
141320 Oct 09, 2019 updated at 08:55:25 (UTC)
Goto Top
Gibt es denn keine Möglichkeit, ein Foto quasi in der gleichen Höhe und mit einem bestimmten Abstand zu einem anderen per Makro einzusetzen?
Sicher geht das. Durchlaufe alle Shapes im Dokument mit einer Foreach Schleife prüfe den Shape Typ auf den Typ Bild (zus. Evt. Über Rechtsklick Eigenschaften ein Alternate Text definieren und diesen im Code prüfen um das Richtige Bild zu erwischen), nehme das Objekt und hole dir über die Property Top und Left Koordinaten, zur Left Koordinate addierst du noch die Width Property des Bildes + Margin zum Bild und schon platzierst du das Bild mit diesem berechneten Koordinaten mit der obigen AddPicture Methode, fertig.
Mitglied: 37414
37414 Oct 09, 2019 updated at 11:41:59 (UTC)
Goto Top
Danke Dir "nc6400", aber sei mir bitte nicht böse.

Das was Du da schreibst, ist für mich quasi wie manche Hyroglyphen für den Archäologen face-wink
Ich bin einfach nur Anwender und kein Programmierer.
Habe mal ein bisschen mit Batch-Dateien herum probiert und jetzt auch mal mit Makro´s in Word... aber habe da keine tieferen Kenntnisse.

Um mal zu zeigen, wie das ganze verwendet wird und am Ende aussehen soll, habe ich mal in Word ein Beispiel erstellt und daraus einen Screenshot gemacht:

unterschrift wb

Die Unterschrift links (Sachbearbeiter) wird erst als zweites eingesetzt und zwar später (ggf. erst am nächsten Tag)!!!
Das heißt, dass die Unterschrift (als PNG-Foto) rechts (Aushilfe) zuerst dort eingesetzt werden muss.
Daher muss dieses Foto auch "vor dem Text" stehen, damit es nicht verschoben wird, wenn später die zweite Unterschrift eingesetzt wird.

Da aber der Text oben über den Unterschriften auch etwas länger werden kann, müssen die Unterschriften am Ende natürlich dennoch auf der gleichen Höhe sein. Daher am besten in Abhängigkeit vom Text "mit freundlichen Grüßen", da dieser Text natürlich immer direkt über den Unterschriften steht... egal wie hoch oder tief im Dokument.

In meiner beispielhaften Word-Datei habe ich das jetzt manuell so hingefrickelt...
Schiebt man jetzt die Zeile "mit freundlichen Grüßen" weiter runter, werden beide Unterschriften-Fotos mit nach unten geschoben... so soll das sein face-wink

Hoffe ich habe es jetzt verständlich erklärt.

Gruß,
imebro
Mitglied: 141320
Solution 141320 Oct 09, 2019 updated at 13:36:08 (UTC)
Goto Top
Novel continues , wie immer ...
https://we.tl/t-WUYLKSqaMt

Tschö.
Mitglied: 37414
37414 Oct 10, 2019 at 07:12:01 (UTC)
Goto Top
WOW... vielen Dank für den Code.
Funktioniert perfekt.

Habe das jetzt an meine Situation angepaßt und nutze das Makro jetzt über einen Button direkt in Word face-wink

Schöne Grüße,
imebro