ahstax
Goto Top

Mit VBScript ein Wasserzeichen aus einem Word-Dokument entfernen

Hallo,

mit googeln und experimentieren hab ich es hiermit:

Dim ... 
Set objWord = CreateObject("Word.Application")  
Set objDoc = objWord.Documents.Open(docName)
...
bbPath = GetBuildingBlockPath(objWord, "Built-In Building Blocks.dotx")  
entryName = "ENTWURF 1"  

With objWord.ActiveDocument
	.ActiveWindow.ActivePane.View.SeekView = 10
	objWord.Templates(bbPath).BuildingBlockEntries(entryName).Insert objWord.Selection.Range, True   
	.SaveAs(newPath)
End With

hinbekommen, mit VBScript ein Wasserzeichen "Entwurf" in ein bestehendes Word-Dokument einzufügen.

Was ich nicht hin bekomme, ist das Wasserzeichen wieder zu entfernen. Wie es scheint, würde hiermit:
	objWord.Templates(bbPath).BuildingBlockEntries(entryName).Delete   
aus dem Template der Eintrag "ENTWURF 1" entfernt, was ja in meinem Fall falsch ist.

Wie entfernt man also das Wasserzeichen wieder mit VBScript?

Neugierige Grüße,
Andreas

Content-Key: 4222626613

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

Printed on: April 27, 2024 at 07:04 o'clock

Mitglied: 4091525239
Solution 4091525239 Oct 10, 2022 updated at 15:10:38 (UTC)
Goto Top
    Dim shp
    With objWord.ActiveWindow
        .ActivePane.View.SeekView = 9
        For Each shp In objWord.Selection.HeaderFooter.Shapes
            If shp.AlternativeText = "ENTWURF 1" Then  
                shp.Delete
                Exit For
            End If
        Next
        .ActivePane.View.SeekView = 0
    End With
Member: ahstax
ahstax Oct 11, 2022 at 12:20:49 (UTC)
Goto Top
Herzlichen Dank für die Antwort!

Muss ich da dem Wasserzeichen beim einfügen den Alternativtext erst noch mitgeben?
Mitglied: 4091525239
4091525239 Oct 11, 2022 updated at 13:58:01 (UTC)
Goto Top
In der Regel ist das bei den Building Blocks automatisch der Name des Blocks. Bei reinen Bildern evt. noch eine angehängte Dateierweiterung.
Member: ahstax
ahstax Oct 12, 2022 at 08:45:56 (UTC)
Goto Top
Nachdem ich mir mit "MsgBox shp.AlternativeText" in der Schleife die Texte habe anzeigen lassen, habe ich festgestellt, dass der Test in diesem Fall wohl nicht "ENTWURF 1" sondern nur "ENTWURF" ist... Und damit klappts dann auch.

DANKE für Deine Hilfe!
Member: ahstax
ahstax Oct 14, 2022 at 09:56:21 (UTC)
Goto Top
Bitte gestattet mir die Nachfrage, wie ich das Wasserzeichen (s.o.) in jeder Seite eingefügt bekomme. Mein Code fügt das Wasserzeichen nur auf Seite 1 ein...

Entfernt der Code von @4091525239 Wasserzeichen aus dem gesamten Dokument? ODer ebenfalls nur von Seite 1?
Mitglied: 4091525239
4091525239 Oct 14, 2022 updated at 10:06:29 (UTC)
Goto Top
Was sagt dir wohl das hier ...
objWord.Selection
genau, wird dort entfernt wo die aktuelle Selektion gerade ist ... Gilt genauso für das Hinzufügen.
wie ich das Wasserzeichen (s.o.) in jeder Seite eingefügt bekomme
Füge es in der Kopf/Fußzeile ein, und entferne den Haken bei "erste Seite anders".
Member: ahstax
ahstax Oct 14, 2022 at 10:09:01 (UTC)
Goto Top
Danke @4091525239,

"erste Seite anders" zu entfernen geht leider nicht... Die erste Seite hat einen anderen Aufbau also die folgenden...
Mitglied: 4091525239
Solution 4091525239 Oct 14, 2022 updated at 10:19:54 (UTC)
Goto Top
Zitat von @ahstax:

Danke @4091525239,

"erste Seite anders" zu entfernen geht leider nicht... Die erste Seite hat einen anderen Aufbau also die folgenden...

Dann fügst du es dort eben auch zusätzlich ein...

Range für erste Seite
ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range

für die anderen
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
Member: ahstax
ahstax Oct 14, 2022 at 10:29:41 (UTC)
Goto Top
Ich bekomme einen Fehler "Objekt nicht unterstützt", wenn ich diese Zeilen

With objWord.ActiveDocument
	.ActiveWindow.ActivePane.View.SeekView = 9
	objWord.Templates(bbPath).BuildingBlockEntries(entryName).Insert objWord.Selection.Range, True   
End With	

diese Zeilen mache:

With objWord.ActiveDocument
	.ActiveWindow.ActivePane.View.SeekView = 9
	objWord.Templates(bbPath).BuildingBlockEntries(entryName).Insert ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range, True  
	objWord.Templates(bbPath).BuildingBlockEntries(entryName).Insert ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range, True    
End With	
Mitglied: 4091525239
4091525239 Oct 14, 2022 updated at 10:34:03 (UTC)
Goto Top
Ist doch klar, wenn du das nicht in Word selbst ausführst musst du die Konstanten (wdHeaderFooterFirstPage(2) und wdHeaderFooterPrimary(1)) durch ihre Integer Werte ersetzen!! Hast du doch oben selbst auch schon gemacht ... Man ej, kann man sich nicht mal 5 Minuten länger damit beschäftigen, und nicht gleich bei jedem Fehler aufgeben ??
Member: ahstax
ahstax Oct 14, 2022 at 11:11:27 (UTC)
Goto Top
Ja @4091525239, Du hast Recht. Man gibt zu schnell auf, wenn man eine beeindruckend gute Hilfequelle gefunden hat!
Hier: LINK steht es dann auch...


Dennoch... neues Ärgenis:
Lässt sich denn vermeiden, dass mit dem EInfügen des Wasserzeichens ENTWURF eine bereits bestehende Hinterlegung im Header entfernt wird? Also, dass sozusagen das Wasserzeichen hinter das bestehende gelegt wird?
Mitglied: 4091525239
Solution 4091525239 Oct 14, 2022 updated at 11:47:16 (UTC)
Goto Top
Zitat von @ahstax:
Dennoch... neues Ärgenis:
Lässt sich denn vermeiden, dass mit dem EInfügen des Wasserzeichens ENTWURF eine bereits bestehende Hinterlegung im Header entfernt wird? Also, dass sozusagen das Wasserzeichen hinter das bestehende gelegt wird?
Du musst nur den Range passend definieren im Moment ist der ja komplett ausgewählt und wird durch das Einfügen komplett ersetzt. Also collapse die Selection des Ranges ...
Set rng = ActiveDocument.Sections(1).Headers(1).Range
rng.Collapse
' ....  
Member: ahstax
ahstax Oct 17, 2022 at 09:17:07 (UTC)
Goto Top
PERFEKT!!!

Herzlichen, herzlichen Dank!