Replacing Links with Values
John has a large number of workbooks that have links in them and they are getting very large. He wonders if there is any way for Excel to convert the links to the data grabbed from those links so he can archive the old workbooks.
One thing to try is to open the workbooks that contain the links and then use Excel's tools to break the links. Make sure you keep a backup of your workbook (in case you mess things up) and follow these steps if you are using Excel 2007:
1. Click the Office button, then click Prepare | Edit Links to Files. Excel displays the Edit Links dialog box.
2. Select the links in the dialog box.
3. Click Break Links and acknowledge that you really want to break the selected links.
4. Click OK.
In an older version of Excel you should follow these steps:
1. Open the workbook you want to affect.
2. Choose the Links option from the Edit menu. Excel displays the Links dialog box.
3. Select the links in the dialog box.
4. Click Break Links and acknowledge that you really want to break the selected links.
5. Click OK.
The result is that all the links are done away with, but the values last retrieved through the links remain in the workbook.
Another approach is to use Paste Special to "overwrite" your links. (This works well if you have a limited number of links in a worksheet.) Follow these steps:
1. Select the cells that contain links.
2. Press Ctrl+C.
3. Display the Paste Special dialog box in Excel 2007 by starting at the Home tab of the ribbon, clicking the down-arrow under the Paste tool, and then choosing Paste Special. In older versions of Excel just choose Edit | Paste Special.
4. Click the Values radio button.
5. Click OK.
If you have quite a few links in your workbook, then you will want to use a macro to do the link breaking. The following is an example of a simple macro to do the breaking:
Sub BreakLinks()
Dim aLinksArray As Variant
aLinksArray = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
Do Until IsEmpty(aLinksArray)
ActiveWorkbook.BreakLink Name:=aLinksArray(1), _
Type:=xlLinkTypeExcelLinks
aLinksArray = _
ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
Loop
End Sub
It is important to remember, though, that links can be tricky. Links to other workbooks can be in formulas, names, charts, text boxes, and other objects, both visible and hidden, and in different combinations within formulas and those objects. Getting all the links and breaking them depends on the complexity of your workbook. If you have a complex workbook, then you may benefit by using the FindLink add-in created by Excel MVP Bill Manville. You can find it here:
https://www.bmsltd.co.uk/MVP/