Ни как не разрывается связь... Выложенный макрос в первом посте от сюда ссылка не сработал. Куча других макросов из инета так же не подействовали...
Приложил непобедимый файл со связями.
Есть идеи что в нем не так? В идеале бы получить работающее решение на этом примере... Ручное копирование не предлагать... Листов в книге по факту от 30 до 50. Надо их разом окучивать от подобного мусора.
Если удастся разорвать связи, скажите где эта дрянь сидит, конкретно в этом файле? =))) Как вы ее смогли найти? =)) Что я только не перепробовал, я не вижу ни одной связи на листе =))
ПыСы: "Ты видишь суслика? Нет? Я тоже нет... А он есть!" =))
Ни как не разрывается связь... Выложенный макрос в первом посте от сюда ссылка не сработал. Куча других макросов из инета так же не подействовали...
Приложил непобедимый файл со связями.
Есть идеи что в нем не так? В идеале бы получить работающее решение на этом примере... Ручное копирование не предлагать... Листов в книге по факту от 30 до 50. Надо их разом окучивать от подобного мусора.
Если удастся разорвать связи, скажите где эта дрянь сидит, конкретно в этом файле? =))) Как вы ее смогли найти? =)) Что я только не перепробовал, я не вижу ни одной связи на листе =))
ПыСы: "Ты видишь суслика? Нет? Я тоже нет... А он есть!" =))Timber_Wolf
В файле войдите в Условное форматирование _ Управление правилами - выберите "Этот лист" и вручную удалите каждое правило (просто встаньте на первое и много раз нажмите на Делит). Затем вкладка Данные - Изменить связи - выделите связь - Разорвать - ОК.
Не совсем понял почему, но если УФ удалять Главная - УФ - Удалить правила - Со всего листа, то такой метод не срабатывает. Возможно, таким образом не совсем корректно обрабатываются УФы с ошибками.
В файле войдите в Условное форматирование _ Управление правилами - выберите "Этот лист" и вручную удалите каждое правило (просто встаньте на первое и много раз нажмите на Делит). Затем вкладка Данные - Изменить связи - выделите связь - Разорвать - ОК.
Не совсем понял почему, но если УФ удалять Главная - УФ - Удалить правила - Со всего листа, то такой метод не срабатывает. Возможно, таким образом не совсем корректно обрабатываются УФы с ошибками._Boroda_
Эмм. Спасибо огромное! Получилось! +1 в карму. А вот эти ручные телодвижения можно автоматизировать? Макро рекордер не показал к сожалению ничего интересного... 30-50 листов в ручную... Немного жестковато...
В VBA такой процесс реализовать возможно с последовательной обработкой всех листов?
Эмм. Спасибо огромное! Получилось! +1 в карму. А вот эти ручные телодвижения можно автоматизировать? Макро рекордер не показал к сожалению ничего интересного... 30-50 листов в ручную... Немного жестковато...
В VBA такой процесс реализовать возможно с последовательной обработкой всех листов?Timber_Wolf
Не. Не, ну, может, и не не, но мне такой вариант совсем не нравится. Про закрыть-открыть речи не было. Макросом удалить правила УФ по очереди циклом несложно, а вот закрыть-открыть посложнее будет. А если этот макрос как раз в этом же закрываемом-открываемом файле находится, то еще сложнее. Кстати, это здесь УФ нам вообще никакое не нужно, а ведь вполне может быть вариант, когда часть условий УФ нам нужно оставить, а часть удалить.
Не. Не, ну, может, и не не, но мне такой вариант совсем не нравится. Про закрыть-открыть речи не было. Макросом удалить правила УФ по очереди циклом несложно, а вот закрыть-открыть посложнее будет. А если этот макрос как раз в этом же закрываемом-открываемом файле находится, то еще сложнее. Кстати, это здесь УФ нам вообще никакое не нужно, а ведь вполне может быть вариант, когда часть условий УФ нам нужно оставить, а часть удалить._Boroda_
Pelena, Подтверждаю срабатывает! Но надо сохранять и пере открывать книгу.
А вот готовое решения для всех листов книги (мало ли кому пригодится)...
[vba]
Код
Sub Удалить_форматирование() Dim x As Worksheet For Each x In ActiveWorkbook.Worksheets 'x.UsedRange.Value = x.UsedRange.Value 'Включить если требуется еще и формулы значениями заменить x.Cells.FormatConditions.Delete Next x End Sub
[/vba]
Удалит весь мусор. Но соответственно сохранить, закрыть и открыть книгу заново.
Pelena, Подтверждаю срабатывает! Но надо сохранять и пере открывать книгу.
А вот готовое решения для всех листов книги (мало ли кому пригодится)...
[vba]
Код
Sub Удалить_форматирование() Dim x As Worksheet For Each x In ActiveWorkbook.Worksheets 'x.UsedRange.Value = x.UsedRange.Value 'Включить если требуется еще и формулы значениями заменить x.Cells.FormatConditions.Delete Next x End Sub
[/vba]
Удалит весь мусор. Но соответственно сохранить, закрыть и открыть книгу заново. Timber_Wolf
_Boroda_, Автоматическое закрытие-открытие не нужно +))) Нужно автоматическое удаление мусора и инструкция =))) Решение уже найдено =) Спасибо =)
_Boroda_, Автоматическое закрытие-открытие не нужно +))) Нужно автоматическое удаление мусора и инструкция =))) Решение уже найдено =) Спасибо =)Timber_Wolf
когда часть условий УФ нам нужно оставить, а часть удалить.
Блин. Что то я не подумал об этом... А вдруг действительно понадобится часть форматирования... А можно как то удалять форматирование ТОЛЬКО если оно содержит ссылки в другой файл?
когда часть условий УФ нам нужно оставить, а часть удалить.
Блин. Что то я не подумал об этом... А вдруг действительно понадобится часть форматирования... А можно как то удалять форматирование ТОЛЬКО если оно содержит ссылки в другой файл?Timber_Wolf
Sub Удалить_форматирование() Dim x As Worksheet For Each x In ActiveWorkbook.Worksheets t = x.Cells.FormatConditions.Count Do While t >= 1 Set xf = x.Cells.FormatConditions(t) If InStr(1, xf.Formula1, "#ССЫЛКА!") Then xf.Delete t = t - 1 Loop Next x End Sub
Sub Удалить_форматирование() Dim x As Worksheet For Each x In ActiveWorkbook.Worksheets t = x.Cells.FormatConditions.Count Do While t >= 1 Set xf = x.Cells.FormatConditions(t) If InStr(1, xf.Formula1, "#ССЫЛКА!") Then xf.Delete t = t - 1 Loop Next x End Sub
На УФ я не тестировал, но есть подозрение, что и с ним должно сработать такое:
[vba]
Код
Sub Hyperlinks_Kill() 'удаляет ссылки на другие книги Excel Dim iLinks, i& iLinks = ActiveWorkbook.LinkSources(xlExcelLinks) If Not IsEmpty(iLinks) Then If MsgBox("Разорвать внешние связи книги?", vbYesNo + vbInformation, "Связи...") = vbNo Then: Exit Sub For i = 1 To UBound(iLinks) ActiveWorkbook.BreakLink Name:=iLinks(i), Type:=xlExcelLinks Next i End If End Sub
[/vba]
или такое:
[vba]
Код
Sub HyperlinkCheck() ' найти на листе и убить битые гиперссылки на диапазоны Dim hLnk As Hyperlink, rRng As Range On Error Resume Next For Each hLnk In ActiveSheet.Hyperlinks If hLnk.Address = "" Then ' если это ссылка на диапазон Set rRng = Range(hLnk.SubAddress) 'чтобы при удалении гиперссылки не сбрасывался формат текста в ячейке, _ надо доделать: перед удалением запоминать, а после удаления восстанавливать параметры текста hLnk.Range (границы, шрифт, выравнивание, … ?) If Err <> 0 Then hLnk.Delete: Err.Clear End If Next End Sub
[/vba]
На УФ я не тестировал, но есть подозрение, что и с ним должно сработать такое:
[vba]
Код
Sub Hyperlinks_Kill() 'удаляет ссылки на другие книги Excel Dim iLinks, i& iLinks = ActiveWorkbook.LinkSources(xlExcelLinks) If Not IsEmpty(iLinks) Then If MsgBox("Разорвать внешние связи книги?", vbYesNo + vbInformation, "Связи...") = vbNo Then: Exit Sub For i = 1 To UBound(iLinks) ActiveWorkbook.BreakLink Name:=iLinks(i), Type:=xlExcelLinks Next i End If End Sub
[/vba]
или такое:
[vba]
Код
Sub HyperlinkCheck() ' найти на листе и убить битые гиперссылки на диапазоны Dim hLnk As Hyperlink, rRng As Range On Error Resume Next For Each hLnk In ActiveSheet.Hyperlinks If hLnk.Address = "" Then ' если это ссылка на диапазон Set rRng = Range(hLnk.SubAddress) 'чтобы при удалении гиперссылки не сбрасывался формат текста в ячейке, _ надо доделать: перед удалением запоминать, а после удаления восстанавливать параметры текста hLnk.Range (границы, шрифт, выравнивание, … ?) If Err <> 0 Then hLnk.Delete: Err.Clear End If Next End Sub
Alex_ST, Я пробовал эти макросы... =) Где то их находил... Но тогда не знал особенности о Сохранить-Закрыть-Открыть... Теперь и проверить то не на чем =) Все вылечено и пере сохранено =) Все равно спасибо =)
Alex_ST, Я пробовал эти макросы... =) Где то их находил... Но тогда не знал особенности о Сохранить-Закрыть-Открыть... Теперь и проверить то не на чем =) Все вылечено и пере сохранено =) Все равно спасибо =)Timber_Wolf