我正在尝试编写一个代码,将单个工作簿中多个工作表的内容复制到一个word文档中。我希望每个工作表的内容都在它自己的页面上,但是现在,我的代码只是复制和粘贴彼此而不是进入新页面并粘贴。我已经尝试过到文档的末尾,但它没有工作......任何建议都会有所帮助。
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
答案 0 :(得分:2)
你可以使用:
wddoc.Range(i).Paste
在每张图像后将i递增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
答案 1 :(得分:0)
修改强>
首先,我错误地假设" wddoc.range"属性将在光标所在的位置获得。这不是真的。您需要使用Miss Palmer提供的代码(并在下面复制)。
然而,还有一个我最初没有注意到的问题。您的循环设置不正确。您正在循环并不断重新打开doc这个词。你需要移动这些行:
For Each ws In ActiveWorkbook.Worksheets
ws.Range("A1:A2").Copy
这样他们就在上方 wddoc.Range(wddoc.Characters.Count - 1).Paste
线。这将导致循环正确执行,并且只打开一次doc文字。
另外(再次,根据帕尔默小姐),你想把它放在:
wddoc.Range(wddoc.Characters.Count - 1).Paste
wddoc.Range(wddoc.Characters.Count - 1).InsertBreak (wdPageBreak)after the line:
而不是" .range.paste"你最初的。
你的"选择"的另一个问题line是您没有指定要使用的应用程序。这是默认使用Excel的选择,因为它是从Excel运行的。
此代码假定您的Word文档没有足够的页面。否则你可能会使用你想要的代码,但是不清楚为什么你会有一个包含很多页面的空白word文档。您仍然需要指定要移至下一页的应用,因此请输入" wdapp。"在选择线之前。
http://word.tips.net/T000120_Jumping_to_the_Start_or_End_of_a_Document.html