В общем, задача сводится к написанию макроса, который удалял бы все именованные диапазоны. На первый взгляд, всё элементарно — надо просто очистить коллекцию ActiveWorkbook.Names, но так как у неё нет метода Clear, приходится удалять по одному элементу:
- Код: Выделить всё
For Each oName In ActiveWorkbook.Names
oName.Delete
Next
Пробовал искать в Интернете — ничего стоящего не нашёл, кроме идеи с присвоением нового имени и последующего удаления. Не прокатило: операция переименования как будто происходит успешно, но, похоже, что просто создаётся новое имя, а старое лежит на прежнем месте. Причём народ тоже отмечает, что удаление вручную через пользовательский диалог Excel таки всегда срабатывает, независимо от корректности имени. В итоге предлагалось два выхода: либо сидеть и удалять вручную, либо воспользоваться hex-редактором — но ни один из них мне категорически не подходит.
Пример проблемного файла прилагаю — там же лежит и макрос с различными неудавшимися обходными вариантами.