「word vba ヘッダー内のテキストボックス」
「word vba ヘッダー textbox」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Word VBA(Visual Basic for Applications)で、ヘッダー内のテキストボックスを処理するには、どのようなコードを書けばいいのかを探している方による検索でしょうか。
「word vba ヘッダー内のテキストボックス」
「word vba ヘッダー textbox」
という検索キーワードだけでは、具体的に何をしたかったのかがわかりませんので、参考になるかもしれない簡単なマクロを2つご紹介しておきます。
ヘッダーにテキストボックスを挿入するマクロと、ヘッダー内のテキストボックスの文字列を取得するマクロです。
ヘッダーにテキストボックスを挿入するサンプルマクロ
以下のマクロを実行すると、アクティブな文書の、一つ目のセクションのヘッダーに、テキストボックスが挿入されます。
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 SubShapesコレクションオブジェクトのAddTextboxメソッドでテキストボックスを挿入できるのは、PowerPointマクロと同じです。
違うのは、どこに挿入するかを指定するための「.Shapes.AddTextbox」の前の記述(オブジェクト式)です。
ヘッダー内のテキストボックスの文字列を取得するサンプルマクロ
以下のマクロを実行すると、アクティブな文書の、一つ目のセクションのヘッダーに存在するテキストボックスの文字列が、順番にメッセージボックスに表示されます。
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
先にご紹介したヘッダーにテキストボックスを挿入するマクロと「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プロパティで、テキストボックスの文字列を取得できるのは、本文内に存在するテキストボックスの文字列を取得するのと同じです。
「word vba ヘッダー内のテキストボックス」
「word vba ヘッダー textbox」
という検索をなさった方の参考になればいいのですが。
- Newer:Excelマクロ入門講座 2016-3-27(日)10:30より
- Older:VBAで括弧内の文字列を取得する
Home » ワードマクロ・Word VBAの使い方 » ヘッダー&フッター » ヘッダー内のテキストボックスをWord VBAで処理する