¿Macro para eliminar el espacio entre gráficos/texto en un documento de Word 2010?

¿Macro para eliminar el espacio entre gráficos/texto en un documento de Word 2010?

Con frecuencia creo documentos de Word (versión 2010) que solo tienen elementos gráficos y, ocasionalmente, con algo de texto al lado de un gráfico, como "¡Nuevo!" (que me gustaría conservar). Me gustaría crear una macro que elimine todo el espacio (de cualquier tipo) entre todos estos gráficos/gráficos con algún texto que sigue a los elementos del documento, para que todos se alineen, uno tras otro hasta que llenen un espacio. línea y luego el siguiente gráfico comenzaría automáticamente en la siguiente línea (y luego repetiría nuevamente un gráfico tras otro, sin ningún espacio), etc. Actualmente estoy haciendo esto a mano usando las teclas de flecha, borrar y retroceder, y lleva mucho tiempo. He subido imágenes GIF de "antes/después" de cómo se vería el documento antes de ejecutar la macro y luego después:

Antes de la macro (captura de pantalla)Después de la macro (captura de pantalla)

Como pregunta secundaria, si alguna vez quisiera agregar solo una cierta cantidad de espacios entre los gráficos, ¿hay alguna manera de "modificar" el maco para que esto sea posible, fácilmente? Si es así, ¿qué texto tendría que agregar a la macro para lograr esto también?

Muchas gracias por su ayuda.

Respuesta1

La herramienta integrada de Word "buscar y reemplazar" puede hacer el 90% del trabajo por usted. Puede buscar saltos de página, marcas de párrafo, espacios, etc. si utiliza la opción "Más >>" donde se encuentra el botón desplegable "Especial".

Ese botón "Especial" le permitirá seleccionar párrafos, varios espacios en blanco diferentes, saltos de línea, etc.

El otro 10% se puede hacer usando la grabadora de macros en la pestaña de desarrollador de VBA.

Comience a grabar, reemplace todos los saltos de línea, marcas de párrafo, etc. hasta que todo lo que tenga sean las imágenes que desea.

Luego deja de grabar. Listo. Magia macro.

Una prueba rápida me da lo siguiente para eliminar la mayoría de los distintos tipos de formato. ^pcorrespondiente a una "marca de párrafo" y la herramienta de buscar y reemplazar la reemplaza con, ""es decir, nada.

Sub Macro1()
'
' Macro1 Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "^t"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^b"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^m"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = " "
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Si desea un espacio entre cada imagen, simplemente cambie el .Replacement.Text = ""de cada parte para incluir un espacio como.Replacement.Text = " "

información relacionada