Please Note: This article is written for users of the following Microsoft Excel versions: 2007 and 2010. If you are using an earlier version (Excel 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Excel, click here: Discovering Dependent Workbooks.

Discovering Dependent Workbooks

by Allen Wyatt
(last updated January 27, 2016)

5

Beth wonders if there is a way that she can determine if there are other workbooks dependent on the workbook she has open. She know how to find the precedent links to her open workbook but not the dependent ones. Beth is in a new job and she doesn't want to risk editing a workbook without knowing what other files she may be impacting.

If you have workbook A and workbook B, and workbook B includes a link to workbook A, then workbook B is dependent on workbook A and workbook A is a precedent to workbook B.

In workbook B you can easily find out the links used in the workbook; you would know that workbook A is a precedent to workbook B. As Beth said, she knows how to find out this information.

In workbook A there is no way to determine that workbook B has a link to workbook A and is therefore dependent on workbook A. Thus, it is possible to make changes to workbook A that can, inadvertently, affect workbook B. For instance, you could change a named range or rename a worksheet or delete information you think is no longer needed. When you next open up workbook B, you would be in for a rude surprise because the information that it depended on in workbook A was no longer available.

Some changes you make in workbook A may not affect workbook B. For instance, you should be able to add worksheets, add named ranges, and possibly insert columns or rows. In all these cases Excel may adjust naturally to the changes without affecting workbook B. Problem is, you won't know if there's been a negative effect until you later open workbook B. And you wouldn't even know to open workbook B unless you knew beforehand that there was a relationship between the two workbooks.

One way around the problem is to open all the workbooks you can think of, at the same time, and then use the auditing tools in Excel to check for dependencies. This can work nicely if you have a very limited number of workbooks on your system. It doesn't work that great if you have a lot of workbooks or if the workbooks are on a network.

If you have your workbooks in a set location on your local system (all in a single folder), then you might try using a macro to determine the dependencies. The following steps through all the Excel workbooks in a given directory and identifies workbooks linked to your currently open workbook by formulas.

Sub DiscoverDependentFiles()
    Dim i As Integer
    Dim iFile As String
    Dim fLink As Variant
    Dim sLink As String
    Dim myFldr As String
    Dim curFile As String

    'Change the string here to look
    'for a different link / file name
    sLink = "[FileA.xlsm]"
    curFile = ThisWorkbook.Name
    'Change the string here to look
    'in a different folder
    myFldr = "C:\Users\User\mySub\"

    'Look for both xlsx and xlsm extensions
    iFile = Dir(myFldr & "*.xls?", vbNormal)
    i = 1
    'Loop through all of the files in the folder
    Do While iFile <> ""
        If iFile <> curFile Then
            Workbooks.Open Filename:=myFldr & iFile
            Set fLink = Cells.Find(What:=sLink, _
              After:=ActiveCell, LookIn:=xlFormulas, _
              LookAt:=xlPart, SearchOrder:=xlByRows, _
              SearchDirection:=xlNext, MatchCase:= _
              False, SearchFormat:=False)
            If UCase(TypeName(fLink)) <> UCase("Nothing") Then
                Windows(curFile).Activate
                'Record names of dependent files
                'in your open workbook
                Worksheets(1).Range("D" & (i)).Value = _
                  ActiveWorkbook.Name
                i = i + 1
            End If
            Workbooks(iFile).Close False
        End If
        iFile = Dir
    Loop
End Sub

This approach should work fine in simple situations. In some cases, however, such a macro could provide only a partial solution, because links can be hidden in numerous places—in Excel names, text boxes, charts, and other objects. There is always a chance that something can be left unchecked. The upshot of this is that because your changes could affect other workbooks that are dependent on the one you are changing, you may want to make a backup of the workbook file before making changes.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (7799) applies to Microsoft Excel 2007 and 2010. You can find a version of this tip for the older menu interface of Excel here: Discovering Dependent Workbooks.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He  is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Getting Rid of Fields Inserted by Third-Party Programs

Third-party programs can be used to affect a document and change what is contained therein. Of course, getting rid of what ...

Discover More

Intelligently Starting a New Paragraph

When using styles in a document, you can increase your productivity by letting Word know what paragraph style you expect to ...

Discover More

Nudging a Graphic

Want to get a graphic to just the right position on a worksheet? Sometimes the easiest way is to use the arrow keys on the ...

Discover More

Solve Real Business Problems Master business modeling and analysis techniques with Excel and transform data into bottom-line results. This hands-on, scenario-focused guide shows you how to use the latest Excel tools to integrate data from multiple tables. Check out Microsoft Excel 2013 Data Analysis and Business Modeling today!

More ExcelTips (ribbon)

Reducing File Size

As you work with a workbook (particularly one that contains macros) you may notice that the workbook size can become quite ...

Discover More

Turning Off Sharing

All good things must come to an end at some point. When you are done sharing your workbook with others, this is how you can ...

Discover More

Problems with Default Workbook and Worksheet Templates

You can create a default template for both your workbooks and worksheets. These should be placed in the XLSTART folder, but ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] in your comment text. You’ll be prompted to upload your image when you submit the comment. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is eight minus 8?

2016-08-05 07:46:49

Alan Cannon

Another "link" the macro won't find is a link within a macro of any kind that opens another workbook either for input or output.


2016-01-27 14:38:20

Alec Whatmough

Using the benefit of hindsight... When you start linking files, it is a really good idea to build and maintain a map.
This is also a good practice for Word documents to track references (as well as links) to other documents.


2016-01-27 11:08:10

Daniel Johnson

Why doesn't Microsoft grab a brain and build in the ability to see or identify dependant workbooks? Should have been a no brainer for those geniuses.


2014-05-26 22:17:18

Colin

I've tested this code, with some modifications, but with limited success, with the outcome very much dependent on the nature of the files in the target folder.
For example, the code falls over if the workbook being tested for dependency:
1) is protected and requires a password to open it
2) has a Workbook_Open event (or Auto_Open macro) that requires some input from the user
3) has links to other workbooks.

What additional code is required to handle these situations (e.g. if encountered, alert user via Msgbox then bypass protected files)?


2014-05-26 11:10:04

Colin

What's the point of the following 'static' code line?
sLink = "[FileA.xlsm]"

Shouldn't this string (i.e. sLink ) refer to the name of ThisWorkbook with a statement such as:
sLink = "[" & curFile & "]"
Obviously, this line would have to be placed after:
curFile = ThisWorkbook.Name


This Site

Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.

Newest Tips
Subscribe

FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.