visual varias una todas seleccionar para objetos macro mac las imagenes ejemplos definicion crear como codigos vba ms-word ms-office

vba - varias - Convierta todas las formas en imágenes en Ms word con macro



seleccionar objetos en excel para mac (1)

Escribo esta macro para convertir todas las formas en documento a imagen:

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

Pero cuando lo ejecuto, ninguna de las formas se convierte en imagen.
¿Qué pasa con mi código macro?


Bienvenido al maravilloso mundo de la manipulación de la misma colección que estás recorriendo. En el momento en que corte, está eliminando efectivamente la forma de la colección, alterando su ciclo.

Si desea recorrer las formas (o las filas de la tabla o lo que sea) y eliminar algo de esa colección, simplemente retroceda:

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

Alternativamente para tablas (advertencia: no probado)

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

Para ecuaciones: las ecuaciones son InlineShapes y tienen una propiedad "OMath". Úselo para identificar un objeto de ecuación. Advertencia: no probado

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