Introduction | Example | Tutorial | Applications
Introduction - Word Hyperlinks
This tutorial will show you how to quickly add hyperlinks to the references in your Word document using a VBA macro. By simply placing your references in square brackets and running this macro, you’ll be able to quickly add and update direct links to your references.
If you want more great VBA tips, please subscribe to my email list.
Example - Word Hyperlinks
Sub HyperlinkReferences()
'---------------------------------------------------------------------------------------------------
'---Script: HyperlinkReferences---------------------------------------------------------------------
'---Created by: Ryan Wells (wellsr.com)-------------------------------------------------------------
'---Date: 05/2016-----------------------------------------------------------------------------------
'---Description: THIS SUBMODULE ADDS HYPERLINKS TO REFERENCES CONTAINED IN SQUARE ------------------
'----------------BRACKETS ( ex: [2.1] or [1] ). ----------------------------------------------------------
'---------------------------------------------------------------------------------------------------
'---Instructions:-----------------------------------------------------------------------------------
'-----BLOCK 0---------------------------------------------------------------------------------------
'------1) Change the variable ReferenceSection to whatever your reference section is in your--------
'------ document. Set it equal to "" if you refer to your references like [9] instead of [2.9]----
'-----BLOCK 1---------------------------------------------------------------------------------------
'------2) Add the reference hyperlinks to BLOCK 1.--------------------------------------------------
'------3) Change the *max* in dim ref(1 to *max*) to the number of references in your design calc.--
'------4) If you don't have a link to a reference, set that reference equal to "".------------------
'-----BLOCK 2---------------------------------------------------------------------------------------
'---------Changes to BLOCK 2 should not be required.------------------------------------------------
'---------------------------------------------------------------------------------------------------
Application.ScreenUpdating = False
Dim ReferenceSection As String
Dim rng As Range
'***************************************
'************* BLOCK 0 *************
'***************************************
ReferenceSection = ""
'***************************************
'************* BLOCK 1 *************
'***************************************
Dim ref(1 To 3) As String
ref(1) = ""
ref(2) = "https://inis.iaea.org/search/searchsinglerecord.aspx?recordsFor=SingleRecord&RN=39099974"
ref(3) = "http://rpd.oxfordjournals.org/content/74/3/163"
'***************************************
'************* BLOCK 2 *************
'***************************************
For i = 1 To UBound(ref) 'i = 1 to number of references
Selection.HomeKey wdStory
Selection.Find.ClearFormatting
With Selection.Find
If ReferenceSection <> "" Then
.Text = "[" & ReferenceSection & "." & i & "]"
Else
.Text = "[" & i & "]"
End If
'.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
End With
While Selection.Find.Execute
If Selection.Hyperlinks.Count > 0 Then
Selection.Hyperlinks(1).Delete
End If
If ref(i) <> "" Then
Set rng = Selection.Range
rng.SetRange Start:=rng.Start + 1, End:=rng.End - 1
Selection.Hyperlinks.Add Anchor:=rng, _
TextToDisplay:=Mid(Selection.Range.Text, 2, Len(Selection.Range.Text) - 2), _
Address:=ref(i)
End If
Wend
Next i
Application.ScreenUpdating = True
End Sub
Make powerful macros with our free VBA Developer Kit Tutorials like this can be complicated. That’s why we created our free VBA Developer Kit and our Big Book of Excel VBA Macros to supplement this tutorial. Grab them below and you’ll be writing powerful macros in no time.
Tutorial - Word Hyperlinks
Here’s an excerpt from a report created with Word:
Word Report Excerpt
The document points to the following references:
Word Report References
Let’s say we have electronic copies of these documents stored on a network drive or available online. Wouldn’t it be great to add hyperlinks to these references so you or the reader of your report can automatically open them? That’s exactly what our macro does.
Directions for how to setup and use the Word VBA macro are included in the comments near the top of our macro example. The important part is that your references must be referred to inside of square brackets.
In our example, we had 3 references so we declared our array variable Dim ref(1 To 3) As String
.
Because we did not have a link to Reference 1, we set that reference,
After setting up our macro and running it, links to all the available references now show up in the report:
Word Report with Hyperlinks
Notice the variable
Application Ideas
I know this seems like something you can do by hand when you only have a few references, but imagine you have a 50 page report with dozens (or even hundreds) of references. You don’t want to add hyperlinks to those references by hand! This Word macro makes adding or modifying references a breeze.
There’s no doubt that you, your boss, and your audience will thank you for giving them direct hyperlinks to your source references!
That’s all for this tutorial. When you’re ready to take your VBA to the next level, subscribe using the form below.