James는 상호 참조를 위해 문서의 항목에 책갈피를 지정합니다. 때로는 편집 과정에서 이전에 북마크 한 항목을 삭제해야 할 수도 있습니다. James는 삭제하려는 텍스트 (및 책갈피)에 대한 상호 참조가 있는지 확인할 수있는 방법이 있는지 궁금합니다.

이 작업을 가끔 수행해야하는 경우 수동으로 수행 할 수 있습니다. 그러나 접근 방법은 상호 참조를 만든 방법에 따라 다릅니다. 상호 참조를 삽입하면 Word에 상호 참조 대화 상자가 표시됩니다. (그림 1 참조)

image

그림 1. 상호 참조 대화 상자.

대화 상자에서 참조 유형 드롭 다운 목록을 사용하여 만들려는 상호 참조 유형을 선택할 수 있습니다. 각 참조 유형은 실제 상호 참조를 삽입하기 위해 REF 필드의 다른 변형을 사용합니다. 예를 들어 책갈피에 대한 상호 참조를 삽입하면 삽입되는 필드는 다음과 같습니다.

{ REF MyBookmark \h }

“MyBookmark”부분은 상호 참조하는 책갈피 이름입니다.

매개 변수 (이 경우 \ h)는 상호 참조 대화 상자의 참조 삽입 드롭 다운 목록에 의해 제어됩니다. 대신 문서의 제목에 대한 상호 참조를 삽입하면 다음과 유사하게 표시됩니다.

{ REF _Ref47603047 \h }

이 필드 코드의 “_Ref47603047″부분은 숨겨진 시스템 생성 책갈피입니다. 상호 참조를 위해 선택한 제목을 나타냅니다. 책갈피 대화 상자를 표시하고 대화 상자 하단의 숨겨진 책갈피 확인란을 클릭하면 이러한 숨겨진 책갈피를 볼 수 있습니다.

이 팁에서 James는 특별히 책갈피가 지정된 텍스트에 대한 상호 참조를 찾도록 요청했기 때문에 상호 참조를 만들 때 Cross의 참조 삽입 드롭 다운 목록에서 책갈피를 선택하여 검색했다고 가정합니다. -참조 대화 상자. 이것은 실제로 책갈피가 어디에서나 상호 참조되는지 확인하는 것을 조금 더 쉽게 만듭니다.

삭제를 고려중인 텍스트에있는 책갈피의 이름을 파악하여 시작하십시오. 이 예에서는 MyBookmark와 같은 이름이라고 가정하겠습니다. Alt + F9를 누르기 만하면 Word에서 필드 코드 결과가 아닌 문서에 필드 코드가 표시됩니다. 이 시점에서 간단히 북마크 이름 (이 경우 MyBookmark)을 검색 할 수 있으며 모든 REF 필드를 찾을 수 있습니다 (참조 필드는 상호 참조에 사용됨)

북마크 이름이 포함되어 있습니다. 책갈피 이름을 찾지 못하면 해당 책갈피에 대한 상호 참조가없는 것이므로 텍스트와 여기에 포함 된 책갈피를 안전하게 삭제할 수 있습니다. 완료되면 Alt + F9를 다시 눌러 필드 코드 표시를 끕니다.

책갈피가 한동안 두 번 이상 참조되는지 확인해야하거나 찾기 및 바꾸기가 제공하는 것보다 더 완전한 검색을 수행하려는 경우 매크로 사용을 고려해야합니다. 이 상황에서 다음 네 가지 매크로 집합이 유용 할 수 있습니다.

Sub IsBookmarkReferenced()

Dim aStory As Range     Dim aShape As Shape     Dim aField As Field     Dim bkName As String     Dim bReffed As Boolean

bReffed = False     If Selection.Bookmarks.Count > 0 Then         bkName = Selection.Bookmarks(1).Name         For Each aStory In ActiveDocument.StoryRanges             If TestForBookmark(aStory, bkName) Then                 bReffed = True             Else                 Select Case aStory.StoryType                     Case wdMainTextStory, wdEvenPagesHeaderStory, _                       wdPrimaryHeaderStory, wdEvenPagesFooterStory, _                       wdPrimaryFooterStory, wdFirstPageHeaderStory, _                       wdFirstPageFooterStory                         For Each aShape In aStory.ShapeRange                             If aShape.TextFrame.HasText Then                                 If TestForBookmark(aShape.TextFrame.TextRange, bkName) Then bReffed = True                             End If                         Next                     End Select                 Next aStory             Endif         Next aStory         sTemp = "Bookmark " & bkName & " is "

If Not bReffed Then sTemp = sTemp & "NOT "

sTemp = sTemp & "referenced in the document."

Else         sTemp = "There is no bookmark in the selected text."

End If     MsgBox sTemp End Sub
Function TestForBookmark(tRange As Range, bkName As String) As Boolean     Dim aField As Field

TestForBookmark = True     For Each aField In tRange.Fields         Select Case aField.Type             Case wdFieldRef, wdFieldAsk, wdFieldBarCode, _               wdFieldGoToButton, wdFieldHyperlink, _               wdFieldNoteRef, wdFieldPageRef, wdFieldSet                 If BookRef(aField.Code.Text, aField.Type) = bkName Then Exit Function             Case wdFieldTOC, wdFieldTOA                 If TOCRef(aField.Code.Text) = bkName Then Exit Function         End Select     Next aField     TestForBookmark = False End Function
Function BookRef(str As String, typeCode As Long) As String     Dim s As String     Dim i As Long

s = Trim(str)

If s <> "" Then         i = InStr(s, " ")

If i > 0 Then s = Trim(Mid(s, i))

If typeCode = wdFieldHyperlink Then             If InStr(s, "\l") > 0 Then                 s = Mid(s, InStr(s, """") + 1)

i = InStr(s, """")

If i > 1 Then s = Left(s, i - 1)

Else                 s = ""

End If         Else             i = InStr(s, " ")

If i > 0 Then s = Trim(Left(s, i))

End If     End If     BookRef = s End Function
Function TOCRef(str As String) As String     Dim s As String     Dim i As Long

s = Trim(str)

i = InStr(s, "\b")

If i = 0 Then         TOCRef = ""

Exit Function     End If     s = Trim(Mid(s, i + 2))

i = InStr(s, " ")

If i > 0 Then s = Left(s, i - 1)

TOCRef = s End Function

매크로를 사용하려면 삭제하려는 텍스트를 선택한 다음 IsBookmarkReferenced 매크로를 실행하기 만하면됩니다.

차례로 다른 세 가지 기능을 사용하여 선택한 텍스트의 책갈피가 다른 곳에서 참조되는지 확인합니다. 매크로는 주 문서 자체뿐만 아니라 머리글, 바닥 글 및 텍스트 상자의 필드도 확인합니다.

_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.

(Microsoft Word는 세계에서 가장 인기있는 워드 프로세싱 소프트웨어입니다.)이 팁 (7619)은 Microsoft Word 2007, 2010, 2013, 2016, 2019 및 Office 365의 Word에 적용됩니다.