修改并粘贴剪贴板文本

Ber*_*rnd 2 vba ms-word paste

我的目标是:

  1. 将 PDF 中的文本复制到剪贴板
  2. 只需一次操作,即可将文本粘贴到 MS Word,同时
    • 用空格替换所有换行符
    • 匹配目标的格式

我创建了一个宏,它将文档中的所有换行符替换为空格。

Selection.Find.Execute Replace:=wdReplaceAll
Selection.WholeStory
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^p"
    .Replacement.Text = " "
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Run Code Online (Sandbox Code Playgroud)

如何将替换应用到剪贴板,然后粘贴此替换的代码片段?

Kaz*_*wor 5

我建议这样做:

  1. 记住当前选择点,您将在其中粘贴剪贴板数据
  2. 粘贴剪贴板中的内容
  3. 设置粘贴区域的终点
  4. 仅对刚刚粘贴的文本范围进行替换。

以下解决方案部分基于问题中的代码。评论了(测试)必需的内容。

Sub replacement_for_selection()

'Selection.Find.Execute Replace:=wdReplaceAll
'Selection.WholeStory

Dim rngFrom, rngTo
    rngFrom = Selection.Start
Selection.PasteAndFormat (wdFormatOriginalFormatting)
    rngTo = Selection.End
ActiveDocument.Range(rngFrom, rngTo).Select

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^p"
    .Replacement.Text = " "
    .Forward = False    '!!!
    .Wrap = wdFindStop   '!!!
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute , , , , , , , , , , wdReplaceAll
End Sub
Run Code Online (Sandbox Code Playgroud)