「マクロ word inlineshapes タイトル」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
InlinesShapeオブジェクトのタイトルを取得するWord マクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
Wordで、図形や画像といったオブジェクトを扱うときに、[文字列の折り返し]が「行内」の行内オブジェクトと、「行内」以外のものに設定されている浮動オブジェクトという考え方を理解しておくことは必須です。
その行内オブジェクトのうち、図形以外のものは、VBA的に見るとInlineShapeオブジェクトとなっていて、InlineShapeオブジェクトのまとまりが、InlineShapesコレクションオブジェクトになっています。
「マクロ word inlineshapes タイトル」
という検索をした方は、そのInlineShapeオブジェクトのタイトルを取得する方法を探していたのでしょう。
InlineShapeオブジェクトのタイトル・ページ番号・行番号を取得するサンプルマクロ
InlineShapeオブジェクトのタイトルを取得するだけなら、
Dim isp As InlineShape
For Each isp In ActiveDocument.InlineShapes
Debug.Print isp.Title
Next isp
というコードでOKですが、折角なので、タイトルと、そのInlineShapeオブジェクトが存在するページ番号と行番号をイミディエイトウィンドウに出力するマクロを作ってみました。
Dim isp As InlineShape
Dim msg As String
For Each isp In ActiveDocument.InlineShapes
With isp
msg = .Title & vbTab
With .Range
msg = msg & _
.Information(wdActiveEndAdjustedPageNumber)
msg = msg & "-" & _
.Information(wdFirstCharacterLineNumber)
End With
Debug.Print msg
End With
Next isp
上記のマクロを実行すると、イミディエイトウィンドウに、InlineShapeオブジェクトのタイトル・ページ番号・行番号が出力されます。
サンプルマクロの解説
アクティブな文書の、全InlineShapeオブジェクトにループを回して、
For Each isp In ActiveDocument.InlineShapes
まず、各InlineShapeオブジェクトのタイトルを変数・msgに出力し、
With isp
msg = .Title & vbTab
そのInlineShapeオブジェクトが存在するページのページ番号と、
With .Range
msg = msg & _
.Information(wdActiveEndAdjustedPageNumber)
ページ番号を変数・msgに追記し、
msg = msg & "-" & _
.Information(wdFirstCharacterLineNumber)
End With
変数の内容をDebug.Printする処理を繰り返しています。
Debug.Print msg
End With
Next isp
InlineShapeオブジェクトから、いきなりページ番号や行番号を取得することはできないので、Rangeプロパティを使ってRangeオブジェクトを取得してから、RangeオブジェクトのInformationプロパティを使ってページ番号・行番号を取得しています。
- Newer:表に斜め罫線を引くPowerPointマクロ
- Older:VBAで図形内文字列を中央に配置する-TextFrame.HorizontalAlignment・VerticalAlignment
Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » InlineShapeオブジェクト・行内オブジェクトのタイトル・ページ番号・行番号を取得するWordマクロ