Makro zum Entfernen des Abstands zwischen Grafiken/Text in einem Word 2010-Dokument?

Makro zum Entfernen des Abstands zwischen Grafiken/Text in einem Word 2010-Dokument?

Ich erstelle häufig Word-Dokumente (Version 2010), die nur grafische Elemente enthalten, und gelegentlich mit Text neben einer Grafik, z. B. „Neu!“ (den ich behalten möchte). Ich möchte ein Makro erstellen, das alle Abstände (jeder Art) zwischen all diesen grafischen/grafischen Elementen mit Text im Dokument entfernt, sodass sie alle nacheinander ausgerichtet sind, bis sie eine Zeile ausfüllen, und dann automatisch die nächste Grafik in der nächsten Zeile beginnt (und dann wieder eine Grafik nach der anderen wiederholt wird, ohne Abstände) usw. Derzeit mache ich das manuell mit Pfeiltasten, Entf- und Rücktaste, und es ist sehr zeitaufwändig. Ich habe GIF-Bilder von „vorher/nachher“ hochgeladen, die zeigen, wie das Dokument vor dem Ausführen des Makros und danach aussehen würde:

Vor dem Makro (Screenshot)Nach Makro (Screenshot)

Eine Nebenfrage: Wenn ich jemals nur eine bestimmte Anzahl von Leerzeichen zwischen den Grafiken einfügen möchte, gibt es dann eine Möglichkeit, das Makro so zu „optimieren“, dass dies problemlos möglich ist? Wenn ja, welchen Text müsste ich dem Makro hinzufügen, um dies ebenfalls zu erreichen?

Vielen Dank für deine Hilfe.

Antwort1

Das in Word integrierte Tool „Suchen und Ersetzen“ kann 90 % der Arbeit für Sie erledigen. Es kann nach Seitenumbrüchen, Absatzmarken, Leerzeichen usw. suchen, wenn Sie die Option „Mehr >>“ verwenden, wo sich eine Dropdown-Schaltfläche „Spezial“ befindet.

Mit dieser Schaltfläche „Spezial“ können Sie Absätze, verschiedene Leerzeichen, Zeilenumbrüche usw. auswählen.

Die anderen 10 % können mithilfe des Makrorekorders auf der VBA-Entwicklerregisterkarte erledigt werden.

Starten Sie die Aufnahme und ersetzen Sie alle Zeilenumbrüche, Absatzmarken usw., bis Sie nur noch die gewünschten Bilder haben.

Dann stoppen Sie die Aufnahme. Voilà. Makro-Magie.

Ein kurzer Test hat mir Folgendes geliefert, um die meisten der verschiedenen Formatierungsarten zu löschen. ^pEntspricht einer „Absatzmarke“ und das Suchen-und-Ersetzen-Tool ersetzt sie, ""d. h. nichts.

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

Wenn Sie zwischen den einzelnen Bildern einen Abstand wünschen, ändern Sie einfach .Replacement.Text = ""für jeden Teil den Abstand wie folgt.Replacement.Text = " "

verwandte Informationen