Home » ワードマクロ・Word VBAの使い方 » ヘッダー・フッター » ヘッダー内のテキストボックスをWord VBAで処理する

ヘッダー内のテキストボックスをWord VBAで処理する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「word vba ヘッダー内のテキストボックス」
「word vba ヘッダー textbox」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Word VBA(Visual Basic for Applications)で、ヘッダー内のテキストボックスを処理するには、どのようなコードを書けばいいのかを探している方による検索でしょうか。

「word vba ヘッダー内のテキストボックス」
「word vba ヘッダー textbox」
という検索キーワードだけでは、具体的に何をしたかったのかがわかりませんので、参考になるかもしれない簡単なマクロを2つご紹介しておきます。

ヘッダーにテキストボックスを挿入するマクロと、ヘッダー内のテキストボックスの文字列を取得するマクロです。

[スポンサードリンク]

ヘッダーにテキストボックスを挿入するサンプルマクロ

以下のマクロを実行すると、アクティブな文書の、一つ目のセクションのヘッダーに、テキストボックスが挿入されます。

Sub ヘッダーにテキストボックスを挿入する()

 Dim shp As Shape

 Set shp = ActiveDocument.Sections(1).Headers(1) _
   .Shapes.AddTextbox( _
     Orientation:=msoTextOrientationHorizontal, _
     Left:=50, _
     Top:=100, _
     Width:=150, _
     Height:=20)

 shp.TextFrame.TextRange.Text = "ヘッダーのサンプル"

End Sub

ShapesコレクションオブジェクトのAddTextboxメソッドでテキストボックスを挿入できるのは、PowerPointマクロと同じです。

違うのは、どこに挿入するかを指定するための「.Shapes.AddTextbox」の前の記述(オブジェクト式)です。

ヘッダー内のテキストボックスの文字列を取得するサンプルマクロ

以下のマクロを実行すると、アクティブな文書の、一つ目のセクションのヘッダーに存在するテキストボックスの文字列が、順番にメッセージボックスに表示されます。

Sub ヘッダー内テキストボックスの文字列を取得する()

 Dim shp As Shape

 For Each shp In ActiveDocument.Sections(1).Headers(1).Shapes
  If shp.TextFrame.HasText Then
   MsgBox shp.TextFrame.TextRange.Text
  End If
 Next

End Sub

先にご紹介したヘッダーにテキストボックスを挿入するマクロと「ActiveDocument.Sections(1).Headers(1).Shapes」の部分は同じで、このマクロの場合はテキストボックス内の文字列を取得するので、For Each~Nextループを回して、各ShapeのTextFrameオブジェクトのHasTextプロパティで文字列を含んでいるかを調べて、
  If shp.TextFrame.HasText Then

ヘッダーのテキストボックスの文字列をメッセージボックスに表示しています。
   MsgBox shp.TextFrame.TextRange.Text

ShapeオブジェクトのTextFrameオブジェクトのTextRangeのTextプロパティで、テキストボックスの文字列を取得できるのは、本文内に存在するテキストボックスの文字列を取得するのと同じです。

上記2つのマクロが、
「word vba ヘッダー内のテキストボックス」
「word vba ヘッダー textbox」
という検索をなさった方の参考になればいいのですが。
[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » ヘッダー・フッター » ヘッダー内のテキストボックスをWord VBAで処理する

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

検索


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

.