将Excel单元格的图片保存到Word文档中

时间:2019-09-25 11:24:12

标签: excel vba ms-word

我的代码粘贴了单元格的图片。

然后应粘贴首页上不适合的其他单元格。

“第二页”的图片未粘贴。

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

这是结果-仅第一页
enter image description here

这是应该粘贴的第二页
enter image description here

1 个答案:

答案 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中选择文本,然后输入:选择的内容将替换为输入的内容。为避免这种情况,请在输入之前按向右箭头键,以便新内容跟随所选内容。)

因此,范围是“折叠的”(如按箭头键)。然后插入分节符,并执行下一个粘贴操作。

相关问题