1

Тема: Замена маркера и табуляции (заполнитель) на дефис и неразрывный пробел

После сканирования книги получил на выходе текст Word (2003). Хочется стразу применить свой стиль абзаца ко всему документу (кроме заголовков глав, но это к делу не относится). Но в книге очень много диалогов и и данные абзацы после FineReader-а имеют всевозможные имена стилей.
Необходимо - пройтись по всему документу и все маркированные абзацы на абзацы оформленный стилем (например "Абзац"), и чтобы в начале каждого из этих абзацев было два символа перед текстом - дефис и неразрывный пробел за ним (причем именно как символы, а не маркеры).
Заранее благодарен за помощь..
PS. Нужно срочно сканировать около десятка книг, в каждой из которых не менее 300 страниц и сделать их оформление.

2

Re: Замена маркера и табуляции (заполнитель) на дефис и неразрывный пробел

Если книги внутри без форматирования, то от него лучше избавится еще в Файнриадере. Там есть разные режимы эксторта в Word. Может тогда станет попроще...

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

3

Re: Замена маркера и табуляции (заполнитель) на дефис и неразрывный пробел

Попробуем.. Ну а если не поможет? можно ли определить, есть ли маркер у абзаце или нет?
Дальше уже только дело техники для написания макроса..

4

Re: Замена маркера и табуляции (заполнитель) на дефис и неразрывный пробел

Маркеры, в смысле маркированные списки?

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

5

Re: Замена маркера и табуляции (заполнитель) на дефис и неразрывный пробел

угу, в моем случае маркером является длинное тире

6

Re: Замена маркера и табуляции (заполнитель) на дефис и неразрывный пробел

файлы FineReader-a под рукой - переконвертил, чтобы не бралось форматирование.. Дышать стало намного легче.. Теперь только ошибки распознавания поправить.. Все гениальное - просто.. smile

7

Re: Замена маркера и табуляции (заполнитель) на дефис и неразрывный пробел

Тогда где-то так:

Dim P As Paragraph
Dim R As Range
Dim S$

    ' параграфы со списком
    For Each P In ActiveDocument.ListParagraphs
        Set R = P.Range
        ' маркированный список
        If R.ListFormat.ListType <> wdListBullet Then
        Else
            ' текст маркера
            S = R.ListFormat.ListString
            If Len(S) = 1 Then
                Select Case AscW(S)
                    ' тире
                    Case 45, 173, 8211, 8212
                        ' форматируем стилем без списка
                        R.Style = Word.wdStyleNormal
                        ' вставляем свой маркер и нер. пробел
                        R.InsertBefore Text:=ChrW$(8212) & Chr$(160)
                End Select
            End If
        End If
    Next P
Макросы под заказ и готовый пакет - mtdmacro.ru