Добрый день Давненько не был у вас. Руками выделяю листы, копирую на новую книгу, либо копирую в существующую открытую книгу - все великолепно: ссылки перерегистрируются к новой книге, однако код записанный макрорекордером не работает. (Гуглил, связано с чем-то там). Нужен код, который бы позволил быстро отвязать из формул ссылок на старую книгу-донора, и перерегистрировать формулы к новой книге. Например в приложенном файле Ячейка А1 Лист1 легко "отвязывается" от файла "8784". Нижеприведенный код работает, но если в книге немного таких ячеек, массивов (содержащих формулы" то отлично работает, однако жизнь)) сурова и ячеек не счесть... Прошу помощи Вашей. Совета прошу. Думаю в сторону сокращения просматриваемых массивов путем ограничения зон просмотра для каждого листа (Названия листов стабильно и неизменно), чтобы не рыл ячейки в которых нет формул со ссылками на старую книгу. Возможно
[vba]
Код
Sub Копируем_Без_Связей() Set currentBook = ThisWorkbook sheetsToCopy = Array("Лист1", "Лист2") Set newBook = Workbooks.Add For Each sheetName In sheetsToCopy currentBook.Sheets(sheetName).Copy After:=newBook.Sheets(newBook.Sheets.Count) Next sheetName filePath = currentBook.Path & "\Новый файл Эксель.xlsb" newBook.SaveAs Filename:=filePath, FileFormat:=xlExcel12 originalFileName = currentBook.Name For Each ws In newBook.Worksheets ws.Cells.Replace What:="[" & originalFileName & "]", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Next ws newBook.Save End Sub
[/vba]
Добрый день Давненько не был у вас. Руками выделяю листы, копирую на новую книгу, либо копирую в существующую открытую книгу - все великолепно: ссылки перерегистрируются к новой книге, однако код записанный макрорекордером не работает. (Гуглил, связано с чем-то там). Нужен код, который бы позволил быстро отвязать из формул ссылок на старую книгу-донора, и перерегистрировать формулы к новой книге. Например в приложенном файле Ячейка А1 Лист1 легко "отвязывается" от файла "8784". Нижеприведенный код работает, но если в книге немного таких ячеек, массивов (содержащих формулы" то отлично работает, однако жизнь)) сурова и ячеек не счесть... Прошу помощи Вашей. Совета прошу. Думаю в сторону сокращения просматриваемых массивов путем ограничения зон просмотра для каждого листа (Названия листов стабильно и неизменно), чтобы не рыл ячейки в которых нет формул со ссылками на старую книгу. Возможно
[vba]
Код
Sub Копируем_Без_Связей() Set currentBook = ThisWorkbook sheetsToCopy = Array("Лист1", "Лист2") Set newBook = Workbooks.Add For Each sheetName In sheetsToCopy currentBook.Sheets(sheetName).Copy After:=newBook.Sheets(newBook.Sheets.Count) Next sheetName filePath = currentBook.Path & "\Новый файл Эксель.xlsb" newBook.SaveAs Filename:=filePath, FileFormat:=xlExcel12 originalFileName = currentBook.Name For Each ws In newBook.Worksheets ws.Cells.Replace What:="[" & originalFileName & "]", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Next ws newBook.Save End Sub