ChatGPT搞砸了~,如何使用VBA导出Word文档中的图片
今年大火的ChatGPT似乎无所不能,但是它的确不是万能的,咱们来试试。
提供的代码根本无法运行,继续问,换了个代码,非常不幸的是–还是不能用。
Word VBA中并没有内置的方法可以直接导出图片,ChatGPT没有正确的答案也是可以理解的。
示例代码如下。
Sub ExportInlineShps()Dim intIdx As IntegerDim strPath As StringWith ActiveDocumentIf .InlineShapes.Count > 0 ThenstrPath = .Path & "\"For intIdx = 1 To .InlineShapes.CountsSaveImg .InlineShapes(intIdx), strPath & intIdx & ".png"NextElseMsgBox "文档中没有图片"End IfEnd With
End Sub
【代码解析】
第5行代码判断活动文档中是否存在图片(InlineShape
)。
如果不存在图片,第11行代码将显示提示消息框。
如果存在图片,第11行代码将显示提示消息框。
第6行获取活动文档的目录。
第7~9行代码调用sSaveImg
过程将图片保存为PNG图片。
Sub sSaveImg(ByVal objShp As InlineShape, ByVal strFullPath As String)Const TAG_S = "<pkg:binaryData>"Const TAG_E = "</pkg:binaryData>"Dim objNode As Object 'MSXML2.IXMLDOMElementDim lngStart As Long, lngEnd As LongDim bytImage() As ByteDim strXML As StringDim rngShp As RangestrXML = objShp.Range.WordOpenXMLlngStart = InStr(strXML, TAG_S)If lngStart = 0 ThenMsgBox "无法定位图片数据"Exit SubElselngStart = lngStart + Len(TAG_S)lngEnd = InStr(lngStart, strXML, TAG_E)strXML = Mid$(strXML, lngStart, lngEnd - lngStart)Set objNode = CreateObject("MSXML2.DOMDocument").createElement("b64")objNode.DataType = "bin.base64"objNode.Text = strXMLbytImage = objNode.nodeTypedValueOpen strFullPath For Binary As #1Put #1, 1, bytImageClose #1Set objNode = NothingEnd If
End Sub
【代码解析】
第一个参数为InlineShape
,即Word中的图片,第二个图片是图片文件的全路径。
第2~3行代码定义图片对象XML起始标签和结束标签。
第9行代码获取图片对象的XML代码。
第10行代码查找XML起始标签。
如果无法定位XML起始标签,第12行代码将显示提示消息框。
如果成功定位XML起始标签,第13行代码将获取图片对象(Base64编码)的起始位置。
第16行代码查找XML结束标签。
第17行代码提取图片对象(Base64编码)的XML代码。
第18行代码创建MSXML2.DOMDocument
对象,并增加一个节点。
第19行代码设置数据类型为bin.base64
。
第20行代码将图片对象(Base64编码)的XML代码赋值给节点。
第21行代码读取结点的nodeTypedValue
属性,并保存在Byte
数组中。
第22~24行代码将图片对象保存为硬盘文件。
第25行代码释放对象变量占用的系统资源。
ChatGPT搞砸了~,如何使用VBA导出Word文档中的图片相关推荐
- 通过VBA导出word文档中的图片
一.问题重述: 工作中,经常有同事把新闻的照片贴在word文档中发过来,需要把照片一张张的转存成图片. 二.原始方法: 在文档中的照片上,右键,图片另存为-- 把文档,按F12,另存为网页文件,然后在 ...
- 【Python】批量导出word文档中的图片、嵌入式文件
Python 批量导出word文档中的图片.嵌入式文件 需求 学生试卷中的题目有要提交截图的,也有要提交文件的,为了方便学生考试,允许单独交或者嵌入Word中提交,那么事后如何整理学生的答案?单独提交 ...
- 5导出word_妙招技法 | 教你如何快速导出Word文档中的图片
关注[新精英充电站]能力提升看得见! 我们在翻阅一些比较好的Word文档时,经常想要将文档中用到的一些好的图片素材保留下来,但却苦于不知道怎么保存,最后只有无奈放弃. 其实,Word中提供有导出图片的 ...
- vue 导出word文档(包括图片)
vue 导出word文档(包括图片) 1.打开终端,安装依赖 -- 安装 docxtemplater npm install docxtemplater pizzip --save-- 安装 jszi ...
- WORD文档中插入图片(1)
(转) 在WORD文档中插入图片有两种方法:一种是添加到文档的文本层(嵌入型版式):一种是添加到文档的图形层(其他版式). 文本层的图片是不可以设置版式的,而图形层的版式是可以设置的,但只能是 ...
- C#操作Word(五)——在Word文档中插入图片
实例说明 在Word文档的使用过程中,我们可以轻松的向文档中插入图片信息,那么,怎样使用C#向Word文档中插入图片呢?本实例将会介绍一种方法,可以方便的实现上述功能.实例运行效果如图1所示. 图 ...
- Python3-word文档操作(八):提取word文档中的图片方式一-利用docx库
1. 简介: 要获取word文档中的图片文件.思路就是先解压,再查找.python中,下面两个库都可以实现这个功能: (1)zip库 (2)docx库 zip库: 上一篇博文已经提过,word本质上也 ...
- C# 提取Word文档中的图片(用Spire)
C# 提取Word文档中的图片 图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了,今天这篇文章主要是实现使 ...
- C# 提取Word文档中的图片
图片和文字是word文档中两种最常见的对象,在微软word中,如果我们想要提取出一个文档内的图片,只需要右击图片选择另存为然后命名保存就可以了.今天这篇文章主要是实现如何使用C#从word文档中提取图 ...
最新文章
- 诚意租房网blog2
- hp-ux mysql_HP-UX安装MySQL
- [初级]Java中的switch对整型、字符型、字符串的具体实现细节
- 1.0 算法本机调试方法
- 胃癌2019csco指南_2019 CSCO胃癌诊疗指南精华来了!
- ENSP配置 实例五 RIP配置
- 特斯拉得克萨斯超级工厂正式开业 计划明年开始生产电动皮卡
- unity 关闭自己脚本_太可了!这些领域可以把Unity玩的那么好,带你开启新世界...
- C/C++ inline 函数
- (23)Linux下Clion中搭建opencv环境
- BLE芯片商总结和市场趋势分析【选型使用,建议收藏】
- 自制的一个小地图生成器
- 微博奥运营销策略复盘,探索双十一微博品牌营销新手法!!
- 2023年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
- 工信部通报今年首批问题App 当当、1药网私自收集个人信息 被通报的16款App名单
- axios 官方指南翻译
- jQuery之datetimepicker控件(时间单位精确到分钟)
- 专 业 学 习 成 果
- 手机php网站开发工具,4款好用的网站开发工具推荐
- component-kv设计与实现