贝丝想知道是否有一种方法可以确定是否有其他工作簿取决于她打开的工作簿。她知道如何找到打开的工作簿的先例链接,但是找不到相关的链接。

贝丝(Beth)正在从事一项新工作,她不想冒着编辑工作簿而又不知道自己可能影响哪些其他文件的风险。

如果您有工作簿A和工作簿B,并且工作簿B包含到工作簿A的链接,则工作簿B依赖于工作簿A,而工作簿A是工作簿B的先例。

在工作簿B中,您可以轻松地找到工作簿中使用的链接。您会知道工作簿A是工作簿B的先例。正如Beth所说,她知道如何查找此信息。

在工作簿A中,无法确定工作簿B具有到工作簿A的链接并因此依赖于工作簿A。因此,可以对工作簿A进行可能无意影响工作簿B的更改。例如,您可能会更改命名范围或重命名工作表或删除您认为不再需要的信息。下次打开工作簿B时,您会大吃一惊,因为工作簿A中依赖的信息不再可用。

您在工作簿A中进行的某些更改可能不会影响工作簿B。例如,您应该能够添加工作表,添加命名范围以及可能插入列或行。在所有这些情况下,Excel都可以自然地适应所做的更改而不会影响工作簿B。问题是,您直到以后打开工作簿B时才知道是否有负面影响。而且,除非您不打开工作簿B,否则您甚至都不知道。事先知道两个工作簿之间存在关联。

解决该问题的一种方法是同时打开您可以想到的所有工作簿,然后使用Excel中的审核工具检查相关性。如果系统上的工作簿数量非常有限,则可以很好地工作。如果您有很多工作簿,或者工作簿在网络上,那将无法正常工作。

如果您的工作簿位于本地系统上的固定位置(全部位于单个文件夹中),则可以尝试使用宏来确定依赖关系。下面的步骤逐步遍历给定目录中的所有Excel工作簿,并通过公式标识链接到当前打开的工作簿的工作簿。

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.xls]"

curFile = ThisWorkbook.Name     'Change the string here to look     'in a different folder     myFldr = "C:\Users\User\mySub\"



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

这种方法在简单情况下应该可以正常工作。但是,在某些情况下,这样的宏只能提供部分解决方案,因为链接可以隐藏在许多地方,例如Excel名称,文本框,图表和其他对象。总是有可能使某些东西未经检查。这样做的结果是,由于您的更改可能会影响依赖于您要更改的其他工作簿,因此您可能需要在进行更改之前对工作簿文件进行备份。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(7797)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本:

链接:/ excelribbon-Discovering_Dependent_Workbooks [发现相关工作簿]。