打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
多图片的Word文档减肥
多图片的Word文档减肥
2011-04-25 9:58

多图片的Word文档减肥(特别适用于Visio图片)
我在日常工作中,大部分的Word文档都会配有很多图片。包括例如Visio绘制的UML图,界面截图。
图多了之后,Word文件会很大。以前,对这类Word文档减肥,我都是采用图片压缩:

选中文档中一幅图片
右键-设置图片格式-图片-压缩-选“文档中所有图片”-更改分辨率为“Web/屏幕”-下边全选中
点确定。
但是这种方法只对截图和粘贴进来的图片文件有效,对Visio这种ole对象无效。
于是又发现了这种方法对Visio图减肥(Word2003可用,2000不可):

选中一幅Visio插图
Ctrl+X 剪切
菜单-编辑-选择性粘贴(Edit - Paste special)
选“图片(PNG)”格式。
对每一幅Visio图片都如此操作,保存后,Word文档显著变小。
PNG是一种无损压缩格式,适合于保存有大面积色块的图像,例如UML图和软件屏幕截图。这个性质类似于GIF,但是效果更好。而且根据我试验的结果,把Visio图形按上述办法转换为GIF效果很差,线条变得断断续续。而选用PNG效果不错,但是要注意先手动将Visio图调整到所需要的大小,转换为PNG后再改变大小的话效果也会变差。

对于这种大量重复性的机械劳动,当然要让电脑自己来完成。只需用VBA,遍历文档中的Visio图形,剪切,选择性粘贴为PNG即可。

通过查看Word的VBA Reference和调试,知道了Word文档中的Visio属于InlineShape而不是Shape,可以用ActiveDocument.InlineShapes得到所有InlineShape的集合。但是InlineShape有很多种,以他们的Type属性区分,包括:

wdInlineShapeEmbeddedOLEObject
wdInlineShapeHorizontalLine
wdInlineShapeLinkedOLEObject
wdInlineShapeLinkedPicture
wdInlineShapeLinkedPictureHorizontalLine
wdInlineShapeOLEControlObject
wdInlineShapeOWSAnchor
wdInlineShapePicture
wdInlineShapePictureBullet
wdInlineShapePictureHorizontalLine
wdInlineShapeScriptAnchor

从名字来看,wdInlineShapeEmbeddedOLEObject 和wdInlineShapePicture 类型应该被转换,其它的似乎不宜转换为PNG。

再找到PasteSpecial方法,它通过一个参数DataType来设定粘贴的类型

wdPasteBitmap
wdPasteDeviceIndependentBitmap
wdPasteEnhancedMetafile
wdPasteHTML
wdPasteHyperlink
wdPasteMetafilePicture
wdPasteOLEObject
wdPasteRTF
wdPasteShape
wdPasteText

这里边竟没有PNG!……先蒙一个试试,在程序中写:
    Selection.PasteSpecial DataType:=wdPastePNG
没有效果。嗯,我先手动做一遍,录一个宏,看看Word是怎么用VBA来完成的。
结果发现,DataType被直接设成了14,没有使用常量。
好,那我也这么写。这是最后的代码,存到了Normal.dot中:

Sub ConvertAllVisioToPNG()
    For Each oneShape In ActiveDocument.InlineShapes
        If oneShape.Type = wdInlineShapeEmbeddedOLEObject Or _
        oneShape.Type = wdInlineShapePicture Then
            oneShape.Select
            Selection.Cut
            Selection.PasteSpecial DataType:=14
        End If
    Next
End Sub

[添加方法]
Word中Alt+F11打开VBA编辑器,左边选Normal - Microsoft Word对象 - 双击ThisDocument。右边粘贴入上边的代码。保存
[使用方法]
Word中Alt+F8打开“宏”对话框,选择"ConvertAllVisioToPNG",点运行,看到Word一个接一个的对Visio图形做操作。稍等片刻,完毕后保存即可。
[使用限制]
被转换的Visio图形,不能在Word中双击编辑了。(这是一定的)
可能有些你不想转的图形也会被转换掉,例如Word中的艺术字。这个没仔细研究,但是艺术字在Word中和插入的图片文件一样,都是InlineShape而且类型是wdInlineShapePicture,不知有没有别的属性可以区分开。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Word文档转图片 | 原来Word文档转换成PNG图片格式这么简单
如何将多个 Word 文档合并为一篇?
如何把word里面的图片导出来
png图片转Word文档怎么转?
三角板论坛
Visio 2007 图片裁剪问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服