插入空格和斜体字

时间:2015-09-06 14:17:20

标签: vba insert ms-word find word-vba

我在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

我发现这有效并且符合我的要求,但是它只对文档中的第一个斜体字执行,并且不会在文档的其余部分继续。

2 个答案:

答案 0 :(得分:1)

我认为你可以在没有VBA的情况下做到这一点:

在Word的查找/替换中使用通配符打开搜索,搜索格式,字体...,斜体并搜索模式 (*>)

*意味着找到任何东西,
>表示找到单词的结尾,和 当模式匹配时,()括号将创建自动编号组。

在“替换”框中,不要更改格式,而是替换为文本:<space>\1以插入空格,然后是组#1。

答案 1 :(得分:0)

这对我有用:

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