将Excel单元格的图片保存到Word文档中
我的代码粘贴了一张单元格的图片 然后,它应该粘贴不适合第一页的其他单元格 “第二页”的图片无法粘贴将Excel单元格的图片保存到Word文档中,excel,vba,ms-word,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") O
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
Dim wdApp作为对象
作为对象的Dim wd
将sFil设置为字符串
出错时继续下一步
Set wdApp=GetObject(,“Word.Application”)
如果错误号为0,则设置wdApp=CreateObject(“Word.Application”)
错误转到0
设置wd=wdApp.Documents.Add“创建新文档”
wdApp.Visible=True
'更改下面的工作表和范围
ActiveSheet.Range(“a1:z43”).CopyPicture xlPrinter
wd.Range.Paste
wdApp.ActiveDocument.Range(0,0).插入中断类型:=wdSectionBreakNextPage
wdApp.ActiveDocument.Sections(2)
ActiveSheet.Range(“a43:z76”).CopyPicture xlPicture
wd.Range.Paste
'wd.SaveAs Filename:=“I:\'Files\RKG-COMMS\”&URNa&“-”&URNb&“.doc”
“关了
“退出
以下是结果-仅第一页这是应该粘贴的第二页
我很难测试你在做什么,但从逻辑上讲,我相信下面的方法应该有效,尽管可能有一个问题(请继续阅读) 请注意此代码如何使用单词
Range
对象作为新内容的目标。粘贴后,不确定docRange
是在粘贴内容之前,还是包含粘贴内容。如果它包含粘贴的内容,代码应该可以工作。如果它在粘贴内容之前,那么下一张图片将在第一张图片之前出现。在这种情况下,在docRange.Paste
之后立即重复行Set docRange=wd.Content
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运行,显然使用了后期绑定(没有对Word对象库的引用),所以它被声明为对象
如果使用了早期绑定(代码项目引用了libraray一词),那么最好将其声明为Word.Range。为了完整起见,我将Word对象数据类型(Word.Range
)包括在内,以便能够在帮助中研究对象及其属性
Set docRange = wd.Content
这将实例化Word.Range
对象,以包含文档的整个主体(wd
在目标Word文档的问题代码中实例化)
粘贴后,docRange
仍然指文档的全部内容,包括粘贴的内容。如果要立即执行分段和第二次粘贴操作,则会删除范围的内容。(想象一下,就像在Word中选择文本,然后键入:所选内容将替换为所键入的内容。为了避免这种情况,在键入之前按向右箭头键,以便新内容跟随所选内容。)
因此,范围是“折叠的”(如按箭头键)。然后插入分节符并执行下一个粘贴操作。看起来您使用的是后期绑定Word,而不是Option Explicit,这意味着您有一些空变量,您不知道这些变量是空的,因为您认为它们是Word常量:),而没有对Word库的引用,您需要声明并分配任何所需的常量,如wdSectionBreakNextPage
。否则,它们是空的变体。您能提供实际结果和所需结果的屏幕截图吗?请确保已启用非打印字符的显示。然后我们可以确定你想要什么。我想我从文本中理解了它(见我的编辑),但它不确定。。。您没有收到任何错误,对吗?@DavidZemens不幸的是,我正确地引用了它:(@Cindymister抱歉,我是stack的新手,一般来说是VBA的新手,希望您能在我的编辑和哪个部分中看到结果)这两个页面中有一个是从Excel粘贴为图片的?然后是整个页面的内容?将docRange变暗为Object'Word.Range Set docRange=wd.content-这些行的作用是什么?然后是为什么我需要重新指定对象来粘贴页面的第二部分