通过EXCEL中的VBA代码复制WORD文档的上下文和格式

时间:2016-06-22 05:59:37

标签: excel vba ms-word

EXCEL中,我有一些VBA代码用于打开Word文档A并将其内容从特定页面复制到新文档。目前,我可以复制其文本。我想知道如何复制contextformatting。以下是我目前的代码,我感谢任何建议!

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add

objWord.Visible = True
Set objSelection = objWord.Selection

'Prepare Document B
objDoc.SaveAs (Folderpath to Document B)

Set objTempWord = CreateObject("Word.Application")
Set tempDoc = objWord.Documents.Open(Folderpath to Document A)

'copy context from Document A        
With tempDoc.Application
     .Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Name:="2"
     .Selection.EndKey Unit:=wdStory, Extend:=wdExtend
     .Selection.Copy
End With

objSelection.TypeParagraph
objSelection.Paste
objSelection.InsertBreak Type:=wdSectionBreakNextPage
tempDoc.Close

objDoc.Application.Statusbar = False
objDoc.Save

1 个答案:

答案 0 :(得分:1)

这里也是如此,没有多余的额外Application对象,也没有使用Selection:

Dim objWord As Word.Application
Dim objDoc As Word.Document, newDoc As Word.Document
Dim r As Word.Range, r2 As Word.Range

Set objWord = CreateObject("Word.Application") 'or Set objWord = new Word.Application

Set objDoc = objWord.Documents.Open(FolderpathToDocumentA)
Set newDoc = objWord.Documents.Add
newDoc.SaveAs FolderpathToDocumentB

Set r = objDoc.GoTo(what:=wdGoToPage, which:=wdGoToAbsolute, Name:=2)
r.End = objDoc.Range.End

'copy context from Document A
r.Copy
newDoc.Content.InsertBreak Type:=wdSectionBreakNextPage
newDoc.Range(newDoc.Content.Start, newDoc.Content.Start).Paste
newDoc.Content.InsertBefore vbCrLf

newDoc.Save
objWord.Quit

这样做你需要的吗?