复制并粘贴到新页面上

我正在尝试编写一个代码,将单个工作簿中多个工作表的内容复制到一个单词文档中。 我希望每个工作表的内容都在自己的页面上,但现在,我的代码只是复制和粘贴,而不是进入新的页面和粘贴。 我试过去文档的结尾,但它不工作…任何意见将是有帮助的。

Sub ToWord() Dim ws As Worksheet Dim Wkbk1 As Workbook Set Wkbk1 = ActiveWorkbook Application.ScreenUpdating = False Application.DisplayAlerts = False Application.EnableEvents = False For Each ws In ActiveWorkbook.Worksheets ws.Range("A1:A2").Copy Dim wdapp As Object Dim wddoc As Object Dim Header As Range Dim strdocname As String 'file name & folder path On Error Resume Next 'error number 429 Set wdapp = GetObject(, "Word.Application") If Err.Number = 429 Then Err.Clear 'create new instance of word application Set wdapp = CreateObject("Word.Application") End If wdapp.Visible = True 'define paths to file strdocname = "C:\Doc.doc" If Dir(strdocname) = "" Then MsgBox "The file" & strdocname & vbCrLf & "was not found " & vbCrLf & "C:\Doc.doc", vbExclamation, "The document does not exist " Exit Sub End If wdapp.Activate Set wddoc = wdapp.Documents(strdocname) If wddoc Is Nothing Then Set wddoc = wdapp.Documents.Open(strdocname) 'must activate to be able to paste wddoc.Activate wddoc.Range.Paste Next ws 'Clean up Set wddoc = Nothing Set wdapp = Nothing Application.ScreenUpdating = True Application.DisplayAlerts = True Application.EnableEvents = True End Sub 

你可以使用:

 wddoc.Range(i).Paste 

每幅图像后,我增加1。 贴着他们一个接一个。

或者更简单:

 wddoc.Range(wddoc.Characters.Count-1).Paste 

那么可能会变得更加复杂,并且在每个图像之间手动添加一个分页符,以确保每个页面都有一个新的页面:

 wddoc.Range(wddoc.Characters.Count-1).InsertBreak Type:=7 

https://msdn.microsoft.com/en-us/library/office/ff821608.aspx

编辑

首先,我错误地认为“wddoc.range”属性会在任何地方出现。 这不是真的。 你需要使用由帕尔默小姐提供的代码(并在下面复制)。

但是,还有一个我没有注意到的问题。 你的循环设置不正确。 您正在循环并不断重新打开单词doc。 您需要移动这些行:

 For Each ws In ActiveWorkbook.Worksheets ws.Range("A1:A2").Copy 

所以他们立即在wddoc.Range(wddoc.Characters.Count – 1)之上。粘贴

线。 这将导致循环正确执行,只打开文档一次。

另外(再次,每个帕尔默小姐),你想把这个:

 wddoc.Range(wddoc.Characters.Count - 1).Paste wddoc.Range(wddoc.Characters.Count - 1).InsertBreak (wdPageBreak)after the line: 

而不是你原来的“.range.paste”。

您的“select”行的另一个问题是,您没有指定您想要使用的应用程序。 这是Excel的默认select,因为它是从Excel运行的。

此代码假定您有一个没有足够页面的单词文档。 否则,你可能会使用你想要的代码,但目前还不清楚为什么你会有一个空白的Word文档与许多页面。 你仍然需要指定你想移动到下一页的应用程序,所以把“wdapp”。 在select线之前。

http://word.tips.net/T000120_Jumping_to_the_Start_or_End_of_a_Document.html