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

Mitglied: imebro

imebro (Level 2) - Jetzt verbinden

08.10.2019, aktualisiert 15:54 Uhr, 973 Aufrufe, 9 Kommentare

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
Mitglied: 141320
08.10.2019, aktualisiert um 18:23 Uhr
https://administrator.de/forum/word-marko-bild-festgelegten-ordner-dokum ...

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

Bitte warten ..
Mitglied: imebro
08.10.2019 um 18:27 Uhr
OK und danke. Werde das gleich morgen Früh mal testen.

LG
imebro
Bitte warten ..
Mitglied: imebro
09.10.2019, aktualisiert um 08:57 Uhr
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

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:

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

Danke und Gruß,
imebro
Bitte warten ..
Mitglied: 141320
09.10.2019, aktualisiert um 09:21 Uhr
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 ...
Bitte warten ..
Mitglied: imebro
09.10.2019 um 10:22 Uhr
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

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
Bitte warten ..
Mitglied: 141320
09.10.2019, aktualisiert um 10:55 Uhr
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.
Bitte warten ..
Mitglied: imebro
09.10.2019, aktualisiert um 13:41 Uhr
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
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 - Klicke auf das Bild, um es zu vergrößern

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

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

Gruß,
imebro
Bitte warten ..
Mitglied: 141320
LÖSUNG 09.10.2019, aktualisiert um 15:36 Uhr
Novel continues , wie immer ...
https://we.tl/t-WUYLKSqaMt

Tschö.
Bitte warten ..
Mitglied: imebro
10.10.2019 um 09:12 Uhr
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

Schöne Grüße,
imebro
Bitte warten ..
Heiß diskutierte Inhalte
Server-Hardware
Grobes Konzept Hyper-V Storage - Storage für Hyper-V
nachgefragtFrageServer-Hardware25 Kommentare

Hallo Administratoren. Um VHDX-Daten zentral zu halten freue ich mich auf Euren konstruktiven Input. Bisher liegen die VHDX-Daten jeweils ...

Voice over IP
Brother-Fax an Speedport Hybrid funktioniert nicht
gelöst kman123FrageVoice over IP16 Kommentare

Hallo liebes Forum, ich bin neu hier und hätte eine kleine Frage, da ich einfach nicht weiter komme. Sorry ...

Windows Server
Terminal Server Hyper-V Grafik performance
ReneM1983FrageWindows Server16 Kommentare

Moin Kollegen, ich habe da mal ein Problem, ein Kunde hat einen Terminal Server auf einem Hyper-V laufen, wo ...

C und C++
(Cpp) Verständnisproblem: Nutzen des new-operators? (mit Beispiel)
gelöst SinixNDFrageC und C++16 Kommentare

Hallo liebe community! INTRO: Zunächsteinmal: Trotz mehrerer Stunden Recherche habe ich für meine Frage leider noch keine Antwort gefunden ...

Verschlüsselung & Zertifikate
Elektronische Unterschrift
PeterzFrageVerschlüsselung & Zertifikate13 Kommentare

Hallo zusammen, könnt ihr mir vielleicht ein paar Hinweise geben, wie ihr eine elektronische Unterschrift unter Dokumente und E-Mails ...

Vmware
Probleme mit meinem VM-Server und keine Idee
worker2000FrageVmware12 Kommentare

Moin zusammen, ich brauche mal ein wenig Input weil mir langsam die Ideen ausgehen. Am Ende vermute ich dass ...

Ähnliche Inhalte
VB for Applications
VBA-Makro verschwindet nach Speichern
gelöst lupi1989FrageVB for Applications5 Kommentare

Liebe Leute, bei mir verschwindet der Makro für den Scrollbereich in Excel(abgespeichert in xlsm) immer wieder nach dem Speichern. ...

Microsoft Office

Passwortgeschützte Excel Dateien bearbeiten VBA Makro

schwalbepilotFrageMicrosoft Office2 Kommentare

Ich möchte Fußzeilen in alle Excel Dateien eines Ordners einfügen. Das klappt alles soweit, leider sind alle Dateien passwortgeschützt. ...

Microsoft Office

VBA Excel Makro - Serienbrief in Word aus Excel starten und anschließen einzeln speichern

gelöst abuelitoFrageMicrosoft Office5 Kommentare

Hallo an Alle, ich möchte gerne aus Excel heraus mein Serienbrief starten und die Briefe einzeln speichern. Das bedeutet, ...

VB for Applications

Word Makro Sting nach Textmarke auslesen

gelöst Pageman262FrageVB for Applications1 Kommentar

Hallo liebe Pro´s ich versuche eine bestimmte Anzahl an Zeichen nach einer Textmarke in Word auszulesen. Mit diesem Code ...

VB for Applications

VBA Word - dynamische Textformatierung mittels vba in Bausteinkatalogelementen

gelöst Pat.batFrageVB for Applications5 Kommentare

Hallo zusammen, ich arbeite derzeit an einem Skript, das beim öffnen des Dokuments alle ContentControls sucht und diese farblich ...

VB for Applications

VBA-Makro - ersetzen eines Textes durch Kleinbuchstaben

gelöst imebroFrageVB for Applications19 Kommentare

Hallo, es geht nochmal um die gleichen Makros, wie im bereits gelösten Thread. Ich habe folgende 2 VBA-Makros erstellt: ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT