특정 책갈피에 대한 상호 참조 찾기 (Microsoft Word)
James는 상호 참조를 위해 문서의 항목에 책갈피를 지정합니다. 때로는 편집 과정에서 이전에 북마크 한 항목을 삭제해야 할 수도 있습니다. James는 삭제하려는 텍스트 (및 책갈피)에 대한 상호 참조가 있는지 확인할 수있는 방법이 있는지 궁금합니다.
이 작업을 가끔 수행해야하는 경우 수동으로 수행 할 수 있습니다. 그러나 접근 방법은 상호 참조를 만든 방법에 따라 다릅니다. 상호 참조를 삽입하면 Word에 상호 참조 대화 상자가 표시됩니다. (그림 1 참조)
그림 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에 적용됩니다.