Word를 사용하면 문서에서 외부 문서 또는 현재 문서 내의 다른 위치에 대한 링크를 설정할 수 있습니다. Peter는 문서 내의 내부 링크 만 계산하는 방법을 찾고 있으며이를 수행 할 방법이 있는지 궁금합니다.

이렇게 할 수있는 유일한 방법은 매크로를 사용하여 문서의 각 하이퍼 링크를 단계별로 실행하는 것입니다. 다행히 Hyperlinks 컬렉션의 요소를 살펴보면 쉽게 수행 할 수 있습니다. 각 Hyperlink 개체에는 링크의 특성에 따라 설정할 수있는 다양한 속성이 있습니다. 특히 중요한 것은 Address 및 SubAddress 속성입니다.

주소 속성 (이름에서 알 수 있듯이)은 링크의 대상 주소입니다. 일반적으로 이것은 URL (/)과 비슷하지만 시스템에서 액세스 할 수있는 드라이브의 파일 이름이거나 전자 메일 주소 (mailto : [email protected]에서와 같이) 일 수도 있습니다. Address 속성은 여러 목적을 가질 수 있기 때문에 “http”접두사와 같은 알리는 문자의 존재를 구체적으로 확인할 수 없습니다. 접두사가없는 경우 링크는 시스템의 다른 파일을 참조 할 수 있으므로 현재 문서의 외부에있을 수 있습니다.

그러나 현재 문서 내의 책갈피에 대한 링크 인 경우 주소 필드가 비어있는 경우가 하나 있습니다. 비어 있으면 SubAddress 속성이 링크에서 참조되는 책갈피의 이름으로 설정됩니다. 물론 링크가 다른 문서의 특정 책갈피에 대한 것이라면 Address 및 SubAddress 속성이 모두 설정됩니다.

각 Hyperlink 개체와 함께 저장된 정보에 대한 아이디어를 얻으려면 다음의 짧은 매크로를 살펴보십시오. 각 링크를 단계별로 진행하고 각각에 대한 정보를 표시합니다.

Sub LinkInfo()

Dim h As Hyperlink     Dim sTemp As String

For Each h In ActiveDocument.Hyperlinks         sTemp = h.TextToDisplay & vbCrLf         sTemp = sTemp & h.Address & vbCrLf         sTemp = sTemp & h.SubAddress         MsgBox sTemp     Next h End Sub

따라서 문서 내의 내부 링크 (즉, 현재 문서 내의 책갈피에 대한 링크) 수를 확인하는 가장 쉬운 방법은 각 Hyperlink 개체의 Address 속성을 검사하는 것입니다.

속성이 비어 있으면 링크가 내부 링크라고 가정 할 수 있습니다.

Sub InternalLinks1()

Dim h As Hyperlink     Dim lInternal As Long

lInternal = 0     If ActiveDocument.Hyperlinks.Count > 0 Then         For Each h In ActiveDocument.Hyperlinks             If h.Address = "" Then lInternal = lInternal + 1         Next hp     End If     MsgBox lInternal & " hyperlinks are internal" _       & " out of a total of " & ActiveDocument.Hyperlinks.Count End Sub

내부 링크에 대한 실제 대상 목록을 모으고 싶다면 For Each 루프 내에서 각 SubAddress 속성을 찾아 끝에 표시 한 항목에 추가하는 것이 매크로에 쉽게 추가 될 수 있습니다. 매크로.

물론 하이퍼 링크가 문서 본문에만 표시되는 것은 아닙니다. 머리글, 바닥 글, 미주 및 텍스트 상자와 같은 다른 문서 요소에 하이퍼 링크가있을 수도 있습니다. 다음 매크로 변형은 문서의 이러한 영역 (StoryRanges)에서 찾은 모든 링크를 계산합니다.

Sub InternalLinks2()

Dim h As Hyperlink     Dim lInternal As Long     Dim lTotal As Long     Dim aStory As Range

lTotal = 0     lInternal = 0     For Each aStory In ActiveDocument.StoryRanges         lTotal = lTotal + aStory.Hyperlinks.Count         If aStory.Hyperlinks.Count > 0 Then             For Each h In aStory.Hyperlinks                 If h.Address = "" Then lInternal = lInternal + 1             Next h         End If     Next aStory     MsgBox lInternal & " hyperlinks are internal" _       & " out of a total of " & lTotal End Sub

_ 참고 : _

이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

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

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