Мне нужно было удаль весь текст, который имеет стиль "!!Скрытый".
1) Как ни странно, в VBA самый быстрый способ - это поиск и замена.
2) Есть еще способ: выделить подобный формат (WordBasic.SelectSimilarFormatting), а потому удалить. Но это оказалось гораздо медленней.
3) Также выяснил, что выделить все вхождения средствами VBA - невозможно (на зарубежном форуме кто-то об этом написал).
Быстрый макрос (через поиск и замену):
Sub УдалитьСкрытыйТекст()
' Быстрый макрос
' Удаление текста помеченного стилем "!!Скрытый"
''' Selection.WholeStory
''' Selection.MoveLeft Unit:=wdCharacter, Count:=1
ActiveWindow.ActivePane.View.ShowAll = True
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("!!Скрытый")
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "" ' текст для поиска
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveWindow.ActivePane.View.ShowAll = False
End Sub
Медленный макрос (через WordBasic.SelectSimilarFormatting):
Sub УдалитьСкрытыйТекст()
' Медленный макрос
' Удаление текста помеченного стилем "!!Скрытый"
''' Selection.WholeStory
''' Selection.MoveLeft Unit:=wdCharacter, Count:=1
ActiveWindow.ActivePane.View.ShowAll = True
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("!!Скрытый")
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
If Selection.Find.Execute Then
WordBasic.SelectSimilarFormatting
Selection.Delete Unit:=wdCharacter, Count:=1
End If
ActiveWindow.ActivePane.View.ShowAll = False
End Sub
Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir