Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » InlineShapeオブジェクト・行内オブジェクトのタイトル・ページ番号・行番号を取得するWordマクロ

InlineShapeオブジェクト・行内オブジェクトのタイトル・ページ番号・行番号を取得するWordマクロ

対象:Word2007, Word2010, Word2013

「マクロ word inlineshapes タイトル」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

InlinesShapeオブジェクトのタイトルを取得するWord マクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

Wordで、図形や画像といったオブジェクトを扱うときに、[文字列の折り返し]が「行内」の行内オブジェクトと、「行内」以外のものに設定されている浮動オブジェクトという考え方を理解しておくことは必須です。

InlineShapeオブジェクト・行内オブジェクトのタイトル・ページ番号・行番号を取得するWordマクロ

その行内オブジェクトのうち、図形以外のものは、VBA的に見るとInlineShapeオブジェクトとなっていて、InlineShapeオブジェクトのまとまりが、InlineShapesコレクションオブジェクトになっています。

InlineShapeオブジェクト・行内オブジェクトのタイトル・ページ番号・行番号を取得するWordマクロ

[スポンサードリンク]

「マクロ word inlineshapes タイトル」
という検索をした方は、そのInlineShapeオブジェクトのタイトルを取得する方法を探していたのでしょう。

InlineShapeオブジェクト・行内オブジェクトのタイトル・ページ番号・行番号を取得するWordマクロ

InlineShapeオブジェクトのタイトル・ページ番号・行番号を取得するサンプルマクロ

InlineShapeオブジェクトのタイトルを取得するだけなら、
 Dim isp As InlineShape
 For Each isp In ActiveDocument.InlineShapes
  Debug.Print isp.Title
 Next isp
というコードでOKですが、折角なので、タイトルと、そのInlineShapeオブジェクトが存在するページ番号と行番号をイミディエイトウィンドウに出力するマクロを作ってみました。

Sub 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

End Sub

上記のマクロを実行すると、イミディエイトウィンドウに、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プロパティを使ってページ番号・行番号を取得しています。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » InlineShapeオブジェクト・行内オブジェクトのタイトル・ページ番号・行番号を取得するWordマクロ

「Shape・図形」の記事一覧

検索


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

.