使用宏将所有形状转换为MS Word中的图像 [英] Convert all shape to image in Ms word with macro
问题描述
我写了这个宏,将文档中的所有形状转换为图像:
I write this macro to convert all shapes in document to image :
Sub AllShapeToPic()
For Each oShp In ActiveDocument.Shapes
oShp.Select
Selection.Cut
Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
Next oShp
End Sub
但是当我运行它时,没有任何形状会转换为图像.
我的宏代码有什么问题?
But when i run it , none of shapes converted to image.
Whats wrong in my macro code ?
推荐答案
欢迎来到操作您正在循环浏览的集合的奇妙世界. 切割的那一刻,您正在有效地从集合中删除形状,从而改变了循环.
Welcome to the wonderful world of manipulating the very collection you are looping through. The moment you cut, you are effectively removing the shape from the collection, altering your loop.
如果要遍历形状(或表行或其他内容)并从该集合中删除某些内容,只需向后走:
If you want to loop through shapes (or table rows or whatever) and delete something from that collection, simply go backwards:
Dim i As Integer, oShp As Shape
For i = ActiveDocument.Shapes.Count To 1 Step -1
Set oShp = ActiveDocument.Shapes(i)
oShp.Select
Selection.Cut
Selection.PasteSpecial Link:=False, dataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
Next i
或者对于表(警告:未经测试!)
Dim tbl As Table
For i = ActiveDocument.Tables.Count To 1 Step -1
Set tbl = ActiveDocument.Tables(i)
tbl.Select
Selection.Cut
Selection.PasteSpecial Link:=False, dataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
Next i
对于方程式:方程式为InlineShapes并具有"OMath"属性.使用它来识别方程式对象. 警告:未经测试
For equations: Equations are InlineShapes and have a "OMath" property. Use it to identify an equation object. Warning: untested
Dim equation As InlineShape
For i = ActiveDocument.InlineShapes.Count To 1 Step -1
Set equation = ActiveDocument.InlineShapes(i)
If equation.OMath > 0 Then
equation.Select
Selection.Cut
Selection.PasteSpecial Link:=False, dataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
End If
Next i
这篇关于使用宏将所有形状转换为MS Word中的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!