OFFICE的VBA编程功能其实是蛮强大的,而VB的语法简单,学起来也很容易上手,如果做过OLE编程的对OFFICE的对象结构有了解就更容易了。利用VBA我们可以做很多批量处理的事,昨天刚好用它解决了个问题,这里把过程记录下供参考,应该对VBA新手会有帮助,熟手就不用看了。
昨天遇到的情况是,用Office2007从本地打开带图片的html并另存为word doc文档时,WORD把图像保存为链接而且不保留快照,这样在其它机器上打开时就会看不到图片,只看到一个“无法显示链接的图像,该文件可能已被移动、重命令或删除”的提示:
在WORD中尝试了很多办法,另存为MHT、另存为HTML再复制粘贴回来、存为旧版DOC、另存为RTF,都不能把图片一起保存,也找不到相应的选项。在网上查找了半天,找不到好的解决办法。重新插入图片可以解决,但由于文档较多,每个文档的图片有好几十个,且分布在不同的目录下,一个个去修改会非常麻烦。
县城的办法找不着,接下来就只好从农村出发,自己动手解决了。首先,利用WORD的宏录制功能,搞清楚插入图像和链接图像的区别。我录制了一个宏,在录制过程中分别以插入、链接、插入并链接的方式插入三个不同图:
停止录制之后,编辑之,可看到以下脚本:
很显然,在插图片Selection.InlineShapes.AddPicture时,“SaveWithDocument:=False”这个参数是导致图片不保存的罪魁祸首。
再进一步查帮助,发现InlineShape和Shape都有一个LinkFormat对象,而LinkFormat对象中就有SavePictureWithDocument属性,因此我们我只要把文档中的图像遍历一下,把这个属性都设置掉就能解决问题了。原理很简单,接下来我们就来实现它。
打开要处理的DOC文件,按ALT+F11进入VBA编程界面,在左边工程树上选中我们的文档,右键插入一个用户窗体:
在窗体上放一个按钮:
然后双击它生成点击事件函数,并在事件中编写代码,遍历所有图片对象,判断并设置是否保存的属性:
需要注意的是,有些图片对象可能没有LinkFormat属性,因此代码中要有判断是否为空的语句。
接下来按F5运行,显示用户窗体:
点击按钮,运行结果如下图:
关闭用户窗口,这时所有图片已经会随WORD文档一起保存了。
最后还要清理一下,回到VBA编程界面,把插入的用户窗体删除,关闭VAB编程窗口,保存退出。这时把文档拷到其它机器上也能看到图片了。
补充说明一点,如果有很多个文档要执行相同的操作,可专门新建一个叫“链接图像处理.doc”的文档来保存用户窗体和代码,我们的代码中处理的是ActiveDocument,因此只要同时打开要处理的文件和这个“链接图像处理.doc”文档,就能编写一次处理所有文件了。
分享到:
相关推荐
VBA编程API帮助文档,操作Word。用于VBA编程学习参考帮助文档。以及Jacob操作参考文档
功能:把一个文件夹下面的word文档按原文档的格式批量合并成一个word文档。 准备工作 把 合并文件.docm和需要合并的word文档(例如:测试用的文档1.docx、测试用的文档1.docx)放入一个文件夹里面 调用宏方法 打开...
Word文档VBA入门到精通(200页).zip
VBA_Word编程帮助手册(CHM版本).chm VBA_PowerPoint编程帮助手册(CHM版本).chm VbA_Access_Excel编程帮助手册(CHM版本).chm VBA_OWS10编程帮助手册(CHM版本).CHM VBA_Outlook编程帮助手册(CHM版本) .chm VBA_...
利用VBA语言将同一文件夹中的多个Word文档合并到一个新的Word中,使用简单快捷。
操作Word文档.zip源码EXCEL VBA宏编程Excel VBA实用技巧范例下载操作Word文档.zip源码EXCEL VBA宏编程Excel VBA实用技巧范例下载操作Word文档.zip源码EXCEL VBA宏编程Excel VBA实用技巧范例下载操作Word文档.zip源码...
【免费下载】ExcelVBA和WordVBA教程.rar
VBA编程资料 For Word
利用VBA合并多个word文档到一个文档中,操作说明在文档中
VBA word 调整文档格式 宏 模块 截取自别人的代码,请需要者参考
VBA编程VBA编程VBA编程VBA编程VBA编程VBA编程VBA编程
Word 2013 VBA 帮助文档
使用VBA提取文件夹内所有word文档中的表格数据
Excel VBA典型实例大全:通过368个例子掌握 高清PDF分卷3 ...适合需要用Excel解决复杂问题,或者准备利用Excel VBA技术开发Excel应用程序的读者,也适合大中专院校的学生阅读,还可作为VBA的培训教材。
ACCESS_VBA编程.pdf:学习步骤循序渐进!
VBA编程API帮助文档,操作Excel。用于VBA编程学习参考帮助文档。以及Jacob操作参考文档
数据库原理及应用( Access2003) 第9章 VBA数据库编程 第9章 VBA数据库编程 9.1 数据库引擎及其接口 9.2 数据访问对象 9.2.1 DAO模型结构 9.2.2 主要的DAO对象 9.2.3 利用DAO访问数据库 9.3 ActiveX数据对象 9.3.1 ...
Excel VBA典型实例大全:通过368个例子掌握 高清PDF分卷2 ...适合需要用Excel解决复杂问题,或者准备利用Excel VBA技术开发Excel应用程序的读者,也适合大中专院校的学生阅读,还可作为VBA的培训教材。
ExcelVBA编程实例(150例)
中文版Excel 2010高级VBA编程宝典(扫描版) -----------------------------...如果你已经拥有使用Excel的丰富经验,可以借助《中文版Excel 2010高级 VBA编程宝典》成为一位Excel专家。中文版Excel 2010高级VBA编程宝典》