仅将更改的文本复制到剪贴板

时间:2019-06-19 06:59:59

标签: vba ms-word

我有一个需要解决的问题。 我有一个单词doc,要在其上运行搜索并替换查询。 但我不想更改实际文本,我想放置更改后的文本 在剪贴板中,并保持实际的不变。

Sub SearchAndReplace()

    ' marks all bold words,italic words, underlined
    Selection.Find.ClearFormatting
    Selection.Find.Font.Bold = True
    Selection.Find.Font.Italic = True
    Selection.Find.Font.Underline = wdUnderlineSingle
    Selection.Find.Replacement.ClearFormatting

    With Selection.Find
        .Text = ""
        .Replacement.Text = "[test]^&[/test]"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = True
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With

    Selection.Find.Execute Replace:=wdReplaceAll

End Sub

1 个答案:

答案 0 :(得分:0)

谨慎: 我猜有更好的方法来实现您想要的工作,因为这不是正确的编码。 (而且剪贴板最多只能包含24个项目),但是为了使您的代码有效,这是我的答案:

要复制剪贴板中的文本而不是替换文本,可以只使用.copy方法。

如果替换行:

Selection.Find.Execute Replace:=wdReplaceAll

作者

Dim iCount As Long 

    Selection.Find.Execute
    Selection.Copy

Do While Selection.Find.Found = True And iCount < 1000
    iCount = iCount + 1

    Selection.Find.Execute
    Selection.Copy
Loop

它应该工作。

代码只是复制每次搜索后找到的项目。 每次Selection.Find.Execute出现在代码中时,都会搜索该搜索的下一个目标。

一旦再也找不到搜索(或搜索太多),循环将停止。