Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Leere Absätze im Textdokument löschen
zurück: Daten aus einer accsess Datenbank einlesen! weiter: Bei befüllen von Textbox wird command-button aktiv Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
schrumpfgermanin
Im Profil kannst Du frei den Rang ändern


Verfasst am:
09. März 2009, 08:54
Rufname:

Leere Absätze im Textdokument löschen - Leere Absätze im Textdokument löschen

Nach oben
       Version: Office 2003

Hallo Forumsfreunde,

in einem Textdokument muss ich mehrere leere Absätze löschen. Dazu gibt es hier im Forum ein schönes Makro, das im Prinzip auch gut funktioniert. In meinem Textdokument befinden sich aber mehrere kleine Tabellen; dadurch funktioniert das Makro nicht mehr. Hat jemand eine Lösung, wie ich trotzdem die leeren Absätze löschen kann?
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
09. März 2009, 19:30
Rufname:
Wohnort: Leipzig


AW: Leere Absätze im Textdokument löschen - AW: Leere Absätze im Textdokument löschen

Nach oben
       Version: Office 2003

Hallo Schrumpfgermanin,

zeig mal das Makro, von dem Du da sprichst, das durch die Tabellen durcheinandergerät.

Gruß
Lisa
schrumpfgermanin
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. März 2009, 08:03
Rufname:

AW: Leere Absätze im Textdokument löschen - AW: Leere Absätze im Textdokument löschen

Nach oben
       Version: Office 2003

Hallo Lisa,

das Makro lautet:

Sub doppelte_Abs_entf()
'
' doppelte_Abs_entf Makro
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Application.StatusBar = "entferne alle doppelten Absatzmarken"
With Selection.Find
.Text = "[^13]{1;100}"
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
MsgBox ("Fertig")
End Sub


Funktioniert auch prima in einem Dokument, in dem keine Tabellen sind!
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
15. März 2009, 14:12
Rufname:
Wohnort: Leipzig

AW: Leere Absätze im Textdokument löschen - AW: Leere Absätze im Textdokument löschen

Nach oben
       Version: Office 2003

Hallo Schrumpfgermanin,

so, da bin ich wieder. Du warst nicht vergessen. Es war doch nicht so trivial, wie es aussah. Die Tabellen im Dokument bringen erst das Salz in die Suppe ;)

Mir ist zwar sofort aufgefallen, dass {1;100} nicht so geschickt ist, weil Word dann häufig in einer Endlosschleife stecken bleibt. Denn wenn durch 1 Enter ersetzt wird, wird das eine Enter ja immer wieder gefunden. Aber {2;100} hat auch noch nicht ganz gereicht.

Bitte probier mal das hier aus und berichte, ob noch irgendwelche sonderbaren anderen Effekte auftreten. Ach so, ich habe das jetzt erstmal nur für den Hauptbereich des Dokuments gebaut. Falls tatsächlich auch Kopf- und Fußzeilen, Fußnoten und Textfelder mit verarbeitet werden müssen, muss man das nochmal erweitern. Aber bitte vorher probieren, ob Dir das jetzt so reicht.
Code:
Sub InEinerStoryErsetzen()
    'Diese Prozedur macht die Arbeit Suchen/Ersetzen, hier nur in einer Story
    'nach C. Meister/T. Gahler/P. Jamieson/C. Freßdorf, 2 kleine Fehler bereinigt
    'weitere Sonderbehandlung wegen der doppelten Enterschaltung
    'Version von Lisa (Schreibbüro Richter)

    Dim rngErgebnis As Word.Range
    Dim tbl As Word.Table
   
    Dim rngSuchen As Word.Range
    Dim strQuellDatum As String
    Dim strZielDatum As String
    Dim Suchergebnis As String
    Dim rngNext As Word.Range
   
    Set rngSuchen = ActiveDocument.Range
    strZielDatum = Chr(13)
    strQuellDatum = "[^13]{2;100}"

    Set rngErgebnis = rngSuchen.Duplicate

    Do While BegriffSuchen(strQuellDatum, rngErgebnis)
        Suchergebnis = rngErgebnis.Text
        'Beginn Sonderbehandlung
        If Not rngErgebnis.Information(wdWithInTable) Then
            'vorsichtshalber nachsehen, ob das nächste Zeichen in einer Tabelle steht,
            'denn Absätze würden sonst den Text in die Tabelle verschieben (!)
            Set rngNext = rngErgebnis.Duplicate
            rngNext.Collapse wdCollapseEnd
            rngNext.MoveEnd wdCharacter, 1
            If Not rngNext.Information(wdWithInTable) Then
                'Wenn das nächste Zeichen nicht in einer Tabelle steht, alles in Ordnung
                rngErgebnis.Text = strZielDatum
            Else
                'sonst den Range um ein Zeichen verkleinern, dann darf jedoch nicht mehr
                'ersetzt werden, denn sonst würden bei der nächsten Suche wieder zwei Chr(13)
                'gefunden, deshalb in dem Fall den um ein Zeichen verkleinerten Range löschen.
                rngErgebnis.MoveEnd wdCharacter, -1
                Selection.Collapse wdCollapseEnd
                rngErgebnis.Delete
            End If
        End If
        If rngErgebnis.Information(wdWithInTable) Then
            'Die Suche in einer Tabelle erfordert, die Zellen einzeln zu bearbeiten.
            'Die Suche im aktuellen Zellenbereich ausführen
            rngErgebnis.End = rngErgebnis.Cells(1).Range.End - 1
            Do While BegriffSuchen(strQuellDatum, rngErgebnis)
                Suchergebnis = rngErgebnis.Text
                rngErgebnis.Text = strZielDatum
                If rngErgebnis.Information(wdWithInTable) Then
                    'Weiter in der gleichen Zelle suchen.
                    rngErgebnis.End = rngErgebnis.Cells(1).Range.End - 1
                Else
                    Exit Do
                End If
            Loop
            'Wenn die Suche innerhalb der Tabelle erfolglos war und der Ergebnisbereich
            'sich noch immer in einer Tabelle befindet ...
            If rngErgebnis.Information(wdWithInTable) Then
                '... und nicht in der letzten Zelle steht
                Set tbl = rngErgebnis.Tables(1)
                'Hier Abweichung zur Berichtigung des 1. Fehlers:
                If rngErgebnis.Cells(1).Range <> tbl.Range.Cells(tbl.Range.Cells.Count).Range Then
                'ihn in die folgende Zelle setzen,
                    rngErgebnis.MoveStart Unit:=wdCell, Count:=1
                    rngErgebnis.MoveEnd Unit:=wdCharacter, Count:=-1
                Else
                    'sonst den Bereich bis ans Ende des Ursprungsbereichs erweitern,
                    'hier Abweichung zur Berichtigung des 2. Fehlers, sauberes Verlassen des Ranges:
                    rngErgebnis.Collapse wdCollapseEnd
                    rngErgebnis.MoveStartWhile Asc(13), 1
                    rngErgebnis.MoveStart Unit:=wdCharacter, Count:=1
                    rngErgebnis.End = rngSuchen.End
                End If
            End If
        Else
            rngErgebnis.End = rngSuchen.End
        End If
    Loop

End Sub

Function BegriffSuchen(ByRef strSuchbegriff As String, ByVal rngSuchBereich As Word.Range) As Boolean

    Dim bGefunden As Boolean

    With rngSuchBereich.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = strSuchbegriff
        .Wrap = wdFindStop
        .MatchWildcards = True
        bGefunden = .Execute
    End With
    BegriffSuchen = bGefunden

End Function

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
schrumpfgermanin
Im Profil kannst Du frei den Rang ändern


Verfasst am:
16. März 2009, 10:48
Rufname:


AW: Leere Absätze im Textdokument löschen - AW: Leere Absätze im Textdokument löschen

Nach oben
       Version: Office 2003

Hallo Lisa,

es gibt nur eine Aussage zu dem Makro: "EINFACH KLASSE!!!"

Ich bedanke mich ganz herzlich bei Dir.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Serienbriefe: Leere Seriendruckfelder bzw. Leerzeilen löschen 4 Mingi 7258 19. Feb 2014, 17:55
Flipper7 Leere Seriendruckfelder bzw. Leerzeilen löschen
Keine neuen Beiträge Word Serienbriefe: Verknüpfungen löschen; beim Öffnen wir SQL Befehl ausgeführt 2 Mäxwell 258 24. Jan 2014, 18:29
Gast Verknüpfungen löschen; beim Öffnen wir SQL Befehl ausgeführt
Keine neuen Beiträge Word Serienbriefe: Problem mit INCLUDEPICTURE => wie leere Bilder löschen? 1 Heka 191 24. Sep 2013, 19:08
MarkMH_K Problem mit INCLUDEPICTURE => wie leere Bilder löschen?
Keine neuen Beiträge Word Serienbriefe: Ganze leere Zeile im Adressetikett unterdrücken 1 samtpfote67 400 21. Feb 2013, 15:51
Ute-S Ganze leere Zeile im Adressetikett unterdrücken
Keine neuen Beiträge Word Formate: Word 2003 - Fußnotenbereich hat Leere Zeilen 9 PLANLOS 3942 03. Dez 2010, 16:13
Gast Word 2003 - Fußnotenbereich hat Leere Zeilen
Keine neuen Beiträge Word Serienbriefe: Word Serienbrief unnötige Zeilen in Tabellen löschen 2 sunlight80 2814 11. Sep 2008, 16:12
sunlight80 Word Serienbrief unnötige Zeilen in Tabellen löschen
Keine neuen Beiträge Word Formate: Eigene Foramtvorlagen löschen 2 gerhardg 1298 18. Jan 2008, 14:09
gerhardg Eigene Foramtvorlagen löschen
Keine neuen Beiträge Word Formate: Markierung bei Word lässt sich nicht löschen 2 Chillakhe 14135 18. Mai 2007, 20:24
Chillakhe Markierung bei Word lässt sich nicht löschen
Keine neuen Beiträge Word Formate: Formatvorlage abändern für viele Absätze in großem Dokument 3 Amitl 692 02. Mai 2007, 22:41
Hübi Formatvorlage abändern für viele Absätze in großem Dokument
Keine neuen Beiträge Word Formate: alle Seitenumbrüche auf einmal löschen 2 acki-bm 3826 02. Mai 2007, 11:44
acki-bm alle Seitenumbrüche auf einmal löschen
Keine neuen Beiträge Word Serienbriefe: Serienbrief/-druck -- Leere löschen/aussortieren 3 Friegel 2003 17. Feb 2007, 09:52
Friegel. Serienbrief/-druck -- Leere löschen/aussortieren
Keine neuen Beiträge Word Formate: Formatvorlage zeigt verwendete Absätze nicht mehr an... 4 lady81 1093 15. Feb 2007, 00:16
Gast Formatvorlage zeigt verwendete Absätze nicht mehr an...
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln