Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 17:14   #11
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

к примеру, в прилагаемом образце почему-то удаляется стиль Citata
и ваша версия макроса тоже его удаляет, как выяснилось
Вложения
Тип файла: doc образец2.doc (37.0 Кб, 17 просмотров)

Последний раз редактировалось caute; 20.01.2012 в 17:17.
caute вне форума Ответить с цитированием
Старый 20.01.2012, 18:42   #12
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от caute Посмотреть сообщение
...ваша версия макроса имеет иммунитет к ошибкам...
Да.
Цитата:
Сообщение от caute Посмотреть сообщение
...почему-то удаляет иногда и нелишние...
То, что стиль не найден поиском, ни о чем не говорит!
Во-первых, в документе есть не только главная часть
Во-вторых, есть стиль, основанный на стиле. Последний может не использоваться, тогда и первому будет каюк То же относится к связанным стилям (как раз ваш случай с Citata).
В-третьих, наверняка что-то еще

Вообще, интересно было бы узнать подробнее, как Word работает со стилями
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 20.01.2012, 19:23   #13
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

мдя... как всё запутали ваши коллеги из редмонда

а что значит "связанный стиль"? и можно ли его развязать? чтобы он не удалялся впредь, если применяется в доке.
caute вне форума Ответить с цитированием
Старый 20.01.2012, 19:48   #14
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от caute Посмотреть сообщение
...что значит "связанный стиль"?...
Связывает стиль абзаца со стилем знака, т.е. у них как бы общий стиль знака. Так сказано в документации. На самом деле, можно связать стиль абзаца со стилем абзаца и др.
Цитата:
Сообщение от caute Посмотреть сообщение
...можно ли его развязать?...
Как я знаю, макросами развязать нельзя никак. Если что-то прописал в LinkStyle, то уже все К тому же Word такие стили любит лепить автоматом

Добавьте в ваш макрос поиск связанного стиля.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/

Последний раз редактировалось Вождь; 20.01.2012 в 19:56.
Вождь вне форума Ответить с цитированием
Старый 20.01.2012, 20:03   #15
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

ну а ручками-то как развязать?
я понимаю, как отвязать стиль от родителя, на котором он основан, это не трудно, но, как выяснилось, недостаточно. А вот как сделать его несвязанным или как можно создать абсолютно автономный стиль, который был бы ни с чем никак не связан, - не могу взять в толк.
а хотелось бы научиться.
caute вне форума Ответить с цитированием
Старый 20.01.2012, 20:05   #16
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

добавить что-либо в макрос, окромя самых простых вещей, не умею, тямы нема
caute вне форума Ответить с цитированием
Старый 20.01.2012, 20:25   #17
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от caute Посмотреть сообщение
ну а ручками-то как развязать?...
Пересозданием стиля.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 20.01.2012, 20:34   #18
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от caute Посмотреть сообщение
добавить что-либо в макрос...
Код:
Sub Удалить_стили()
    Debug.Print "<<< Старт " & Now
Dim R As Word.Range
Dim myStyle As Word.Style
Dim i&, N1&, N2&
Dim S$
    Set R = ActiveDocument.Range(0, 0)
    With R.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = Word.wdFindStop
        .Format = True
    End With
    N1 = 0: N2 = 0
    For i = ActiveDocument.Styles.Count To 1 Step -1
        Set myStyle = ActiveDocument.Styles(i)
        If myStyle.BuiltIn = True Then GoTo 1
        If myStyle.InUse <> True Then GoTo 1
        If myStyle.Locked = True Then GoTo 1
        If myStyle.LinkStyle Is Nothing Then
        ElseIf myStyle.LinkStyle.Type <> Word.wdStyleTypeCharacter Then
        Else
            R.SetRange 0, 0
            R.Find.Style = myStyle.LinkStyle.NameLocal
            R.Find.Execute Replace:=Word.wdReplaceNone
            If R.Find.Found = True Then GoTo 1
        End If
        S = myStyle.NameLocal
        R.SetRange 0, 0
        R.Find.Style = S
        R.Find.Execute Replace:=Word.wdReplaceNone
        If R.Find.Found = True Then GoTo 1
        On Error Resume Next
        myStyle.Delete
        If Err.Number <> 0 Then
            N2 = N2 + 1
            Debug.Print _
                "- Ошибка " & CStr(Err.Number) & " (" & Err.Description & ")" & _
                " при удалении стиля """ & S & """"
        End If
        If IsObjectValid(myStyle) Then
            Debug.Print "- Не был удален стиль """ & S & """"
        Else
            N1 = N1 + 1
            Debug.Print "+ Удален стиль """ & S & """"
        End If
1:
    Next i
    Debug.Print "= Удалено: " & CStr(N1)
    Debug.Print "= Ошибок: " & CStr(N2)
    Debug.Print ">>> Финиш " & Now
End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 20.01.2012, 21:06   #19
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

многие спасибо за макрос!
Цитата:
Пересозданием стиля.
если я просто пересоздам стиль, он же ничем не будет отличаться от своего предшественника. Не понимаю, почему, например, стиль "Citata" получился у меня связанным. Я его создал с нуля на основе стиля "Обычный" и ни с чем другим больше не связывал...

Правда, последний ваш макрос решил проблему, это я просто так любопытствую

Последний раз редактировалось caute; 20.01.2012 в 21:08.
caute вне форума Ответить с цитированием
Старый 20.01.2012, 21:35   #20
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от caute Посмотреть сообщение
м...почему, например, стиль "Citata" получился у меня связанным...
Word может сам по себе создавать и связывать стили. Судя по названию "Citata Знак", так и было. Уже подзабыл, как это работает...
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование стилей внутренними тэгами??? ARTsev HTML и CSS 1 10.02.2010 13:22
значения стилей окна Windows. HWork Общие вопросы C/C++ 4 25.09.2009 09:26
Копирование стилей Busine2009 Microsoft Office Word 0 31.07.2009 21:41
Копирование стилей... Busine2009 Microsoft Office Word 2 27.06.2009 19:42