Wordオートメーションは、ブックマークがテーブルにあるかどうかを調べます
-
03-07-2019 - |
質問
Wordオートメーションを使用していくつかのドキュメントを操作しています(yuk!)。このコマンドを使用して、ドキュメント内のブックマークを取得しています。
Object oBookmark = "MyBookmarkName";
Range oRngoBookmark = wordDocument.Bookmarks.get_Item(ref oBookmark).Range;
見つけたいのは、そのブックマークがドキュメント内のテーブルにあるかどうかです。それを行う簡単な方法はありますか?
.NETアプリケーションのC#からこのコードを呼び出しています。
解決
.netでこれがどのように機能するかは定かではありませんが、このアイデアを示すマクロを次に示します。オブジェクトモデルは同じ傾向があるため、VBAからC#に変換するのは難しいとは思いません。
Sub BookmarksInTables()
Dim aTable As Table
Dim aBookmark As Bookmark
For Each aBookmark In ActiveDocument.Bookmarks
For Each aTable In ActiveDocument.Tables
'If start of book mark is inside the table range or
' the end of a book mark is inside the table range then YES!
If (aBookmark.Range.Start >= aTable.Range.Start _
And aBookmark.Range.Start <= aTable.Range.End) _
Or (aBookmark.Range.End >= aTable.Range.Start _
And aBookmark.Range.End <= aTable.Range.End) Then
MsgBox aBookmark.Name + " is inside a table"
Else
MsgBox aBookmark.Name + " is not inside a table"
End If
Next
Next
End Sub
ブックマークの開始または終了が(ドキュメント全体で)各テーブルの範囲内にあるかどうかを確認することで機能します。 ブックマークの一部がテーブル内にある場合に機能します。
別の方法として、ブックマークがテーブル内にあるかどうかを調べる必要がある場合は、ブックマークの開始がテーブルの開始以上であるかどうかを確認します < em> ブックマークの終わりがテーブルの終わり以下になるようにします。
-クリス
所属していません StackOverflow