2017-09-22 12 views
0

IncludePicture 필드를 통해 추가 된 이미지에 하이퍼 링크를 추가하려고합니다. 그것에링크 된 이미지에 하이퍼 링크 추가

{ IncludePicture "C:\\Test\\Image 1.png" \d } 

그리고, 그것은 추가해야 하이퍼 링크 :

예를 들어

, 이것은 이미지입니다 그 후

C:\\Test\\Image 1.png 

, 나는 마우스로 문서 내 이미지를 클릭 할 수 있습니다 , 파일 관리자에서 열립니다.

다음은 코드입니다. 어떤 이유로 든 제대로 작동하지 않습니다. 어떻게 수정해야합니까?

Sub AddHyperlinksToImages() 
    On Error Resume Next 
    Application.ScreenUpdating = False 
    Dim iShp As InlineShape 
    For Each iShp In ActiveDocument.InlineShapes 
     iShp.Hyperlink.Address = iShp.LinkFormat.SourceFullName 'Doesn't work 

     'Just for testing 
     'fullPath = iShp.LinkFormat.SourceFullName 
     'MsgBox fullPath 
    Next 
    Application.ScreenUpdating = True 
End Sub 

답변

1

이 코드를 사용해보십시오.

Sub AddHyperlinksToImages() 
    ' 22 Sep 2017 

    Dim Fld As Field 
    Dim FilePath As String 
    Dim Tmp As String 
    Dim i As Integer 

    Application.ScreenUpdating = False 
    ActiveDocument.Fields.Update 
    For Each Fld In ActiveDocument.Fields 
     With Fld 
      If InStr(1, Trim(.Code), "includepicture", vbTextCompare) = 1 Then 
       If .InlineShape.Hyperlink Is Nothing Then 
        i = InStr(.Code, Chr(34)) 
        If i Then 
         FilePath = Replace(Mid(.Code, i + 1), "\\", "\") 
         i = InStr(FilePath, "\*") 
         If i Then FilePath = Left(FilePath, i - 1) 
         Do While Len(FilePath) > 1 
          i = Asc(Right(FilePath, 1)) 
          FilePath = Left(FilePath, Len(FilePath) - 1) 
          If i = 34 Then Exit Do 
         Loop 
         If i > 1 Then ActiveDocument.Hyperlinks.Add .InlineShape, FilePath 
        End If 
       End If 
      End If 
     End With 
    Next Fld 
    Application.ScreenUpdating = True 
End Sub 
+0

감사합니다. 부분적으로 작동합니다. 현재 나는 그것을 다소 수정하려고 노력하고있다. 몇 가지 문제가 있습니다. 1) 문서를 열고 매크로를 시작하면 오류가 발생합니다. 이 오류를 방지하려면 이미지를 업데이트해야합니다. 즉, 먼저 문서를 열고 Ctrl-A를 누른 다음 F9를 누른 다음 매크로를 실행하십시오. 이렇게하면 스크립트가 오류없이 실행됩니다. 2) 하이퍼 링크는 약간 깨졌습니다. 2.1) 경로에 공백이 있으면 일부 글자가 잘 리기 때문입니다. 2.2) 어떤 이유로 경로의 \\이 \\\\가됩니다. [여기에 이미지가 있습니다.] (https://i.imgur.com/aLVllJy.png). – james

+0

필자가 알고 있듯이, 공백 문제는'FilePath = Split (Trim (Replace .Code, ","% 20 "))) (1)'을 사용하여 수정할 수 있습니다. 그러나 그것은 효과가 없습니다. 'FilePath = Split (Trim (Replace, .Code, "img", "img % 20")) (1)'과 같은 것이 잘 동작하기 때문에 좀 이상합니다. – james

+0

하나. 코드를 추가하여 필드를 업데이트 할 수 있습니다. 나는 이것이'ActiveDocument.Fields.Update'와 같은 것으로서 절차의 시작 부분에 추가 될 것이라고 생각합니다. – Variatus