从Word宏中删除文本

时间:2015-06-16 15:27:54

标签: vba ms-word word-vba

如何使用宏从Word中删除特定文本?

Dim ActualParagraph As Paragraph
Set ActualParagraph = Selection.Paragraphs(1)
...

我试过

ActualParagraph.Range.Characters(1).Delete Unit:=wdCharacter

在循环中删除前X个字符,但问题是如果有空格,Word会自动删除前面的字符,因此您无法轻松计算应该调用此类.Delete的次数

我试过

ActualParagraph.Range.Delete(WdUnits.wdCharacter, 1) 

但它会删除整个段落而不管其中的字符数。

我可以指定任何可靠的方法,例如,从字符X删除字符Y所有内容。我也无法在MSDN或其他任何地方找到任何有用的东西。我不想通过搜索然后删除所选文本来删除。

由于

2 个答案:

答案 0 :(得分:2)

可以在没有VBA的情况下完成。 Ctrl + H,查找:“sampleText”,替换:“”。 它会将“sampleText”替换为空。

但是,这是在“.Text =”中使用变量的代码:

Option Explicit
Sub replaceSampleToNothing()
    Dim sample
    sample = "sampleText"

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = sample
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

答案 1 :(得分:0)

删除你要求的字符后删除空白的事实可能是因为“Smart Cut& Paste”选项,当你删除单词本身时,删除空白后的字样就行了。请参阅文件 - >选项 - >高级 - >剪切,复制和粘贴部分 - > “Smart Cut& Paste”及其选项。

另一个问题是,当给出一个非空的选择/范围的文本时,它会出现,Selection.Delete会忽略你给它的计数,只是删除了选择(文档很明显就像这样)。