How to ensure that endnotes in Word-doc. also are clickable in doc. saved in PDF-format?

Discussion in 'Word' started by Soeren Lindholt, Nov 16, 2016.

  1. Soeren Lindholt

    Soeren Lindholt

    Joined:
    Nov 16, 2016
    Messages:
    2
    Likes Received:
    0
    Hi,
    How can "clickable" endnotes in Word-document (Office 2010 Home) also be clickable endnotes in PDF-document after one has saved a Word-doc. as a PDF-doc.?

    Clickable means here that when the cursor is placed on the left side of an endnote number, one can by a double-click jump to the end of the doc. where the endnote text is. In the same way, one can jump from the end of the doc. and back to the endnote number in the main text. In Word 2010, these endnotes are clickable automatically.

    I would be very grateful for help on this task. I do not wish to make - manually - "hyperlinks" for all my over 600 endnotes in my doc.

    Thank you in advance.

    Best regards,
    Soeren
    Soeren Lindholt
    Denmark
     
    Soeren Lindholt, Nov 16, 2016
    #1
    1. Advertisements

  2. Soeren Lindholt

    macropod

    Joined:
    Mar 2, 2012
    Messages:
    136
    Likes Received:
    9
    When a document is saved in PDF format, endnote & footnote references cease to act as hyperlinks. The following macro replicates the endnote & footnote references (which become hidden text) with bookmarked hyperlinks. The second macro (KillEndNoteFootNoteHyperLinks) reverses the process.

    Furthermore, Word's Note References always point to the reference in the body of the document, not to the endnote or footnote itself. The HyperlinkEndNotesFootNotes macro doesn't change that behaviour. To have the Note References hyperlink to the actual endnote or footnote you could use the third macro (HLnkNoteRefs). The fourth macro (KillHLnkNoteRefs) reverses that process.

    Sub HyperlinkEndNotesFootNotes()
    Dim SBar As Boolean ' Status Bar flag
    Dim TrkStatus As Boolean ' Track Changes flag
    Dim Rng1 As Range, Rng2 As Range, StrRef As String, i As Long
    ' Store current Status Bar status, then switch on
    SBar = Application.DisplayStatusBar
    Application.DisplayStatusBar = True
    ' Store current Track Changes status, then switch off
    With ActiveDocument
    TrkStatus = .TrackRevisions
    .TrackRevisions = False
    End With
    ' Turn Off Screen Updating
    Application.ScreenUpdating = False
    With ActiveDocument
    'Process all endnotes
    For i = 1 To .Endnotes.Count
    'Update the statusbar
    StatusBar = "Processing Endnote " & i
    'Define two ranges: one to the endnote reference the other to the endnote content
    Set Rng1 = .Endnotes(i).Reference
    Set Rng2 = .Endnotes(i).Range.Paragraphs.First.Range
    With Rng1
    'Format the endnote reference as hidden text
    .Font.Hidden = True
    'Insert a number before the endnote reference and bookmark it
    .Collapse wdCollapseStart
    'To get the actual reference text, we need to cross-reference it!
    .InsertCrossReference wdRefTypeEndnote, wdEndnoteNumber, i, False, False
    .End = .End + 1
    StrRef = .Fields(1).Result
    .Fields(1).Delete
    .Text = StrRef
    .Style = wdStyleEndnoteReference
    .Bookmarks.Add Name:="_ERef" & i, Range:=Rng1
    End With
    'Insert a number before the endnote content and bookmark it
    With Rng2
    'Format the endnote reference as hidden text
    With .Words.First
    If .Characters.Last Like "[ " & vbTab & "]" Then .End = .End - 1
    .Font.Hidden = True
    End With
    'Insert a number before the endnote reference and bookmark it
    .Collapse wdCollapseStart
    .Text = StrRef
    .Style = " Endnote Reference"
    .Bookmarks.Add Name:="_ENum" & i, Range:=Rng2
    End With
    'Insert hyperlinks between the endnote references
    .Hyperlinks.Add Anchor:=Rng1, SubAddress:="_ENum" & i
    .Hyperlinks.Add Anchor:=Rng2, SubAddress:="_ERef" & i
    'Restore the Rng1 endnote reference bookmark
    .Bookmarks.Add Name:="_ERef" & i, Range:=Rng1
    Next
    'Give Word a chance to do its housekeeping
    DoEvents
    'Process all footnotes
    For i = 1 To .Footnotes.Count
    'Update the statusbar
    StatusBar = "Processing Footnote " & i
    'Define two ranges: one to the footnote reference the other to the footnote content
    Set Rng1 = .Footnotes(i).Reference
    Set Rng2 = .Footnotes(i).Range.Paragraphs.First.Range
    With Rng1
    'Format the footnote reference as hidden text
    .Font.Hidden = True
    'Insert a number before the footnote reference and bookmark it
    .Collapse wdCollapseStart
    'To get the actual reference text, we need to cross-reference it!
    .InsertCrossReference wdRefTypeFootnote, wdFootnoteNumber, i, False, False
    .End = .End + 1
    StrRef = .Fields(1).Result
    .Fields(1).Delete
    .Text = StrRef
    .Text = i
    .Style = wdStyleFootnoteReference
    .Bookmarks.Add Name:="_FRef" & i, Range:=Rng1
    End With
    'Insert a number before the footnote content and bookmark it
    With Rng2
    'Format the footnote reference as hidden text
    With .Words.First
    If .Characters.Last Like "[ " & vbTab & "]" Then .End = .End - 1
    .Font.Hidden = True
    End With
    'Insert a number before the footnote reference and bookmark it
    .Collapse wdCollapseStart
    .Text = StrRef
    .Style = " Footnote Reference"
    .Bookmarks.Add Name:="_FNum" & i, Range:=Rng2
    End With
    'Insert hyperlinks between the footnote references
    .Hyperlinks.Add Anchor:=Rng1, SubAddress:="_FNum" & i
    .Hyperlinks.Add Anchor:=Rng2, SubAddress:="_FRef" & i
    'Restore the Rng1 footnote reference bookmark
    .Bookmarks.Add Name:="_FRef" & i, Range:=Rng1
    Next
    'Update the statusbar
    StatusBar = "Finished Processing " & .Endnotes.Count & " Endnotes" & .Footnotes.Count & " Footnotes"
    End With
    Set Rng1 = Nothing: Set Rng2 = Nothing
    ' Restore original Status Bar status
    Application.DisplayStatusBar = SBar
    ' Restore original Track Changes status
    ActiveDocument.TrackRevisions = TrkStatus
    ' Restore Screen Updating
    Application.ScreenUpdating = True
    End Sub

    Sub KillEndNoteFootNoteHyperLinks()
    Dim SBar As Boolean ' Status Bar flag
    Dim TrkStatus As Boolean ' Track Changes flag
    Dim Rng1 As Range, Rng2 As Range, i As Long
    ' Store current Status Bar status, then switch on
    SBar = Application.DisplayStatusBar
    Application.DisplayStatusBar = True
    ' Store current Track Changes status, then switch off
    With ActiveDocument
    TrkStatus = .TrackRevisions
    .TrackRevisions = False
    End With
    ' Turn Off Screen Updating
    Application.ScreenUpdating = False
    With ActiveDocument
    'Delete endnote/footnote hyperlinks from the MainStory
    For i = .Hyperlinks.Count To 1 Step -1
    With .Hyperlinks(i)
    StatusBar = "Processing Hyperlink " & i
    If .SubAddress Like "_ENum*" Then
    .Range.Delete
    ElseIf .SubAddress Like "_FNum*" Then
    .Range.Delete
    End If
    End With
    Next i
    'Delete endnote hyperlinks from the EndnotesStory
    If .Endnotes.Count > 0 Then
    With .StoryRanges(wdEndnotesStory)
    For i = .Hyperlinks.Count To 1 Step -1
    StatusBar = "Processing Endnote Hyperlink " & i
    With .Hyperlinks(i)
    If .SubAddress Like "_ERef*" Then .Range.Delete
    End With
    Next i
    End With
    End If
    'Delete footnote hyperlinks from the FootnotesStory
    If .Footnotes.Count > 0 Then
    With .StoryRanges(wdFootnotesStory)
    For i = .Hyperlinks.Count To 1 Step -1
    StatusBar = "Processing Footnote Hyperlink " & i
    With .Hyperlinks(i)
    If .SubAddress Like "_FRef*" Then .Range.Delete
    End With
    Next i
    End With
    End If
    'Process all endnotes
    For i = 1 To .Endnotes.Count
    'Update the statusbar
    StatusBar = "Processing Endnote " & i
    'Define two ranges: one to the endnote reference the other to the endnote content
    Set Rng1 = .Endnotes(i).Reference
    Set Rng2 = .Endnotes(i).Range.Paragraphs.First.Range
    'Format the endnote reference as visible text
    Rng1.Font.Hidden = False
    Rng2.Words.First.Font.Hidden = False
    Next
    'Process all footnotes
    For i = 1 To .Footnotes.Count
    'Update the statusbar
    StatusBar = "Processing Footnote " & i
    'Define two ranges: one to the footnote reference the other to the footnote content
    Set Rng1 = .Footnotes(i).Reference
    Set Rng2 = .Footnotes(i).Range.Paragraphs.First.Range
    'Format the footnote reference as visible text
    Rng1.Font.Hidden = False
    Rng2.Words.First.Font.Hidden = False
    Next
    'Update the statusbar
    StatusBar = "Finished Processing " & .Endnotes.Count & " Endnotes" & .Footnotes.Count & " Footnotes"
    End With
    Set Rng1 = Nothing: Set Rng2 = Nothing
    ' Restore original Status Bar status
    Application.DisplayStatusBar = SBar
    ' Restore original Track Changes status
    ActiveDocument.TrackRevisions = TrkStatus
    ' Restore Screen Updating
    Application.ScreenUpdating = True
    End Sub

    Sub HLnkNoteRefs()
    Dim Fld As Field, StrTgt As String, Rng As Range, StrRef As String
    ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
    For Each Fld In ActiveDocument.Fields
    With Fld
    If .Type = wdFieldNoteRef Then
    StrTgt = ActiveDocument.Bookmarks(Split(Trim(.Code), " ")(1)).Range.Characters.First.Hyperlinks(1).SubAddress
    StrRef = .Result
    Set Rng = .Code
    With Rng
    While .Fields.Count = 0
    .Start = .Start - 1
    Wend
    .Collapse wdCollapseStart
    .Hyperlinks.Add Anchor:=Rng, SubAddress:=StrTgt, TextToDisplay:=StrRef
    .End = .End + 1
    .Hyperlinks(1).Range.Font.Superscript = True
    End With
    .Result.Font.Hidden = True
    End If
    End With
    Next
    ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
    End Sub

    To make this process automatic, you could insert:
    Call HLnkNoteRefs
    after the final:
    End With
    in the HyperLinkEndNoteFootNotes macro.

    Sub KillHLnkNoteRefs()
    Dim Fld As Field
    For Each Fld In ActiveDocument.Fields
    With Fld
    If .Type = wdFieldNoteRef Then
    .Result.Font.Hidden = False
    End If
    End With
    Next
    End Sub

    To make this process automatic, you could insert:
    Call KillHLnkNoteRefs
    after the final:
    End With
    in the KillEndNoteFootNoteHyperLinks macro.

    For PC macro installation & usage instructions, see: http://www.gmayor.com/installing_macro.htm
    For Mac macro installation & usage instructions, see: http://word.mvps.org/Mac/InstallMacro.html
     
    macropod, Nov 16, 2016
    #2
    1. Advertisements

  3. Soeren Lindholt

    Soeren Lindholt

    Joined:
    Nov 16, 2016
    Messages:
    2
    Likes Received:
    0
    Thank you for the response.

    I am not an IT-expert. Therefore, I will discuss it with such one.

    Thanks again for your help.

    BR, Soeren
     
    Soeren Lindholt, Nov 17, 2016
    #3
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Wilbert
    Replies:
    0
    Views:
    810
    Wilbert
    Mar 20, 2013
  2. Totemm

    Word-> Excel -> PDF problem

    Totemm, Jun 7, 2013, in forum: Word
    Replies:
    0
    Views:
    603
    Totemm
    Jun 7, 2013
  3. rosscortb
    Replies:
    0
    Views:
    452
    rosscortb
    May 13, 2014
  4. PSundborg
    Replies:
    0
    Views:
    215
    PSundborg
    Mar 1, 2015
  5. hanabowt
    Replies:
    0
    Views:
    228
    hanabowt
    Apr 25, 2015
  6. aprengo
    Replies:
    5
    Views:
    215
    ParisaMoosavi
    Jan 6, 2016
  7. Wolfgirl22
    Replies:
    0
    Views:
    147
    Wolfgirl22
    Jan 27, 2016
  8. PeterClassics
    Replies:
    1
    Views:
    252
    ChrisJ
    Apr 13, 2016
Loading...