「word vba テキストボックスの枠線の色を変える」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
テキストボックスの枠線の色を変更するWord VBA(Visual Basic for Applications)のコードを探している方による検索です。
たくさんのテキストボックスの書式を変更するのは、なかなか面倒ですから、こういったマクロのニーズはとても納得できます。
文書内の全テキストボックスの枠線の色を変更するサンプルマクロ
以下のようなマクロで、アクティブな文書内のすべてのテキストボックスの枠線の色を、赤色に変更することができます。
Dim shp As Shape
For Each shp In ActiveDocument.Shapes
If shp.Type = msoTextBox Then
shp.Line.ForeColor = RGB(255, 0, 0)
End If
Next shp
サンプルマクロの解説
上記のマクロで利用しているオブジェクトの階層構造を図にすると下図のようなイメージです。
行っている処理は、以下のとおりです。
アクティブな文書内の全図形に対してループ処理を開始します。
For Each shp In ActiveDocument.Shapes
ActiveDocumentプロパティでアクティブな文書を表すDocumentオブジェクトを取得して、DocumentオブジェクトのShapesプロパティで、アクティブな文書内の全図形を表すShapesコレクションオブジェクトを取得しています。
全図形に対するループ処理の中で、個々の図形を順番に調べて、テキストボックスだったときに、
If shp.Type = msoTextBox Then
枠線の色を変更しています。
shp.Line.ForeColor = RGB(255, 0, 0)
ShapeオブジェクトのLineプロパティで、LineFormatオブジェクトを取得して、LineFormatオブジェクトのForeColorプロパティを設定しています。
VBAでは、特にオブジェクト階層の途中に登場するオブジェクトを返すプロパティの場合、返されるオブジェクト名と同じになっていることが多いのですが、Shape.LineプロパティとLineFormatオブジェクトの関係はそうなっていない点に、注意が必要です。
ShapeオブジェクトのLineプロパティが返すのは、Lineオブジェクトではなく、LineFormatオブジェクトです。
(Microsoftは、なぜ、Shape.LineFormatプロパティにしなかったのでしょうかね?)
Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » テキストボックスの枠線の色をまとめて変更するWordマクロ