Может ли VBA удалить именованные диапазоны на основе значения RefersTo?

Я очищаю раздутую книгу Excel и пытаюсь массово удалить именованные диапазоны, которые ссылаются на книги на чьем-то диске "C". Их очень много. И они не используются в этой книге.

'C: \ blahblah \... \... \... \... \... \ [WorkBookName.xls] Лист1'!$E$28

Приведенный ниже код помог мне удалить именованные диапазоны, где их имя содержит "значок" (например).

Однако мне действительно нужно удалить диапазон, когда он содержит путь, как показано выше. Принимая во внимание, что название книги или листа также может измениться, но диск останется прежним.

Sub deleteNamedRangesSpecific()
For Each NR In ActiveWorkbook.Names
    If NR.NameLocal Like "*" & "icon" & "*" Then NR.delete
Next
End Sub

Любые идеи, как удалить в соответствии с самим диапазоном, а не имя диапазона?

Благодарю.

Майк.

1 ответ

Вам просто нужно передать NR.RefersTo вариант переменной типа строки, так что вы можете использовать Like функция.

Этот код работает для меня. Очевидно редактировать $E$28 в соответствии с.

Option Explicit
Sub deleteNamedRangesSpecific()
    Dim NR As Name
    Dim compare_string As String
    For Each NR In ActiveWorkbook.Names
        compare_string = NR.RefersTo
        If compare_string Like "*" & "$E$28" & "*" Then NR.Delete
    Next
End Sub
Другие вопросы по тегам