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