Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » テキストボックスの枠線の色をまとめて変更するWordマクロ

テキストボックスの枠線の色をまとめて変更するWordマクロ

対象:Word2007, Word2010, Word2013

「word vba テキストボックスの枠線の色を変える」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

テキストボックスの枠線の色を変更するWord VBA(Visual Basic for Applications)のコードを探している方による検索です。

たくさんのテキストボックスの書式を変更するのは、なかなか面倒ですから、こういったマクロのニーズはとても納得できます。

[スポンサードリンク]

文書内の全テキストボックスの枠線の色を変更するサンプルマクロ

以下のようなマクロで、アクティブな文書内のすべてのテキストボックスの枠線の色を、赤色に変更することができます。

Sub アクティブ文書内のテキストボックスの枠線の色を変更する()

 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

End Sub

サンプルマクロの解説

上記のマクロで利用しているオブジェクトの階層構造を図にすると下図のようなイメージです。

テキストボックスの枠線の色を変更するWordマクロ

行っている処理は、以下のとおりです。

アクティブな文書内の全図形に対してループ処理を開始します。
 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プロパティにしなかったのでしょうかね?)

テキストボックスの枠線の色を変更するWordマクロ

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » テキストボックスの枠線の色をまとめて変更するWordマクロ

「Shape・図形」の記事一覧

検索


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

.