目录
摘要:... 1
宏的使用方法:... 1
代码部分:... 2
代码1:按照第一张图片的尺寸对文档内所有图片进行修改... 2
代码2:按照给定像素批量裁剪文档内所有图片.. 3
结语:... 4
本篇文章利用Word自带的宏,帮助有需要的朋友解决Word图片排版问题。只包含两项简单功能,代码1:按照第一张图片的尺寸对文档内所有图片进行修改;代码2:按照给定像素批量裁剪文档内所有图片。
在视图菜单栏中的倒数第二个选项卡可以找到“宏”命令,当然,直接在搜索框搜索也是可以的。
单击下拉箭头→查看宏,进入宏选项卡
在宏名下方一栏为你的宏起个名字,单击创建即可。
注意:在Word已有宏命令的状态下,宏名一栏会自动显示已有宏命令的名称,若不进行更改,会弹出如下提示框,点击“是”会覆盖原有宏文件,“否”则无法创建。
所以为新宏起个名字是很重要的。
成功创建后会进入如下界面:
把你要用的代码粘贴在sub宏()与End Sub之间,然后关闭这个页面就可以。
如代码1的粘贴结果:
是的,你没看错,直接关闭就好,宏文件具有自我保存功能,每一个对代码的修改都会实时编译,你完全不需要担心保存问题。
再次打开宏选项卡,选中你要执行的宏,单击运行,了事儿!
可以直接复制使用
Dim n
n = 1
Dim picwidth
Dim picheight
picheight = ActiveDocument.InlineShapes(n).Height '获取第一张图片高
picwidth = ActiveDocument.InlineShapes(n).Width '获取第一张图片宽
On Error Resume Next '忽略错误
For Each iShape In ActiveDocument.InlineShapes '循环
iShape.Height = picheight * 1 '设置高度为1倍
iShape.Width = picwidth * 1 '设置宽度为1倍
Next iShape
注意:此处代码在使用前需要做微量修改
修改裁剪像素量
For Each iShape In ActiveDocument.InlineShapes
With iShape.PictureFormat
.CropTop = 0 '顶部裁剪像素量
.CropBottom = 54 '底部裁剪像素量
.CropLeft = 0 '左侧裁剪像素量
.CropRight = 0 '右侧裁剪像素量
End With
Next iShape
那么问题来了,我从哪儿获取这些参量?
很简单,随便打开一张图片,查看更多信息,其中会有尺寸条目,做某一方向上的裁剪后,再次查看,两者的差值就是该方向上的裁剪像素量。
如我这里,我做了底部裁剪,1080-1026=54,于是除了底部设置为54外,其他均为0。
1.使用python等脚本或现有程序可以轻易的完成裁剪任务。
2.个人实践证明,录制宏无法录制针对图片的大小修改、裁剪等操作。
3.编写过程中一直在尝试代码2的一键式操作,如根据第二张图片与第一张图片的像素差来完成其他所有图片的裁剪,结果证明不可行,其中存在我两个无法解决的问题。
第一,word自带裁剪功能执行后,图片会产生Y轴位置偏移,使用宏无法获取并精确计算偏移后的正确裁剪量;裁剪结果与预期结果存在较大误差。
第二,宏裁剪依赖的是对指定方向上像素量差的精确计算,在所有方向同时发生裁剪的情况下,缺少参照物,无法准备配对像素量与裁剪方向。
欢迎大家反馈问题或不吝赐教。