Word 利用 VBA 批量设置图片格式
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Word 利用 VBA 批量设置图片格式相关的知识,希望对你有一定的参考价值。
批量设置图片格式
Sub setShapeStyle()
On Error Resume Next
Dim myShape As InlineShape
' 如果没有名叫“图片”的样式,提示用户创建
Dim imgStyle As Style, imgStyleName As String
imgStyleName = "图片"
Set imgStyle = ActiveDocument.Styles(imgStyleName)
If imgStyle Is Nothing Then
MsgBox "请先创建样式【" & imgStyleName & "】"
Exit Sub
End If
'关闭屏幕更新,提升执行效率
Application.ScreenUpdating = False
'遍历所有嵌入式图片
For Each myShape In ActiveDocument.InlineShapes
With myShape
' -------- 设置边框 --------
.Borders.OutsideLineStyle = wdLineStyleSingle '边框类型
.Borders.OutsideColorIndex = wdBlack '边框颜色
.Borders.OutsideLineWidth = wdLineWidth100pt '边框粗细
' -------- 设置样式 --------
If .Type = wdInlineShapePicture Then
.Range.Style = imgStyleName '设置图片样式为“图片”
End If
' -------- 设置高宽 --------
.ScaleWidth = 100 ' 缩放重置为100%
.ScaleHeight = 100 ' 缩放重置为100%
.LockAspectRatio = msoTrue ' 锁定纵横比
'.Height = 600 ' 600点
'.Width = CentimetersToPoints(15) '15 CM
.Width = ThisDocument.PageSetup.TextColumns.Width ' 当前文档宽度
' -------- 图片下方插入题注 --------
.Range.InsertCaption Label:="图:", TitleAutoText:="", Title:="", Position:=wdCaptionPositionBelow, ExcludeLabel:=0
End With
Next
'开启屏幕更新
Application.ScreenUpdating = True
End Sub
转为嵌入式图形
网上抄来改了一下:
Sub ConvertToInlineShape()
Dim total, count
count = 0
total = 0
For Each myShape In ActiveDocument.Shapes
If myShape.Type = msoPicture Then
' 转换为嵌入式图片
myShape.ConvertToInlineShape
count = count + 1
End If
total = total + 1
Next myShape
MsgBox "转换【" & count & "/" & total & "】个图片!"
End Sub
参考资料
微软Docs 》Office VBA 参考 》Word 》对象模型 》Style 对象
Docs 》Office VBA 参考 》Word 》对象模型 》Range 对象 》方法 》插入题注InsertCaption
WdLineWidth 枚举
以上是关于Word 利用 VBA 批量设置图片格式的主要内容,如果未能解决你的问题,请参考以下文章