Hallo! Also hier kurz zur Erklärung. Das Bild wird nicht vor der Textmarke eingefügt sondern an der Stelle der Textmarke. Das Bild wird in den Textfluß eingefügt (deshalb ein Inlineshape) – die anderen frei verschiebbaren Bilder sind von der Art Shape. Da das INlineshape (dein Bild) im Textfluß liegt, kannst du des mit der Range (den Stellen im Text) ansprechen. Bei der einzelligen Variante hatte ich vorausgesetzt, dass es das Bild an der Stelle gibt. Um zu Löschen wähle ich dann eine Range mit einem Start und Endwert aus. (nur ein Wert wird so interpretiert, dass ab der Range bis zum Ende gelöscht wird) Mit
ActiveDocument.Bookmarks("TM_Unterschrift").Range.Start
Suche ich mir dann den Wert der Textmarke und setzte den in dem Konstrukt bei Start und Ende ein (wähle praktisch den Bereich aus):
ActiveDocument.Range(Start:= , End:= + 1).Delete
Das löscht die Range und damit dein Bild. Das plus 1 bei End kann auch weggelassen werden. Dann steht bei Start und End das selbe - geht auch.
Saubere war mEdie Variante die länger ist. Dabei wird erst geschaut, ob es im Text Inlineshapes (also eingefügte Bilder) gibt – am einfachsten über die Anzahl. Danach wähle ich die Range (stelle im Text) der einzelnen Bilder aus
ActiveDocument.InlineShapes.Item(i).Range.Start
und vergleiche das mit der Range deiner Textmarke
ActiveDocument.Bookmarks(""TM_Unterschrift").Range.Start
Wenn beide Range / Stellen identisch sind, habe ich das eingefügte Bild gefunden - alle anderen Bilder liegen wo anders. Auf dies greife ich dann mit Inlineshape zu und lösche es.
ActiveDocument.InlineShapes.Item(i).Delete
Vorteile hierbei ist, dass ich nur dann was lösche, wenn auch wirklich ein Bild da ist. Ansonsten würde der Code (wie bei de einzeiligen Variante) trotzdem die Range / Stelle löschen. Wenn dort aber kein BIld war, löscht es Text - was meist nicht gewollt ist.
Das war’s dann. Ich hoffe mal, dass war halbwegs verständlich. Wenn nicht, einfach nochmal Fragen - dafür gibt es ja ein Forum. VG
|