PDA

View Full Version : Get footnote reference



glencoe
04-06-2015, 05:39 AM
Hi everyone,

I am struggling to find a "simple information" on a footnote.
I need to get the reference character that is used for a given footnote. Say a Word doc has many footnotes/endnotes, I already have a macro that plays in them, but for every note, the macro has to display the original reference (in a msgbox for now), so say 1, 2, 3, 4, or a, b, c, or whatever symbol is used to call the footnote.
I found this thread http://www.vbaexpress.com/forum/showthread.php?31231-Activedocument-Footnotes-Reference-Text which gives interesting information, but I couldn't extract exactly what I need.

Using the code given by macropod in this thread, I found that this code would copy the reference mark next to the original one, and then nRef would give me the symbol that was used... But I don't actually want/need to copy the reference, I just want to know what it is! aFN.Index won't give me this information... and I can't find an equivalent "GetCrossReference" function that seems to work (not sure how to play with GetCrossReferenceItems, if that's the one)...
Please advise!



For Each aFN In ActiveDocument.Footnotes
Dim nRef As String
With aFN
With .Reference.Characters.First
.Collapse
.InsertCrossReference wdRefTypeFootnote, wdFootnoteNumberFormatted, aFN.Index
nRef = .Characters.First.Fields(1).Result 'this does give me the information I need, but not without using the line above
MsgBox nRef
End With
End With
Next aFN


Thanks for helping me...

Glencoe

glencoe
04-07-2015, 04:10 AM
Based on initial macropod's idea from the other thread I referenced in my first post, I found a trick that works. Ok, it may not be ideal, but it does work, and that's all I am asking!



Dim aFN As Footnote
Dim nRef As String

For Each aFN In ActiveDocument.Footnotes
With aFN
With .Reference.Characters.First
.Collapse
.InsertCrossReference wdRefTypeFootnote, wdFootnoteNumberFormatted, aFN.Index
nRef = .Characters.First.Fields(1).Result
.Characters.Last.Fields(1).Delete
MsgBox nRef
End With
End With
Next aFN

If anyone has a better and cleaner idea than inserting and deleting the reference next to the original one, I'd like to hear it, but it seems that this same request is not quite knew and has already hit many walls (I just found while googling similar key terms that many people have asked the same question over the past 10 years, without finding any real solution)...


Now, even though he hasn't participated to this thread yet, I'd like to thank macropod for leading me to a working solution! The "insert" method he offered in the other post was a clever way to bypass the issue... :)