Wordオートメーションは、ブックマークがテーブルにあるかどうかを調べます

StackOverflow https://stackoverflow.com/questions/608684

  •  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> ブックマークの終わりがテーブルの終わり以下になるようにします。

-クリス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top