当前位置: 首页 > news >正文

拷贝多个Excel单元格区域为图片并粘贴到Word

Excel工作表Sheet1中有两个报表,相应单元格区域分别定义名称为Report1Report2,如下图所示。

在这里插入图片描述

现在需要将图片拷贝图片粘贴到新建的Word文档中。

示例代码如下。

Sub Demo()Dim oWordApp As ObjectDim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")Dim rRpt1 As Range: Set rRpt1 = ws.Range("Report1")Dim rRpt2 As Range: Set rRpt2 = ws.Range("Report2")On Error Resume NextSet oWordApp = GetObject(Class:="Word.Application")If oWordApp Is Nothing ThenSet oWordApp = CreateObject(Class:="Word.Application")End IfOn Error GoTo 0oWordApp.Visible = TrueDim oDoc As Object: Set oDoc = oWordApp.Documents.AddrRpt1.CopyPicture Appearance:=xlScreen, Format:=xlPictureoDoc.Content.PasteoDoc.Content.InsertParagraphAfterrRpt2.CopyPicture Appearance:=xlScreen, Format:=xlPictureoDoc.Content.InsertParagraphAfteroDoc.Content.Paste' oDoc.SaveAs2 "C:\temp\report.docx"' oDoc.Close' oWordApp.Quit
End Sub

【代码解析】
第3行代码获取工作表对象。
第4~5行代码获取单元格区域Range对象。
第6~11行代码获取Word应用程序对象,如果没有打开的Word应用程序,那么将新建一个。
第12行代码显示Word应用程序(新建的Word应用程序处于隐藏状态)。
第13行代码新建Word文档。
第14行代码将报表1拷贝为图片。
第15行代码在Word文档中粘贴图片。
第16行代码插入段落分隔符。
第17~19行代码使用类似的方法处理报表2。
第20行代码保存新建的Word文档。
第21行代码关闭Word文档。
第22行代码关闭Word应用程序。

运行代码,新建Word文档如下所示,只有报告2,并没有报告1。

在这里插入图片描述

使用单步调试运行代码,发现第15行代码执行之后,Word文档中插入了报表1,但是第19行代码(oDoc.Content.Paste)执行时将文档全部内容替换为报表2,因此报表1从此消失。

找到了问题的根源,那么可以使用如下两个方案解决问题。

    ' 方法1With oDoc.ContentrRpt1.CopyPicture Appearance:=xlScreen, Format:=xlPicture.Paste.InsertParagraphAfterrRpt2.CopyPicture Appearance:=xlScreen, Format:=xlPicture.Characters.Last.PasteEnd With

【代码解析】
oDoc.Content.Characters.Last获取文档中的最后一个字符,报表2图片将粘贴在此位置,避免覆盖已有的文档内容。

    ' 方法2With oDoc.ContentrRpt1.CopyPicture Appearance:=xlScreen, Format:=xlPicture.Paste.InsertParagraphAfteroWordApp.Selection.endKey Unit:=6rRpt2.CopyPicture Appearance:=xlScreen, Format:=xlPictureoWordApp.Selection.PasteEnd With

【代码解析】
第5行代码将Word编辑游标定位到文档末尾,第7行代码使用Selection.Paste粘贴报表2。

运行修改的代码,结果如下图所示。

在这里插入图片描述

相关文章:

  • 破晓之啼:子安的语言奇迹与生命沉思
  • 一款基于 .NET 开源的多功能的 B 站视频下载工具
  • 基于 HTML5 Canvas 实现图片旋转与下载功能
  • 交换机工作原理(MAC地址表、VLAN)
  • BC9 printf的返回值
  • 《进制转换的终极指南:原理、方法与编程应用》
  • Kotlin-空值和空类型
  • FastMCP - 官方文档翻译
  • 《Spring 中 @Autowired 注解详解》
  • Manus AI: 冲破次元壁,让手写文字跨越语言鸿沟
  • 深度学习入门(五):学习相关的技巧
  • 蓝桥杯 18. 积木
  • 基于yolov11的打电话玩手机检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • 防止交叉验证中的数据泄露:提升模型在实际环境中的性能
  • React状态管理
  • 攻防世界-php伪协议和文件包含
  • 先滤波再降采样 还是 先降采样再滤波
  • JavaSE核心知识点01基础语法01-02(基本数据类型、运算符、运算符优先级)
  • 国产海光DCU及超算平台深度解析
  • Vue项目安全实践指南:从输入验证到状态管理的全方位防护
  • 建筑瞭望|融入自然的新泳池,治愈了中央公园的历史旧伤
  • 计划招录2577人,“国考”补录8日开始报名
  • 以色列计划“占领加沙”,特朗普下周中东行结束之际将是“机会窗口”
  • 青岛鞋企双星名人集团家族内斗:创始人发公开信指控子孙夺权
  • 农村青年寻路纪|劳动者的书信⑤
  • 热点问答丨新加坡人民行动党缘何再赢议会选举