我的代码粘贴了单元格的图片。
然后应粘贴首页上不适合的其他单元格。
“第二页”的图片未粘贴。
Dim wdApp As Object
Dim wd As Object
Dim sFil As String
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then Set wdApp = CreateObject("Word.Application")
On Error GoTo 0
Set wd = wdApp.Documents.Add ' create a new document
wdApp.Visible = True
'change sheet and range below
ActiveSheet.Range("a1:z43").CopyPicture xlPrinter
wd.Range.Paste
wdApp.ActiveDocument.Range(0, 0).InsertBreak Type:=wdSectionBreakNextPage
wdApp.ActiveDocument.Sections (2)
ActiveSheet.Range("a43:z76").CopyPicture xlPicture
wd.Range.Paste
'wd.SaveAs Filename:="I:\'Files\RKG-COMMS\" & URNa & " - " & URNb & ".doc"
'wd.Close
'wd.Quit
答案 0 :(得分:1)
我很难测试您在做什么,但是从逻辑上讲,我相信以下内容应该可以工作,尽管可能存在一个问题(请继续阅读)...
请注意,此代码如何将Word Range
对象用作新内容的目标。粘贴后,不确定docRange
是粘贴内容之前还是包含粘贴内容。如果它包含粘贴的内容,则代码应该可以工作。如果在粘贴的内容之前,则下一张图片将在第一个图片之前。在这种情况下,请在Set docRange = wd.Content
之后立即重复行docRange.Paste
。
Set wd = wdApp.Documents.Add ' create a new document
Dim docRange as Object 'Word.Range
Set docRange = wd.Content
wdApp.Visible = True
'change sheet and range below
ActiveSheet.Range("a1:z43").CopyPicture xlPrinter
docRange.Paste
'Go to the end
docRange.Collapse 0 'wdCollapseEnd
docRange.InsertBreak Type:=wdSectionBreakNextPage
ActiveSheet.Range("a43:z76").CopyPicture xlPicture
docRange.Paste
在回答有关代码详细工作方式的评论时,对此进行了回应:
Dim docRange as Object 'Word.Range
声明一个对象变量来保存代码所使用的文档部分。由于问题中的代码从Excel运行,显然使用了 late-binding (没有对Word对象库的引用),因此将其声明为Object
。
如果使用的是早期绑定(代码项目引用了Word libraray),则最好声明为As Word.Range
。为了完整起见,我包括Word对象数据类型(Word.Range
),并可以在“帮助”中研究对象及其属性。
Set docRange = wd.Content
该实例化 Word.Range
对象以包含文档的整个主体({wd
在问题代码中实例化到目标Word文档)。 / p>
粘贴后,docRange
仍指文档的全部内容,包括粘贴的内容。如果要立即执行分节符和第二个粘贴操作,则会删除该范围的内容。 (想起来就像在Word中选择文本,然后输入:选择的内容将替换为输入的内容。为避免这种情况,请在输入之前按向右箭头键,以便新内容跟随所选内容。)>
因此,范围是“折叠的”(如按箭头键)。然后插入分节符,并执行下一个粘贴操作。