加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VBA批量修改Word文档图片尺寸

(2018-03-09 20:01:25)
标签:

word

分类: 科研文章
按理说需求很常规了,经常碰到从网页中复制下来的文章所带的图片宽度超过A4尺寸。百度经验中有条用宏一次性设置图片尺寸的:https://jingyan.baidu.com/article/92255446885460851648f4f9.html;
我自己也在知乎上写过一条答案,https://www.zhihu.com/question/23242989/answer/140144565, 但先用Python转成HTML操作图片文件后再倒回去简直太麻烦了。刚才研究了上述VBA代码,查下两个概念:
(1)word文档中inlineshape和普通shape有啥区别?
(2)已有Each-Next循环,VB基础语法中If判断与逻辑比较
然后修改如下,只修改超宽的图片到A4,原来的小图尺寸不变。
'===================================
Sub 批量设置图片大小()
'
' Macro 宏
'
'
Myheigth = 20
Mywidth = 18
On Error Resume Next '忽略错误
For Each iShape In ActiveDocument.InlineShapes
If iShape.Width > 28.345 * 18 Then '判断图片是否超宽
iShape.Height = 28.345 * Myheigth '设置图片高度为任意cm
iShape.Width = 28.345 * Mywidth '设置图片宽度
End If
Next

For Each Shape In ActiveDocument.Shapes
If Shape.Width > 28.345 * 18 Then '判断图片是否超宽
Shape.Height = 28.345 * Myheigth '设置图片高度为任意cm
Shape.Width = 28.345 * Mywidth '设置图片宽度
End If
Next
End Sub
===============================
https://www.zhihu.com/question/52908434 这里也有一段可以参考:
Sub 批量图片大小()
Dim iSha As InlineShape
For Each iSha In ActiveDocument.InlineShapes
  If iSha.Type = wdInlineShapePicture Then
   iSha.LockAspectRatio = msoFalse '不锁定纵横比 
iSha.Width = CentimetersToPoints(21) '宽21CM 
iSha.Height = CentimetersToPoints(29.7) '高29.7CM 
End If 
Next 
End Sub
=======================================
参考:
http://www.cnblogs.com/dt520/p/5696836.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有