在Word中粘贴和合并格式

时间:2017-09-21 00:55:32

标签: vba ms-word word-vba

我正在尝试在Microsoft Word中粘贴和合并格式化宏。我经常从一个网站复制,然后从该网站粘贴到Word。不幸的是,网站格式始终是:

文本

引用

我希望格式为:

"文本&#34。引文。

我的代码目前是

Sub Paste_Citation()
' Paste_Citation Macro
    On Error Resume Next
    Selection.PasteAndFormat (wdFormatSurroundingFormattingWithEmphasis)
    Selection.TypeBackspace
    Selection.TypeBackspace
    Selection.TypeText Text:="."

End Sub

我无法弄清楚如何a)在文本和引文之间没有段落空格,b)在文本周围加上括号。如果文本末尾没有句号,则格式为"等等等等等等。否则,"等等等等。" c)如果文本只包含空格和句号,则不包括文本。我知道我需要为c做一个if语句,但我对Word中的VBA不是很熟悉。有人可以和我一起完成这个过程吗?

编辑#1

x = Selection.PasteAndFormat(wdFormatSurroundingFormattingWithEmphasis)
'trying to set x equal to the pasted formatted value
Dim Txt As String
Dim Cit As String
Txt = Split(x, Chr(182))
'trying to split the text based on the paragraph symbol
'I am confused on what I need to do from there

编辑#2 我一直在努力,我认为我非常接近。我想出了如何粘贴信息并合并格式,以及如何删除段落。我现在的问题是,我无法弄清楚如何让它在第一段附近加上引号,将光标移到粘贴的末尾,并在结尾添加句号。

Sub PasteCitation()
'Modified code from http://www.vbaexpress.com/forum/archive/index.php/t-46321.html
Application.ScreenUpdating = False

Dim Txt As Range
Set Txt = Selection.Range
Txt.PasteAndFormat (wdFormatSurroundingFormattingWithEmphasis)

With Txt.Find
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True

     'Replace single paragraph breaks with a space
    .Text = "([!^13])([^13])([!^13])"
    .Replacement.Text = "\1 \3"
    .Execute Replace:=wdReplaceAll



End With

Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:0)

编程的红线应该是分配下载的'文本'和'引用'变量,比如说

Dim Txt As String
Dim Cit As String

Txt = "Whatever you scraped from tre website"
Cit = "Whatever else you scraped from the web"

完成后,您可以开始操作每个字符串,然后将它们放在您想要的文档中,可能位于当前选择的位置。

当您使用此方法时,您可能会遇到可以快速回答的个别问题。同时,避免使用On Error Resume Next,而不知道可能出现的错误以及您希望如何处理错误。