从其他文档粘贴时,如何防止样式被引入到目标文档中?
How to prevent styles from being introduced into the destination document when pasting from other documents?
我已经为我的同事设置了一个 MS Word 文档 (.docx),以使用样板文本和整齐分类的样式以从样式库中进行选择。问题是,他们经常从其他文档粘贴,从而将新样式引入模板。通过格式限制将它们限制为几种样式是不可行的,因为这也会禁用字体格式。以下代码(部分摘自 this question)有点像我想要的,但是否有更好的选择?
Sub EditPaste()
'PURPOSE: Prevent styles from other documents from being introduced into this document.
Dim k As Long
k = ActiveDocument.Styles.Count
Selection.Range.Paste
If k <> ActiveDocument.Styles.Count Then
ActiveDocument.Undo
On Error GoTo F
Selection.PasteSpecial Link:=False, _
DataType:=wdPasteText, Placement:=wdInLine, _
DisplayAsIcon:=False
Exit Sub
F: MsgBox ("An error has occurred.")
End If
End Sub
我不会拦截标准的粘贴命令。粘贴表格或字段等格式化内容将不起作用。相反,使用具有替代键组合的宏,例如 Alt + V 到 运行 宏,如下所示:
Sub PasteUnformattedText()
On Error GoTo ClipboardNotText
Selection.PasteSpecial DataType:=wdPasteText
Exit Sub
ClipboardNotText:
Err.Clear
On Error GoTo ClipboardNotUnicodeText
Selection.PasteSpecial DataType:=22 'Paste Unicode Text
Exit Sub
ClipboardNotUnicodeText:
Selection.Paste
Err.Clear
End Sub
我已经为我的同事设置了一个 MS Word 文档 (.docx),以使用样板文本和整齐分类的样式以从样式库中进行选择。问题是,他们经常从其他文档粘贴,从而将新样式引入模板。通过格式限制将它们限制为几种样式是不可行的,因为这也会禁用字体格式。以下代码(部分摘自 this question)有点像我想要的,但是否有更好的选择?
Sub EditPaste()
'PURPOSE: Prevent styles from other documents from being introduced into this document.
Dim k As Long
k = ActiveDocument.Styles.Count
Selection.Range.Paste
If k <> ActiveDocument.Styles.Count Then
ActiveDocument.Undo
On Error GoTo F
Selection.PasteSpecial Link:=False, _
DataType:=wdPasteText, Placement:=wdInLine, _
DisplayAsIcon:=False
Exit Sub
F: MsgBox ("An error has occurred.")
End If
End Sub
我不会拦截标准的粘贴命令。粘贴表格或字段等格式化内容将不起作用。相反,使用具有替代键组合的宏,例如 Alt + V 到 运行 宏,如下所示:
Sub PasteUnformattedText()
On Error GoTo ClipboardNotText
Selection.PasteSpecial DataType:=wdPasteText
Exit Sub
ClipboardNotText:
Err.Clear
On Error GoTo ClipboardNotUnicodeText
Selection.PasteSpecial DataType:=22 'Paste Unicode Text
Exit Sub
ClipboardNotUnicodeText:
Selection.Paste
Err.Clear
End Sub