我正在尝试使用Microsoft Word中的粘贴和合并格式化宏。我经常从网站复制,然后从该网站粘贴到Word中。不幸的是,该网站的格式始终是:在Word中粘贴和合并格式化
文本
引文
我想要的格式为: “文本”
引用。
我的代码目前是
Sub Paste_Citation()
' Paste_Citation Macro
On Error Resume Next
Selection.PasteAndFormat (wdFormatSurroundingFormattingWithEmphasis)
Selection.TypeBackspace
Selection.TypeBackspace
Selection.TypeText Text:="."
End Sub
我无法弄清楚如何一)不具备文字和引文之间的一段空间,B)把括号中的文本。如果文本末尾没有句点,则格式化为“blah blah”。否则,“等等。”和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
我试图脱离你说的话,看着一些不同的功能来分割复制的值,但我坚持如何拆分剪贴板文本,但仍然合并格式与单词。 – broncos15
我仍然遇到报价问题,因为我无法弄清楚如何根据段落分割代码,但我至少能够删除文本和引文之间的段落分隔符。 – broncos15
看来你已经到达了我上面建议的最后一段。这是很好的进展。如果你认为这是个好建议,你应该接受并遵循它。您通过将答案标记为“已接受”来接受它。你可以通过以一种可以给出答案的方式提出一个新问题来追踪它。 – Variatus