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