Word利用VBA批量修改图片格式为嵌入式

Word利用VBA批量修改图片格式为嵌入式

Shape 与 InlineShape

对象说明
Shape代表绘图层中的对象,例如自选图形、任意多边形、OLE 对象、ActiveX 控件或图片。Shape 对象锁定到某一文本范围,但可以自由浮动,并且可以放置在页面上的任何位置。
InlineShape代表文档的文字层中的对象。被视为字符置于文本行中。 内嵌形状只能是图片、OLE 对象或 ActiveX 控件。
ConvertToInlineShape将文档绘图层的指定图形转换为文字层的嵌入式图形。 只能转换代表图片、OLE 对象或 ActiveX 控件的图形。 此方法返回一个 InlineShape 对象,该对象代表图片或 OLE 对象。

将图片转换为嵌入式

这个有用,可以全部转成功

Sub ConvertToInlineShapeWrap()
On Error Resume Next
Dim P As Shape
Dim arr()
Dim k
k = 0
For Each P In ActiveDocument.Shapes
    ReDim Preserve arr(k)
    arr(k) = P.Name
    k = k + 1
Next
For k = 0 To UBound(arr)
    ActiveDocument.Shapes(arr(k)).ConvertToInlineShape
    
Next
MsgBox "转换【" & k & "】个图片!"
End Sub

这个只能转成功部分,可能是因为环绕型和嵌入型问题,暂不研究

Sub ConvertInlineToSquareWrap()
    Dim pic As Shape
    Dim count
    count = 0
    ' 循环遍历所有的嵌入型图片
    For Each pic In ActiveDocument.Shapes
        ' 检查是否为图片类型
        If pic.Type = msoPicture Then
            ' 设置为四周型
            pic.Select
            Selection.ShapeRange.WrapFormat.Type = InlineShape
            count = count + 1
        End
    Next
    MsgBox "转换【" & count &  "】个图片!"
End Sub

使用方式

在word文档内,使用 Alt + F11 打开vb编辑器,点击 【插入】->【模块】,打开代码窗体,将上面代码copy至窗口内,运行即可。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值