新浪博客

[转载]用VBA批量处理Word中嵌入式图片

2018-04-05 17:16阅读:
原文作者:LW_喆

今天接到一个任务,将报告中所有图片加边框。报告共有约490张图片,手动一张张处理将耗时太长。搜索网上介绍的批量选中图片方法,但是都是用于非嵌入式图片或者图形。由于插入报告的图片均默认为嵌入式,若先将所有图片调整为非嵌入式并不现实,并且非嵌入式图片不易排版,于是采用VBA代替人手处理。
用VBA为批量嵌入式图片输入边框,关键是自动找出文档中所有嵌入式图片,其中有关键的Inlineshape(s)对象(集),它是WordVBA中代表文档、区域或选定内容的嵌入式图形(集)。另外要输入边框则使用到Borders边框对象集。以下用一个简单的例子介绍其中的过程和代码,为以下两张图片插入边框。


[转载]用VBA批量处理Word中嵌入式图片
一、创建宏
菜单栏 —— 开发工具 —— “宏”
[转载]用VBA批量处理Word中嵌入式图片

创建“宏”后点击编辑,进入VBA代码编辑界面,编辑宏功能。
二、编辑宏
在代码编辑界面中,输入代码
[转载]用VBA批量处理Word中嵌入式图片
具体代码如下:
Sub picture()
Dim tol_shaps As Integer
Dim i As Integer
tol_shaps = ActiveDocument.InlineShapes.Count
For i = 1 To tol_shaps
With ActiveDocument.InlineShapes(i)
With .Borders(wdBorderTop)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth050pt
End With
With .Borders(wdBorderBottom)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth050pt
End With
With .Borders(wdBorderLeft)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth050pt
End With
With .Borders(wdBorderRight)
.LineStyle = wdLineStyleSingle
.LineWidth = wdLineWidth050pt
End With
End With
Next i
End Sub
(为查看文档中共有多少嵌入式图形,或检查代码是否正确,可在tol_shaps = ActiveDocument.InlineShapes.Count”该行下面添加“MsgBox tol_shaps”代码,以显示嵌入式图形总数
其中Borders(wdBorderTop)返回其中的Border对象,即Borders代表整个边框,而Border代表整个边框中其中一边的边框线(Inlineshapes对象集合与Inlineshape对象的关系类似),而形如wdBorderTop、wdBorderLeft等为常量符号,用于标识指明需返回的是哪一边的边框。而LineStyle和LineWidth则为Border对象的属性,即代表边框线的线型和线宽,其中wdLineStyleSingle、wdLineWidth50pt等亦是常量符号,用于标识指明采用的线型(如wdLineStyleSingle为单实线,wdLineStyledouble为双实线)及线宽(wd**50pt代表50磅,还有wd**25pt代表25磅或其中),所有相关的常量符号都会在输入代码过程中会弹出提示选择。
三、运行“宏”
保存上述VBA代码后,可直接在代码界面按“F5”运行,或者返回word文档“宏”界面,运行刚才创建并编辑后的“宏”,即计算机自动为文档中所有嵌入式图片添加。(经过实际测试,上述代码中只要有上、下、左、右其中一处边框命名,即只输入其中一个With.Borderswd***)图片即会显示四边边框。但为确保完整性,这里将四边边框的代码也列出)。 [转载]用VBA批量处理Word中嵌入式图片
小结:
上面简单的代码,利用了WordVBA中的代表嵌入式图形的Inlineshapes对象集合,找到文档中所有嵌入式图片,从而可以自动地批量逐一处理。除了上述讲到利用Borders对象集合输入图片边框,还可以举一反三地使用其他对象如ScaleHeight、ScaleWidth等对象进行图片批量缩放或其他操作。而且Inlineshapes代表嵌入式图形,意味着它不只是代码图片,还可以用于插入Word文档中的Visio图对象等。总之利用VBA可自动快速地进行批量处理,减少人手长时间重复操作。

我的更多文章

下载客户端阅读体验更佳

APP专享