1

Тема: Поиск и замена от противного

Есть ли возможность выполнять в Word поиск (и последующее форматирование результирующего текста цветом или замена) не указывая определенное форматирование, а наоборот, игнорируя его?

1. К примеру, найти любой текст со шрифтом кроме 12

2. Найти любой текст со стилем кроме Обычный

3. Найти текст с любым значением смещения, кроме Нет

и т.п.?

К примеру, я не могу найти текст со шрифтом, отличным от указанного.

Часто бывает после импорта PDF-документов в файле присутствует много нестандартных стилей, шрифтом, кеглей и т.п. Разумеется, во-первых и не знаешь, какие из них присутствуют, во-вторых, утомительно искать, допустим, шрифт с кеглем 7,5, затем 8, 8,5 и т.п.

Хотя бы можно просмотреть в документе Word какие шрифты (макрос отдельно по шрифтам нашел), кегли, смещения, интервалы и т.п. используются в доке?

P>S> Совсем сбрасывать форматирование до простого текста нельзя - присутствуют полужирные начертания, листинги, списки, заголовки и т.п. и документы 200-1000 страниц

2

Re: Поиск и замена от противного

Озвучьте исходные условия задачи, а то непонятно, зачем нужен такой поиск. Может вам присоветуют решение попроще.

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

3

Re: Поиск и замена от противного

Вождь пишет:

Озвучьте исходные условия задачи, а то непонятно, зачем нужен такой поиск. Может вам присоветуют решение попроще.

При выводе PDF-документа в формат DOC и в некоторых других случаях получившийся DOC-документ содержит лишние стили, шрифты, выравнивания, размеры шрифтов, смещения, интервалы, отступы, мягкие переносы, разрывы и прочее. Задача состоит в том, чтобы избавиться от этой нагрузки, не потеряв форматирование документа, а именно:
- заголовки
- нумерованные и маркированные списки
- полужирные и курсивные начертания
- подстрочные и надстрочные форматирования
- форматирования шрифтом Courier листингов
- выделения текста маркером

Решить ее можно двумя способами:
1. или выделив неким (допустим, красным) цветом текст с неподходящим форматированием - этот вариант предпочтительнее, важнее обратить внимание на такие места и вручную подправить, так как в пакетном режиме что-то может измениться по ошибке
2. или заменив нужным, к примеру Обычным стилем (хотя в этом случае, сбрасывается не все форматирование и помогает лишь полный сброс форматирования фрагмента).

Итоговый док должен содержать текст со стандартным текстом в стиле Обычный, Times New Roman 12 (Courier 12 для листингов) (для заголовков стандартные Cambria/Calibri)

4

Re: Поиск и замена от противного

Да, можно как-то пометить то, что надо сохранить, и сбросить форматирование всего остального. Но если документ большой и меток очень много, то макрос "захлебнется" - не хватит никаких ресурсов компа.

Другой метод - работать с копией документа, где сначала сбросить все форматирование, а затем восстановить нужное по оригиналу. Можно что-то пропустить при сбросе.

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

5

Re: Поиск и замена от противного

Вот макрос, который выделяет все параграфы документа, высота шрифта которых не равна 10

Sub pom()
'

Dim par As Paragraph

   For i = 1 To ActiveDocument.Paragraphs.Count Step 1
   
   Set par = ActiveDocument.Paragraphs(i)
   
    par.Range.Select
        
    If Selection.Font.Size <> 10 Then
    Selection.Range.HighlightColorIndex = wdRed
    End If
   
   Next i
    
    
End Sub

Дальше "городите" свои "Ифы", чтобы понять как из оформить воспользуйтесь макрорекордером, изменяя форматирование параграфов и смотрите какой код записывается при записи макроса.

Вообще странное решение проблемы, как вариант можно не просто выделять нестандартный шрифт, а сразу делать его стандартным (задавая сложное условие).

6

Re: Поиск и замена от противного

Aleks пишет:

Вот макрос, который выделяет все параграфы документа, высота шрифта которых не равна 10

Sub pom()
'

Dim par As Paragraph

   For i = 1 To ActiveDocument.Paragraphs.Count Step 1
   
   Set par = ActiveDocument.Paragraphs(i)
   
    par.Range.Select
        
    If Selection.Font.Size <> 10 Then
    Selection.Range.HighlightColorIndex = wdRed
    End If
   
   Next i
    
    
End Sub

Дальше "городите" свои "Ифы", чтобы понять как из оформить воспользуйтесь макрорекордером, изменяя форматирование параграфов и смотрите какой код записывается при записи макроса.

Вообще странное решение проблемы, как вариант можно не просто выделять нестандартный шрифт, а сразу делать его стандартным (задавая сложное условие).


Да, в принципе можно сразу делать - но тогда заголовки он тоже сбросит или нет?

Спасибо за макрос, попробую сам дальше:)

7

Re: Поиск и замена от противного

заголовки так же можно отфильтровать ифами

If Selection.Style = ActiveDocument.Styles("Стиль_вашего_заголовка") Then