「word マクロ ヘッダー shape 挿入」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
ヘッダーに図形(Shape)を挿入する、Wordマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
ヘッダー部分のオブジェクトモデルは複雑ですから、悩んでしまう方がいらっしゃるのはとても納得できます。
ヘッダーに図形を挿入するサンプルマクロ
以下のようなマクロで、アクティブな文書の一つ目のセクションに、緑色の星型図形を挿入することができます。
Dim shp As Shape
Set shp = _
ActiveDocument _
.Sections(1).Headers(wdHeaderFooterPrimary) _
.Shapes.AddShape( _
Type:=msoShape5pointStar, _
Left:=20, Top:=20, _
Width:=100, Height:=100)
shp.Fill.ForeColor.RGB = RGB(0, 255, 0)
End Subサンプルマクロで利用しているオブジェクトモデル
図形の挿入を行うのは、本文でもヘッダーでも、ShapesコレクションオブジェクトのAddShapeメソッドです。
Shapes.AddShapeメソッドの引数には、図形の種別・左端の位置・上端の位置・幅・高さを指定する必要があります。これが、
.Shapes.AddShape( _
Type:=msoShape5pointStar, _
Left:=20, Top:=20, _
Width:=100, Height:=100)
の部分です。
引数名:Type・Left・Top・Width・Heightから、図形の種別・左端の位置・上端の位置・幅・高さを指定していることがよくわかるはずです。
Shapes.AddShapeメソッドは実行されると挿入したの図形を表すShapeオブジェクトを返してきます。
このことを利用して上記のマクロでは、オブジェクト変数・shpに、Shapes.AddShapeメソッドの戻りをセットしてから、ColorFormatオブジェクトのRGBプロパティを使って、
前景色を緑色に変更する処理を入れています。
shp.Fill.ForeColor.RGB = RGB(0, 255, 0)
ここまでの話は、ヘッダーに限定されないShapeオブジェクト全般に関するオブジェクト式についてです。
「word マクロ ヘッダー shape 挿入」
という検索をなさった方のメインテーマ・ヘッダーに関する記述は、
ActiveDocument _
.Sections(1).Headers(wdHeaderFooterPrimary) _
の部分です。
ActiveDocumentプロパティでアクティブな文書を表すDocumentオブジェクトを取得して、Document.Sectionsプロパティで全セクションを表すSectionsコレクションオブジェクトを取得して、
Sections.Itemメソッドの引数に「1」を指定することで一つ目のセクションを表すSectionオブジェクトを取得して、
Section.Headersプロパティで一つ目のセクションのすべてのヘッダーを表すHeadersFootersコレクションオブジェクトを取得して、
HeadersFooters.Itemメソッドの引数に、
WdHeaderFooterIndex列挙に定義されている定数・wdHeaderFooterPrimaryを指定することで
プライマリーヘッダーを表すHeaderFooterオブジェクトを取得しています。
Wordのヘッダー・フッターに関わるマクロを自分で作れるようになりたいという方には、オブジェクトブラウザーを何度も引きながら、オブジェクトの階層関係図を手書きしてみることをおすすめしておきます。
- Newer:シートを別のブックにコピーするExcelマクロ
- Older:疑問にその場で答えてもらえることが最大の利点
Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » Word VBAでヘッダーにShapeを挿入する