Vba 修改并粘贴剪贴板文本
我的目标是: 将PDF中的文本复制到剪贴板 在一次移动中,将文本粘贴到MS Word,同时 用空格替换所有换行符 匹配目标的格式 我创建了一个宏,它用空格替换文档中的所有换行符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.
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文档中的所有换行符替换为空格,而不仅仅是刚刚粘贴的文本中的换行符-这更有意义吗?现在我明白了。。。给我一点时间写下建议的答案