Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » ヘッダー内の図・描画オブジェクトをWord VBAで削除する

ヘッダー内の図・描画オブジェクトをWord VBAで削除する

対象:Word2007, Word2010, Word2013, Windows版Word2016

「word vba ヘッダーの図を削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスが、ありました。

ヘッダー内の図を削除する、Wordマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

Wordで何らかの図(描画オブジェクト)を自由に扱うには、浮動オブジェクトと行内オブジェクトについて、

ヘッダー内の図・描画オブジェクトを削除するWordマクロ

理解していることが必須です。VBAからヘッダー内の描画オブジェクトを操作する場合も、この二つ違いの理解は必須です。

[スポンサードリンク]

ヘッダー内の浮動オブジェクトをすべて削除するサンプルマクロ

以下のようなマクロで、ヘッダー内の浮動オブジェクト(Shapeオブジェクト)をすべて削除することができます。

Sub ヘッダーのShapeをすべて削除する()

 Dim sec As Section
 Dim hdr As HeaderFooter
 Dim shp As Shape

 For Each sec In ActiveDocument.Sections
  For Each hdr In sec.Headers
   For Each shp In hdr.Shapes
    shp.Delete
   Next shp
  Next hdr
 Next sec

End Sub

全セクションに対するFor Each~Nextループの中で、
 For Each sec In ActiveDocument.Sections
全ヘッダーに対するFor Each~Nextループを回すのは、
  For Each hdr In sec.Headers
これまでご紹介してきた全ヘッダーをまとめて処理する系のマクロと同じです。

全Shapeに対するFor Each~Nextループの中で、浮動オブジェクトである全Shapeに対するFor Each~Nextループを回して、
   For Each shp In hdr.Shapes
ShapeオブジェクトのDeleteメソッドで削除を行っています。
    shp.Delete

ヘッダー内の行内オブジェクトをすべて削除するサンプルマクロ

ヘッダー内の行内オブジェクト(InlineShapeオブジェクト)をすべて削除するのなら、以下のようなマクロです。

Sub ヘッダーのInlineShapeをすべて削除する()

 Dim sec As Section
 Dim hdr As HeaderFooter
 Dim isp As InlineShape

 For Each sec In ActiveDocument.Sections
  For Each hdr In sec.Headers
   For Each isp In hdr.Range.InlineShapes
    isp.Delete
   Next isp
  Next hdr
 Next sec

End Sub

全セクションに対するループの中で、全ヘッダーへのFor Each~Nextループを回しているのは、先のマクロと同じです。
 For Each sec In ActiveDocument.Sections
  For Each hdr In sec.Headers

ヘッダー内の、行内オブジェクトであるInlineShapeオブジェクトを取得するには、ヘッダーを表すHeaderFooterオブジェクトの、RangeオブジェクトのInlineShapesプロパティを利用します。
   For Each isp In hdr.Range.InlineShapes

先にご紹介した浮動オブジェクトの場合は、
   For Each shp In hdr.Shapes
のように、HeaderFooterオブジェクトからいきなり取得できて、行内オブジェクトの場合は、
   For Each isp In hdr.Range.InlineShapes
と、Rangeオブジェクトを経由しないと取得できないのは、浮動オブジェクトと行内オブジェクトの違いをしっかり理解できている方ならば、とても納得しやすいだろうと感じます。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » ヘッダー内の図・描画オブジェクトをWord VBAで削除する

「ヘッダー&フッター」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.