1

Тема: Ошибка при удалении стилей

Здравствуйте!
Столкнулся с непонятной мне ситуацией. Имеется документ, который достался мне от FineReader. FineReader создал много стилей. Я хочу написать макрос, который удаляет все созданные стили:

Sub УдалитьСтили()
    Dim s As Style
    For Each s In ActiveDocument.Styles
        If Not s.BuiltIn Then
            s.Delete
        End If
    Next
End Sub

На перебор элементов в коллекции можно пока не обращать внимания. При удалении первого стиля получаю ошибку 5421 "The style name contains a character that is not valid."
Ошибка при удалении стилей

Самое интересное, что при удалении стилей вручную, Word их удаляет на ура, но при использовании даже записанных макросов получаю вышеуказанную ошибку. Поиск в интернете ничего не дал. Помогите, пожалуйста, решить проблему. Файл со стилями прикрепил.

P.S. Самое интересное, что некоторые стили они всё-таки удаляет так (например, в других документах), а здесь ошибка.

Post's attachments

Ошибка удаления стилей.docm 34.06 Кб, 4 скачиваний с 2014-02-24 

You don't have the permssions to download the attachments of this post.

2

Re: Ошибка при удалении стилей

Также проверил свойство Locked (True if a style cannot be changed or edited. Read/write Boolean.) у проблемных стилей. Значение - False.

3

Re: Ошибка при удалении стилей

Пробовал также переименовать проблемный стиль (s.NameLocal = "abrakadabra") - не помогает.

4

Re: Ошибка при удалении стилей

Обнаружил интересную особенность:
Переименуем стиль "Основной текст (14) + 10;5 pt;Масштаб 60%" в "Основной текст (13) + 10;5 pt;Масштаб 60%" и удаление проходит успешно! То есть проблема не в имени.
Другой способ - это изменить какое-нибудь свойство стиля, например, цвет текста, и удаление снова успешно.
Похоже дело именно в том, как они были созданы FineReader'ом. А может дело в особенностях API. У меня MS Offirce 2010 (Eng & Rus). Возможно на более ранних версиях будет всё хорошо.

5

Re: Ошибка при удалении стилей

Думаю, все же это имена. Я смог удалить только после переименования в "Обычный1".

Макросы под заказ и готовый пакет - mtdmacro.ru

6

Re: Ошибка при удалении стилей

Вождь пишет:

Думаю, все же это имена. Я смог удалить только после переименования в "Обычный1".

Насколько я понимаю, переименование было выполнено вручную (не через макрос)? То есть программно это никак не решить?

7

Re: Ошибка при удалении стилей

suslov пишет:

...переименование было выполнено вручную...программно это никак не решить...

Ага.

Макросы под заказ и готовый пакет - mtdmacro.ru