Ian has many, many documents that include links to other documents. (These are not hyperlinks; they are actual document links in Word.) He needs to break those links, and he knows that he can load the documents and break the links one by one. He wonders, though, if there is a macro available that could go through all the documents in a folder and automatically break all the links within those documents.
Manually, you can break links by following these steps:
Figure 1. The Links dialog box.
The steps are a bit different if you are using Word 2007:
As you can tell, this process is rather labor intensive, particularly if you have lots of documents and each document has multiple links. The labor-intensive nature of the process is why Ian was searching for a way to break the links under control of a macro.
In order to do this in a macro, the macro needs to open each document in the folder, break any links it finds, and then save the document. Figuring out how many documents are in a folder, opening them, and closing them is rather straightforward. If you want to break the links, the macro needs to look through each field in the document and break only those that use the LINK field. The following macro shows how this is done.
Sub RemoveLinks() Dim fleArray() As String Dim flCount As Long Dim k As Long Dim fle As String Dim fld As Field Dim currentFileName As String Dim docPath As String Dim bDirty As Boolean docPath = ActiveDocument.Path & "\" currentFileName = ActiveDocument.Name fle = Dir(docPath & "*doc*") flCount = -1 ReDim fleArray(0) Do While fle <> "" flCount = flCount + 1 ReDim Preserve fleArray(flCount) fleArray(flCount) = fle fle = Dir() Loop If MsgBox("There are " & flCount + 1 & " files to be processed." _ & vbCrLf & "Do you want to continue?", vbYesNo, "Break links") _ = vbNo Then Exit Sub For k = 0 To UBound(fleArray) fle = fleArray(k) Options.UpdateLinksAtOpen = False Documents.Open FileName:=docPath & fle Options.UpdateLinksAtOpen = True bDirty = False For Each fld In ActiveDocument.Fields If fld.Type = wdFieldLink Then ' Uncomment the following if link needs to be updated ' before the link is broken ' fld.LinkFormat.Update fld.LinkFormat.BreakLink bDirty = True End If Next fld If bDirty Then ActiveDocument.Save ' Only save if links broken If ActiveDocument.Name <> currentFileName Then ActiveDocument.Close Next k End Sub
Notice the For Each loop that looks at each field (fld) in the Fields collection. It checks to make sure that the field's Type property is equal to wdFieldLink, which means it is a LINK field. If so, the code uses the BreakLink method with the LinkFormat property for the field, effectively removing the link.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (2357) applies to Microsoft Word 2007, 2010, 2013, and 2016.
Do More in Less Time! Are you ready to harness the full power of Word 2013 to create professional documents? In this comprehensive guide you'll learn the skills and techniques for efficiently building the documents you need for your professional and your personal life. Check out Word 2013 In Depth today!
You may often need to create two versions of the same document, one with everything and the other with a subset of what ...
Discover MoreWord's Open dialog box provides many of the same file management functions as Windows Explorer does. One of the functions ...
Discover MoreWant to add one document to another document? You can do it by adding links, described in this tip.
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
2018-01-15 04:55:42
Chris
Hey,
is there a way to remove links from the headers?
Because your vba code seems to work only for the plain text.
Thank you!
Chris
2016-05-23 07:49:37
Jerry Zachmann
Hi Allen, When I open the "Edit Links to Files" dialog box there are a couple dozen links to what looks like a temp file. Each time I open the document the filename changes but the _Ref#### items stay the same. What are these and should I get rid of them?
2016-05-21 22:28:39
Ken Endacott
A minor correction. The macro will attempt to open non Word files that have 'doc' in their title. To fix:
replace the line
fle = Dir(docPath & "*doc*")
with
fle = Dir(docPath & "*.doc*")
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.
Visit the WordTips channel on YouTube
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2022 Sharon Parq Associates, Inc.
Comments