Бет задается вопросом, есть ли способ определить, существуют ли другие книги, зависящие от книги, которую она открыла. Она знает, как находить прецедентные ссылки на свою открытую рабочую тетрадь, но не зависимые.

Бет перешла на новую работу, и она не хочет рисковать, редактируя книгу, не зная, на какие еще файлы она может влиять.

Если у вас есть книга A и книга B, а книга B включает ссылку на книгу A, тогда книга B зависит от книги A, а рабочая книга A является прецедентом для книги B.

В книге B вы можете легко найти ссылки, используемые в книге; вы бы знали, что рабочая тетрадь A является прецедентом рабочей тетради B. Как сказала Бет, она знает, как найти эту информацию.

В книге A нет способа определить, что книга B имеет ссылку на книгу A и, следовательно, зависит от книги A. Таким образом, в книгу A можно внести изменения, которые могут непреднамеренно повлиять на книгу B. Например, вы может изменить именованный диапазон, переименовать лист или удалить информацию, которая, по вашему мнению, больше не нужна. Когда вы в следующий раз откроете книгу B, вас ждет грубый сюрприз, потому что информация, от которой она зависела в книге A, больше не была доступна.

Некоторые изменения, внесенные в книгу A, могут не повлиять на книгу B. Например, вы должны иметь возможность добавлять рабочие листы, добавлять именованные диапазоны и, возможно, вставлять столбцы или строки. Во всех этих случаях Excel может естественным образом адаптироваться к изменениям, не затрагивая книгу 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), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (7797) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:

link: / excelribbon-Discovering_Dependent_Workbooks [Обнаружение зависимых рабочих книг].