本帖最后由 生有涯知无涯 于 2020-6-23 15:35 编辑
由于本人有点强迫症,用Word做笔记时插入图片经常需要手动居中,比较麻烦,所以查阅资料后(MSDN、Excelhome等)写了个VBA脚本,已在Word2016和WPS2019测试通过。
脚本的功能为一键调整图片大小(锁定纵横比)和居中,由于Word把嵌入型图片当做一个字符对象处理,所以没有居中的选项,要单独处理。
代码和测试文档(含7种类型图片)已打包到蓝奏云:https://wwa.lanzouj.com/i3yyvdys1ij
顺便分享一个修改VBA编辑器背景的小工具,护眼必备:https://wwa.lanzouj.com/iXJzxdys5qb
[Visual Basic] 纯文本查看 复制代码
Sub Word图片批量等比例居中缩放()
Dim i '图片序号
Dim oldHeight '原图高度
Dim oldWidth '原图宽度
Dim newHeight '设置高度
Dim newWidth '设置宽度
Dim pageWidth '页面宽度
On Error Resume Next
newWidth = CentimetersToPoints(15)'单位为厘米,根据自己需要设置图片宽度。页面大小为A4时页面宽度为21厘米
pageWidth = ActiveDocument.PageSetup.pageWidth
'========================================处理非InlineShape图像===========================================
For i = 1 To ActiveDocument.Shapes.Count
With ActiveDocument.Shapes(i)
oldWidth = .Width
oldHeight = .Height
newHeight = newWidth / oldWidth * oldHeight '等比例缩放
.Width = newWidth
.Height = newHeight
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage '左右居中
.Left = (pageWidth - newWidth) / 2
End With
Next
'========================================处理非InlineShape图像===========================================
'========================================处 理 InlineShape图像===========================================
For i = 1 To ActiveDocument.InlineShapes.Count
With ActiveDocument.InlineShapes(i)
oldWidth = .Width
oldHeight = .Height
newHeight = newWidth / oldWidth * oldHeight 'InlineShape无居中选项,只能调整大小
.Width = newWidth
.Height = newHeight
End With
Next
'========================================处 理 InlineShape图像===========================================
End Sub
|