1

Тема: Как при .ClearFormatting сохранить надстрочный и подстрочный шрифты

Есть задача: привести текст созданный разными пользователями (иногда очень странного, даже удивительного, вида) к строго заданному виду. Делаю .ClearFormatting - обязательно по условиям задачи, но, оказалось, встречается надстрочный и подстрочный шрифты, которые стираются при очистке формата. Подскажите пожалуюста, как этого избежать.

2

Re: Как при .ClearFormatting сохранить надстрочный и подстрочный шрифты

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

    For Each P In ActiveDocument.Paragraphs
        With P.Range
            If .Start < .End - 1 Then
                .MoveEnd wdCharacter, -1
                .Text = Trim(.Text)
            End If
        End With
    Next P

Кто может подсказать, как это обойти.

3

Re: Как при .ClearFormatting сохранить надстрочный и подстрочный шрифты

Есть подозрение, что .Text=... в принципе отрубает форматирование...

Поэтому рекоммендация сваять что-то типа поиск и замена
1) Концевые пробелы
^w^p
^p
1) Ведущие пробелы
^p^w
^p

^p Paragraph mark (¶) Символ конца абзаца (¶)
^w Whitespace Любое число и любая комбинация обыкновенных и неразрываемых пробелов, табуляций и концов абзаца

При этом вроде порушится не должно...

Делай, что можешь, и будь, что будет!

4

Re: Как при .ClearFormatting сохранить надстрочный и подстрочный шрифты

при ^p^w и ^w^p ругается sad

5

Re: Как при .ClearFormatting сохранить надстрочный и подстрочный шрифты

Вот так работает:

Dim P As Paragraph
For Each P In ActiveDocument.Paragraphs
      
   If Right(P, 2) = " " & Chr(13) Then
        With P.Range
        .Collapse Direction:=Word.wdCollapseEnd
        .Move Unit:=wdCharacter, Count:=-1
        .Delete Unit:=wdCharacter, Count:=-1
        End With
   End If
   If Left(P, 1) = " " Then
        With P.Range
        .Collapse Direction:=Word.wdCollapseStart
        .Delete Unit:=wdCharacter, Count:=1
        End With
   End If
Next P

6

Re: Как при .ClearFormatting сохранить надстрочный и подстрочный шрифты

EletsAdm пишет:

при ^p^w и ^w^p ругается

Это не подстановочные знаки! Эта опция должна быть выключена.

Читать:
внешняя ссылка


EletsAdm пишет:

Вот так работает:

Этот вариант будет работать только с пробелами... Если это цель, то ок.
Потому как есть еще табуляция, неразрывные пробелы и т.д. и т.п.

Отредактировано VBA-addict (20.12.2010 14:47:37)

Делай, что можешь, и будь, что будет!