Wordファイルの透かしを削除するには次のようにします(Word2007)。
- ページレイアウト-ページの背景-透かしを選択。
- 透かしの削除を選択。
これをマクロで実行する方法を考えました。
複数のWord文書に連続して処理を施すマクロに応用することもできます。
「透かし」の実態はヘッダーに組み込まれた図形(ワードアート)であって、その図形には名前が付いています。
名前が分かれば次のように指定して削除すれば済みます。
Selection.HeaderFooter.Shapes(名前).Delete
しかし、名前が特定できないので、次のように、すべての図形に対して名前を取得して調べる、ということをします。
透かしの場合、名前は「PowerPlusWaterMarkObject7629843」のように「PowerPlusWaterMarkObject」という文字列を含むため、これを条件にします。
Sub del_watermark()
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
For i = 1 to Selection.HeaderFooter.Shapes.Count
Set obj = Selection.HeaderFooter.Shapes(i)
If InStr(obj.Name, "PowerPlusWaterMarkObject") > 0 Then
Selection.HeaderFooter.Shapes(obj.Name).Delete
End If
Next i
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
For i = 1 to Selection.HeaderFooter.Shapes.Count
Set obj = Selection.HeaderFooter.Shapes(i)
If InStr(obj.Name, "PowerPlusWaterMarkObject") > 0 Then
Selection.HeaderFooter.Shapes(obj.Name).Delete
End If
Next i
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
なお、先に書いたように、透かしの実体はヘッダーに組み込まれた図形です。
通常は、ヘッダーに図形を組み込むという使い方はしないでしょう。
となれば、図形は1個だけですから、次のように「Shapes(1)」と指定してもOKです。
Sub del_watermark()
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Shapes(1).Delete
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Shapes(1).Delete
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
コメント