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

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

  • Shape 与 InlineShape
  • 将图片转换为嵌入式
  • 使用方式

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至窗口内,运行即可。

你可能感兴趣的:(word,vb)