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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2012, 14:04   #1
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию Макрос: удаление текста со всеми отличными стилями

Помогите, пожалуйста. С вба только начинаю знакомство.

Ситуация: имеется документ, параграфы в котором написаны с различными стилями.
Необходимо: оставить в документе только текст, форматированный тремя заданными стилями Стиль1, Стиль2, Стиль3, а текст, форматированный любыми другими стилями - удалить.
darthraziel вне форума Ответить с цитированием
Старый 21.02.2012, 16:07   #2
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Вот 1 из вариантов макроса удаляющий текст ненужных стилей и пустые абзацы
Код:
Sub DeleteStyleText()
Dim prg As Paragraph
    For Each prg In ActiveDocument.Paragraphs
        Select Case prg.Style
            Case Is <> "Стиль 1", Is <> "Стиль 2", Is <> "Стиль 3"
                prg.Range.Delete
            Case Else
                If prg.Range.Characters.Count = 1 Then
                    prg.Range.Delete
                End If
        End Select
End Sub

Последний раз редактировалось Пименов Александр; 21.02.2012 в 16:08. Причина: Опечатка
Пименов Александр вне форума Ответить с цитированием
Старый 21.02.2012, 17:25   #3
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию

Большое спасибо за помощь, теперь понятно, в каком направлении двигаться, только при выполнении данного кода удаляется вообще весь текст.
darthraziel вне форума Ответить с цитированием
Старый 21.02.2012, 17:33   #4
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Проверьте правильность названий Стилей в строке
Case Is <> "Стиль 1", Is <> "Стиль 2", Is <> "Стиль 3"
Пименов Александр вне форума Ответить с цитированием
Старый 21.02.2012, 17:34   #5
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Если названия не совпадают, то удалиться весь абзац
Пименов Александр вне форума Ответить с цитированием
Старый 21.02.2012, 17:39   #6
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию

Да нет, с правильностью там все в порядке, тем не менее, удалялись все абзацы. Немного переделал код под If...Then, и все заработало так, как задумано.

Код:
Sub DeleteStyleText()
Dim prg As Paragraph
    For Each prg In ActiveDocument.Paragraphs
        If prg.Style <> "Стиль1" Then
           If prg.Style <> "Стиль2" Then
              If prg.Style <> "Стиль3" Then
                    prg.Range.Delete
              End If
           End If
        End If
    Next
End Sub
darthraziel вне форума Ответить с цитированием
Старый 21.02.2012, 18:00   #7
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

"Стиль1" у Вас и "Стиль 1" не равны, попробуйте заменить мои стили своими и проверьте
Пименов Александр вне форума Ответить с цитированием
Старый 21.02.2012, 18:22   #8
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию

У меня все равно там названия стилей совершенно другие, это я так, условно их обозвал стиль1-стиль2. Еще раз проверил - нет, все равно удаляет все.
darthraziel вне форума Ответить с цитированием
Старый 21.02.2012, 18:33   #9
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,057
По умолчанию

Цитата:
Сообщение от darthraziel Посмотреть сообщение
Помогите, пожалуйста. С вба только начинаю знакомство. Стиль1, Стиль2, Стиль3....
лихо с этого начинать...
Кисточка - знаете что такое?
Копировать формат-один взмах и все стили коту под хвост
Лично у меня с ними терпения не хватает...
Ципихович Эндрю вне форума Ответить с цитированием
Старый 21.02.2012, 18:36   #10
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
лихо с этого начинать...
Кисточка - знаете что такое?
Копировать формат-один взмах и все стили коту под хвост
Лично у меня с ними терпения не хватает...
И не говорите
darthraziel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос форматирования текста DJTreeno Microsoft Office Excel 3 04.07.2011 10:41
Оформление стилями jotei20 Microsoft Office Word 1 26.04.2011 00:14
Объеденить ячейки с разными стилями шрифта doober Microsoft Office Excel 9 09.09.2010 12:58
Макрос: удаление повторяющихся ячеек Shpr0T Microsoft Office Excel 9 28.08.2010 14:14
Получение снимка экрана методами отличными от printscreen Mixasik Софт 17 26.03.2010 10:23