Из существующей книги копирую лист в новую книгу. Убираю часть формул оставляя только формулы внутри книги. Делаю все это макросом. В результате получаю новую книгу. Но вот в чем проблема. Обратил внимание что в новой книге осталась связь с предыдущей. Если я сохраняю новую книгу, закрываю обе, затем открываю сохраненную новую книгу, то вижу свзяь со старой книгой и могу ее разорвать без проблем. Проблема в том, что эту связь я не могу разорвать в момент работы макроса, когда обе книги открыты.
IfNotIsEmpty(exist_links) Then For i = LBound(exist_links) ToUBound(exist_links) ' MsgBox exist_links(i)
ActiveWorkbook.BreakLink Name:=exist_links(i), Type:=xlLinkTypeExcelLinks Next Else
MsgBox "Связей не найдено" EndIf
Все отрабатывает без ошибок, но связь не разрывается
Делаю тоже самое вручную: 1. Копирую лист в новую книгу, пытаюсь через меню разорвать связь. Связь вижу, кнопка разорвать связь активна, но при нажатии связь не разрывается. 2. Удаляю на новом листе все данные и формулы. Связь все равно разорвать не получается!!!
В чем может быть проблема?
Мне нужно сохранить копию листа без связи с оновной книгой. При этом сделать это нужно МАКРОСОМ!
Модератор: Оформляйте коды тегами (кнопка #)
Из существующей книги копирую лист в новую книгу. Убираю часть формул оставляя только формулы внутри книги. Делаю все это макросом. В результате получаю новую книгу. Но вот в чем проблема. Обратил внимание что в новой книге осталась связь с предыдущей. Если я сохраняю новую книгу, закрываю обе, затем открываю сохраненную новую книгу, то вижу свзяь со старой книгой и могу ее разорвать без проблем. Проблема в том, что эту связь я не могу разорвать в момент работы макроса, когда обе книги открыты.
IfNotIsEmpty(exist_links) Then For i = LBound(exist_links) ToUBound(exist_links) ' MsgBox exist_links(i)
ActiveWorkbook.BreakLink Name:=exist_links(i), Type:=xlLinkTypeExcelLinks Next Else
MsgBox "Связей не найдено" EndIf
Все отрабатывает без ошибок, но связь не разрывается
Делаю тоже самое вручную: 1. Копирую лист в новую книгу, пытаюсь через меню разорвать связь. Связь вижу, кнопка разорвать связь активна, но при нажатии связь не разрывается. 2. Удаляю на новом листе все данные и формулы. Связь все равно разорвать не получается!!!
В чем может быть проблема?
Мне нужно сохранить копию листа без связи с оновной книгой. При этом сделать это нужно МАКРОСОМ! [moder]Оформляйте коды тегами (кнопка #)[/moder]Stork4ever
Сообщение отредактировал Stork4ever - Суббота, 17.01.2015, 18:32
Остаются только формулы подведения итогов, которые уже не имеют именованных диапазонов. Но связь с книгой не могу порвать, пока не сохраню и не закрою все книги. А закрывать каждый раз не удобно.
Собственно задача, что бы полученный отчет не имел связей с книгой из которой его сделали. Поскольку его будут смотреть на другом компьютере, где нет файла оригинала. Каждый раз закрывать/открывать и удалять связи после создания отчета - слишком неудобно. А тем кому высылаются отчеты мешает запрос восстановления связей.
Кстати. Если после генерации такого отчета на полученном листе вообще удалить все данные (т.е. нет ни данных, ни формул), то все равно связи удалить нельзя, пока не сохранишь и не закроешь файлы....
Еще раз уточним...
На листе оригинальной книги есть именованные диапазоны. После копирования листа в новую книгу, эти диапазоны копи/пастятся в виде значений типа:
Остаются только формулы подведения итогов, которые уже не имеют именованных диапазонов. Но связь с книгой не могу порвать, пока не сохраню и не закрою все книги. А закрывать каждый раз не удобно.
Собственно задача, что бы полученный отчет не имел связей с книгой из которой его сделали. Поскольку его будут смотреть на другом компьютере, где нет файла оригинала. Каждый раз закрывать/открывать и удалять связи после создания отчета - слишком неудобно. А тем кому высылаются отчеты мешает запрос восстановления связей.
Кстати. Если после генерации такого отчета на полученном листе вообще удалить все данные (т.е. нет ни данных, ни формул), то все равно связи удалить нельзя, пока не сохранишь и не закроешь файлы....Stork4ever
Сообщение отредактировал Stork4ever - Суббота, 17.01.2015, 18:31
Но связь с книгой не могу порвать, пока не сохраню и не закрою все книги.
Ну и что? Чем эта связь мешает?
xlPasteValues
вставляет значения. А то, что именованые диапазоны зацепились за старую книгу, при осутствии ссылок на них, никак ни на что не влияет. И пусть их болтаются до закрытия. Или
Но связь с книгой не могу порвать, пока не сохраню и не закрою все книги.
Ну и что? Чем эта связь мешает?
xlPasteValues
вставляет значения. А то, что именованые диапазоны зацепились за старую книгу, при осутствии ссылок на них, никак ни на что не влияет. И пусть их болтаются до закрытия. Или
Использовал такой макрос при создании новой книги из листов. Посмотрите может пригодится.
Sub Связи() 'разорвать все связи Dim WorkbookLinks AsVariant Dim Wb As Workbook Dim n AsVariant Dim i AsLong For Each n In ActiveWorkbook.Names: OnErrorResumeNext
n.Delete: Next
Set Wb = ActiveWorkbook
WorkbookLinks = Wb.LinkSources(Type:=xlLinkTypeExcelLinks) IfIsArray(WorkbookLinks) Then For i = LBound(WorkbookLinks) ToUBound(WorkbookLinks)
Wb.BreakLink _
Name:=WorkbookLinks(i), _
Type:=xlLinkTypeExcelLinks Next i Else EndIf EndSub
Использовал такой макрос при создании новой книги из листов. Посмотрите может пригодится.
Sub Связи() 'разорвать все связи Dim WorkbookLinks AsVariant Dim Wb As Workbook Dim n AsVariant Dim i AsLong For Each n In ActiveWorkbook.Names: OnErrorResumeNext
n.Delete: Next
Set Wb = ActiveWorkbook
WorkbookLinks = Wb.LinkSources(Type:=xlLinkTypeExcelLinks) IfIsArray(WorkbookLinks) Then For i = LBound(WorkbookLinks) ToUBound(WorkbookLinks)
Wb.BreakLink _
Name:=WorkbookLinks(i), _
Type:=xlLinkTypeExcelLinks Next i Else EndIf EndSub