Вставка пробела перед словом и курсивом

У меня есть документ в Word, который содержит сотни выделенных курсивом слов, в которых нет пробела между собой и предыдущим словом.

Например:

Быстраякоричневая лиса перепрыгивает через ленивуюсобаку.

Результат, который я ищу:

Быстрая коричневая лиса перепрыгивает ленивую собаку.

Я пытался создать макрос, используя «Найти и заменить» и .InsertBefore, чтобы решить эту проблему для меня, но безуспешно.

Это код, который у меня есть до сих пор.

Sub FindItalics()

Selection.Find.ClearFormatting
Selection.Find.Font.Italic = True
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

InsertBefore

End Sub

Sub InsertBefore()
    With Selection
    .InsertBefore " "
    End With
End Sub

Я обнаружил, что это работает и делает то, что мне нужно, однако это работает только для первого выделенного курсивом слова в документе и не будет продолжаться в остальной части документа.


person UserAtlas    schedule 06.09.2015    source источник


Ответы (2)


Это сработало для меня:

Sub FindItalics()

    Dim rng As Range

    Set rng = Selection.Range

    With rng.Find
        .Text = ""
        .Replacement.Text = ""
        .ClearFormatting
        .Wrap = wdFindStop
        .Format = True
        .Font.Italic = True
        .MatchWholeWord = False
        .Forward = True

        While .Execute
            'Note: 'rng' is now the range containing the matched content
            rng.InsertBefore " "
            rng.Collapse wdCollapseEnd
        Wend
    End With
End Sub
person Tim Williams    schedule 07.09.2015

Я думаю, вы можете сделать это без VBA:

В Word «Найти/Заменить» включите поиск с использованием подстановочных знаков, найдите «Формат», «Шрифт...», «Курсив» и найдите шаблон (*>).

* означает найти что-нибудь,
> означает найти до конца слова, а
скобки () создадут группу с автоматической нумерацией при совпадении шаблона.

В поле «Заменить» не меняйте формат и замените текстом: <space>\1, чтобы вставить пробел, за которым следует группа №1.

person xidgel    schedule 06.09.2015
comment
Привет Спасибо за ваш ответ. Я только что попробовал это, и, похоже, это не работает для меня. - person UserAtlas; 06.09.2015
comment
@Пользователь Атлас; Я изменил ответ --- попробуйте еще раз. - person xidgel; 07.09.2015