Word VBA:批量导出Visio对象为图片
一、思路
因为Word中的Visio对象也是Word中的域,所以在遍历的时候既可以遍历文档中的域(fields),也可以遍历 文档中的图片(inlineshapes)。本文是用遍历域的方法:
1.遍历文档中的域fd
2.判断每一个域fd
如果域代码中包含【EMBED Visio.Drawing.】,则说明是Visio对象,可以进行后续处理。
3.二进制存储
对于这个域的图片的二进制内容【fd.InlineShape.Range.EnhMetaFileBits】,使用【ADODB.STREAM】对象进行如下操作:
(1)以二进制方式打开【ADODB.STREAM】对象
(2)将这个域的图片的二进制内容【fd.InlineShape.Range.EnhMetaFileBits】写入(write)【ADODB.STREAM】对象
(3)将写入的内容存储为文件【savetofile】
(4)关闭【ADODB.STREAM】对象
二、示例代码
1.代码
2.运行效果
(1)示例文件

(2)复制代码-运行

(3)选择存储位置

(4)存储完成

(5)查看文件



三、注意
Word VBA中通过【ADODB.STREAM】对象存储图片只支持【.emf】格式,需要【.jpg】格式需要借助其他API函数处理。此处没有进行转换。
可以将这些图片通过其他批处理方式,转换一下格式即可。