Vba 修改并粘贴剪贴板文本

Vba 修改并粘贴剪贴板文本,vba,ms-word,paste,Vba,Ms Word,Paste,我的目标是: 将PDF中的文本复制到剪贴板 在一次移动中,将文本粘贴到MS Word,同时 用空格替换所有换行符 匹配目标的格式 我创建了一个宏,它用空格替换文档中的所有换行符 Selection.Find.Execute Replace:=wdReplaceAll Selection.WholeStory Selection.PasteAndFormat (wdFormatOriginalFormatting) Selection.Find.ClearFormatting Selection.

我的目标是:

将PDF中的文本复制到剪贴板 在一次移动中,将文本粘贴到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

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

我建议这样做:

记住要粘贴剪贴板数据的当前选择点 粘贴剪贴板中的内容 设置粘贴区域的结束点 仅对刚粘贴的文本范围进行替换。 以下解决方案部分基于问题中的代码。对测试所需的内容进行了评论

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

我建议这样做:

记住要粘贴剪贴板数据的当前选择点 粘贴剪贴板中的内容 设置粘贴区域的结束点 仅对刚粘贴的文本范围进行替换。 以下解决方案部分基于问题中的代码。对测试所需的内容进行了评论

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

它对我也有效,但我改进了它,添加了一个命令以消除双空格:

Sub KM()
'
' KM Macro
' Paste and eliminate line breaks and double spaces.
'
'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

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

它对我也有效,但我改进了它,添加了一个命令以消除双空格:

Sub KM()
'
' KM Macro
' Paste and eliminate line breaks and double spaces.
'
'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

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

我承认我一点也不明白——为什么要将^p替换到剪贴板中,然后粘贴到Word中呢。粘贴后,您已在文档中完成此操作。。。Word文档中的替换是否有问题?对不起,请帮我理解一下。我想用空格替换换行符,因为对于从PDF自动换行符粘贴的文本中的每一个换行符,因为这一行中没有更多的单词空间,MS word会创建一个新段落,尽管如果仍然有空格,它应该继续在同一行中-2.当前宏将替换粘贴剪贴板,然后将当前MS word文档中的所有换行符替换为空格,而不仅仅是刚刚粘贴的文本中的换行符-这更有意义吗?现在我明白了。。。给我一点时间来写建议的答案我承认我一点也不明白-为什么你们想把^p替换到剪贴板上,然后粘贴到Word上。粘贴后,您已在文档中完成此操作。。。Word文档中的替换是否有问题?对不起,请帮我理解一下。我想用空格替换换行符,因为对于从PDF自动换行符粘贴的文本中的每一个换行符,因为这一行中没有更多的单词空间,MS word会创建一个新段落,尽管如果仍然有空格,它应该继续在同一行中-2.当前宏将替换粘贴剪贴板,然后将当前MS word文档中的所有换行符替换为空格,而不仅仅是刚刚粘贴的文本中的换行符-这更有意义吗?现在我明白了。。。给我一点时间写下建议的答案