Новости:

Подпишитесь на рассылку новых сообщений форума через службу рассылок: Subscribe.ru

Главное меню

Поиск мёртвых связей с другими листами

Автор Shadowmaker, 09.08.2019, 14:00

« назад - далее »

Shadowmaker

Добрый день!

Столкнулся с такой проблемой...
После ряда вычислений и сравнений в файле остались ссылки на другие файлы экселя с данными. Финальный файл переместился в другое место - и понятное дело, ссылки на другие файлы умерли... теперь при каждом открытии файла эксель ругается что в файле невозможно обновить связи... бла бла бла... Как теперь мне эти ячейки с формулами где я использовал ранее ссылки на другие книги эселя найти? В идеале хорошо бы там просто зафиксировать цифры как есть - без обновления, а связи вообще удалить... не могу понять как это сделать - особенно в ситуации когда таких формул со ссылками в другие книги может быть больше миллиона

boa

Добрый день,
Данные - Редактировать ссылки - разорвать ссылки
как-то так
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Shadowmaker

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

boa

а вот так можно программно избавиться от ссылок и рефов в менеджере имен (Ctrl+F3)
Option Explicit

Public Sub Names_Delete_Links()
' Макрос записан 02.07.2019 (boa)
'   удалить имена в книге с ссылками на другие книги
    On Error Resume Next
    Dim objName As Object, iCount&, sMsg$
    For Each objName In ActiveWorkbook.Names
        If InStr(objName.RefersTo, "]") Then
'Debug.Print objName.Name; objName.RefersTo
            objName.Delete: iCount = iCount + 1
        End If
    Next objName
    If iCount > 0 Then sMsg = "Удалено " & iCount & " имен с ссылками на другие книги." Else sMsg = "Не найдены имена для удаления"
    MsgBox sMsg, vbInformation, ""
End Sub

Public Sub Names_Delete_REF_Links()
' Макрос записан 02.07.2019 (boa)
'   удалить имена в книге с битыми ссылками
    On Error Resume Next
    Dim objName As Object, iCount&, sMsg$
    For Each objName In ActiveWorkbook.Names
        If InStr(objName.RefersTo, "#REF!") Then
'Debug.Print objName.Name; objName.RefersTo
            objName.Delete: iCount = iCount + 1
        End If
    Next objName
    If iCount > 0 Then sMsg = "Удалено " & iCount & " имен с ""битыми"" ссылками." Else sMsg = "Не найдены имена для удаления"
    MsgBox sMsg, vbInformation, ""
End Sub

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

_Boroda_

Еще проверьте _сводные_ таблицы (если есть). Они могут ссылаться на другие книги, но в Данные - Связи это не прописывается
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Shadowmaker

Цитата: _Boroda_ от 09.08.2019, 16:49
Еще проверьте _сводные_ таблицы (если есть). Они могут ссылаться на другие книги, но в Данные - Связи это не прописывается

ДА! Нашёл! Спасибо - действительно, в сводных они и были... совсем зыбл про них.