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