Word VBA:批量导出Visio对象为图片
目录
一、思路
1.遍历文档中的域fd
2.判断每一个域fd
3.二进制存储
二、示例代码
1.代码
2.运行效果
(1)示例文件
(2)复制代码-运行
(3)选择存储位置
(4)存储完成
(5)查看文件
三、注意
一、思路
因为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.代码
Sub 批量导出Visio图()Dim aDoc As DocumentDim fd As FieldDim aDos As ObjectDim k As LongDim fDia As FileDialogDim saveFolder As String'Dim fileType As StringDim fileName As StringDim t0 As Singlet0 = TimerSet aDoc = ActiveDocumentSet aDos = CreateObject("ADODB.STREAM")Set fDia = Application.FileDialog(msoFileDialogFolderPicker)With fDia.Title = "选择图片存储位置(文件夹):"If .Show ThensaveFolder = .SelectedItems(1)'fileType = Trim(InputBox("请输入支持的图片格式后缀(如png、jpeg、jpg、gif等):", "图片格式", "jpg"))For Each fd In aDoc.FieldsIf fd.Code Like "*EMBED Visio.Drawing.*" Thenk = k + 1fileName = saveFolder & "\" & k & ".emf"With aDos.Open.Type = 1.write fd.InlineShape.Range.EnhMetaFileBits.savetofile fileName.CloseEnd WithDebug.Print Format(k, "第0个Visio图片存储完成!")End IfNextEnd IfEnd WithSet aDoc = NothingSet aDos = NothingSet fDia = NothingMsgBox Format(k, "完成 共处理了0个Visio图片 用时:") & Timer - t0 & "秒"
End Sub
2.运行效果
(1)示例文件
(2)复制代码-运行
(3)选择存储位置
(4)存储完成
(5)查看文件
三、注意
Word VBA中通过【ADODB.STREAM】对象存储图片只支持【.emf】格式,需要【.jpg】格式需要借助其他API函数处理。此处没有进行转换。
可以将这些图片通过其他批处理方式,转换一下格式即可。
Word VBA:批量导出Visio对象为图片相关推荐
- Visio录制宏代码——重复批量导出600dpi的tiff图片
Visio录制宏,重复批量导出600dpi的tiff图片 因为论文修改需要,需要对3×3×4=363\times3\times4=363×3×4=36张图片反复修改调整,然后将图片依次导出为600dp ...
- 解决word中插入visio对象的图片大小修改问题
在论文中直接插入visio导出的png或其他格式的图片会很不清晰,我们可以在word中直接插入visio对象. 在"插入"栏目中选择"对象",下拉依旧选择&qu ...
- Word VBA批量格式转换:docx转pdf、doc、rtf、txt以及反向转换
有时候需要把大量的docx文件另存为其它格式,比如pdf.doc.rtf.txt,或者反向转换,可以用VBA批量处理.启动word,按下Alt+F11,打开Microsoft Visual Basic ...
- 去除Word中插入的Visio对象的空白
办法: 在Word中双击插入的Visio对象,即在Word中进入Visio的编辑模式 点击Visio对象,确定该对象被选中 按住ctrl键,把鼠标移到Visio页面边缘,会看到有图标显示边缘可以移动 ...
- 使用ImageMagick将eps批量导出为透明png图片
一.前言 后文的解释比较啰嗦,这里先上总结论:下载magick软件,在命令行使用下述两行代码: mogrify -density 120 -format png *.eps mogrify -tran ...
- 多个word vba批量替换文字(一个文件夹)
多个word批量替换word文字! Sub 替换N个word文档()Dim Dm As DocumentDim MyPath As StringDim MyName As StringDim N As ...
- Word VBA(批量复制Excel表格和Word表格到Word中)
Function Test() '使用双字典 SearchPath = FolderDialog("请选择文件夹") If SearchPath = & ...
- VBA应用笔记 -- 批量导出excel工作表中的图片
业务场景: 日常工作中,我们可能会遇到需要批量导出excel表中的图片的情况,按照网友的做法,批量导出excel中的图片主要有几种方法: 解压缩方法:可以通过将excel文件转成rar压缩文件,解压后 ...
- Word2019中Visio对象图片插入题注时自动删除标签与编号前的空格,编号后添加空格
问题引入 撰写论文时为了修改方便,通常以插入题注和交叉引用的方式来给图片标号,这样修改图片和图号后可以方便.自动地更新. 然而,Word在插入题注上从03到13一直没有针对中国用户优化. 插入题注的标 ...
最新文章
- Ceres入门——Ceres的基本使用方法
- C++ 函数参数 值传递与引用传递
- Swift3.0语言教程比较、判断字符串
- MySQL存储引擎和外键学习
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---32
- 8.1 文件查找local;find使用
- 倍增LCA code[vs]1036商务旅行
- 哲学到编程:思想的实例化
- python调用接口获取文件_python接口文件使用说明
- 喜庆红色C4D立体电商首焦模板|PSD分层格式,设计师大呼真香!
- 一个域名能申请多少个ssl_必须要有域名才能申请SSL证书吗?
- Linux替代Windows系统软件比拼
- java+创建metaq生产者_微服务架构【技术点4】windows下rocketMQ配置及java端生产者消费者配置-Go语言中文社区...
- 企业应该了解的ISO27001体系建设指导
- 蓝宝石vega56刷64bios及降压超频全过程
- LoRaWAN节点和网关接入阿里LinkWAN
- SCardTransmit 返回 SCARD_W_RESET_CARD
- VMware16 安装Mac 10.14系统/苹果系统
- 【python篇】python基础之--基本问题记录
- 网上学python靠谱吗?
热门文章
- SAP 总帐科目的批量传输
- 浏览器兼容性测试学习01
- Android Okhttp3基本使用
- 利用matlab软件求数列的中值,matlab求两个数列的方差
- 新浪微博新动作 以网络安全之名联合安全联盟
- 用脉冲星的脉冲周期测量宇宙的年龄
- 小学计算机社团活动展示,德州学院附属小学信息技术社团活动计划
- java操作图片为啥改了图片以后底片是红色的
- 用Python一键搭建Http服务器
- 【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知Advice注解(已附源码)