「word マクロ テキストボックス 座標」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
テキストボックスの座標・位置を取得するWord マクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
図形の位置を取得するサンプルマクロ
テキストボックスというキーワードが使われていますが、テキストボックスもVBA側から見たときには図形(以前のオートシェイプ)の一種です。
ここでは選択されている図形の位置を取得するサンプルマクロをご紹介しておきます。
Dim msg As String
With Selection
If .Type = wdSelectionShape Then
With .ShapeRange
.RelativeVerticalPosition _
= wdRelativeVerticalPositionPage
.RelativeHorizontalPosition _
= wdRelativeHorizontalPositionPage
msg = "用紙上端から "
msg = msg & Round(PointsToCentimeters(.Top), 2) & "cm"
msg = msg & vbCrLf & "用紙右端から "
msg = msg & Round(PointsToCentimeters(.Left), 2) & "cm"
End With
Else
msg = "図形を選択して実行してください。"
End If
End With
MsgBox msg
End Sub図形を選択しておいてから上記のマクロを実行すると、下図のようなメッセージボックスが表示されます。
サンプルマクロの解説
まず、選択されているのが図形だったときだけ処理を行うようにしています。
With Selection
If .Type = wdSelectionShape Then
図形の垂直方向の位置を取得する基準をページの上端に、
.RelativeVerticalPosition _
= wdRelativeVerticalPositionPage
図形の水平方向の位置を取得する基準をページの左端に、
.RelativeHorizontalPosition _
= wdRelativeHorizontalPositionPage
それぞれ設定してから、図形の位置を取得します。
ページの上端からの位置をTopプロパティで取得して、単位をPointToCentimetersメソッドでポイントからセンチメートルに変換した値をRound関数で丸め、
msg = msg & Round(PointsToCentimeters(.Top), 2) & "cm"
ページの左端からの位置をLeftプロパティで取得して、単位をPointToCentimetersメソッドでポイントからセンチメートルに変換した値をRound関数で丸め、
msg = msg & Round(PointsToCentimeters(.Left), 2) & "cm"
最後にメッセージボックスを表示しています。
MsgBox msg
Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » 図形・オートシェイプ・テキストボックスの位置を取得するWordマクロ