문제

단어 자동화를 사용하여 일부 문서를 조작하고 있습니다 (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

북마크의 시작 또는 끝이 각 테이블의 범위 (전체 문서) 내부에 있는지 확인하여 작동합니다. 북마크의 일부가 테이블 내부에 있으면 작동합니다.

또는 북마크가 있는지 확인 해야하는 경우 독점적으로 테이블 내부에서 책갈피가 시작되는지 확인하고 싶을 것입니다. 그리고 북마크의 끝은 테이블의 끝보다 작거나 동일합니다.

-Kris

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top