Thema Datum  Von Nutzer Rating
Antwort
Rot Einen ganzen Abschnitt eines Word-Dokuments ersetzen
30.06.2023 10:21:12 Moe Tie
NotSolved
01.07.2023 18:01:48 xlKing
NotSolved
01.07.2023 18:13:44 Gast37689
NotSolved
01.07.2023 19:46:20 xlKing
NotSolved
02.07.2023 08:22:55 Gast22856
NotSolved
02.07.2023 16:31:54 xlKing
Solved
02.07.2023 19:52:11 Gast83186
NotSolved

Ansicht des Beitrags:
Von:
Moe Tie
Datum:
30.06.2023 10:21:12
Views:
309
Rating: Antwort:
  Ja
Thema:
Einen ganzen Abschnitt eines Word-Dokuments ersetzen

Hallo Alle!

Meine Kenntnisse mit VBA in Word sind leider beschränkt. Ich sitze seit Längerem an einem Skript, welches mir repititive Arbeiten abnehmen soll. Auch die Hilfe von Suchfunktion im Forum und ChatGPT brachte leider keinen Erfolg. Vielleicht könnt ihr mir helfen.

Ich habe ein Word-Dokument, welches mehrere Abschnitte enthält, die wiederum Unter-Abschnitte enthalten. Die Abschnitte sind mittels Formatvorlagen in einander untergeordneten Listen mit mehreren Ebenen organisiert. Kurzes Beispiel:

A. [Formatvorlage "Überschrift 1"]

1. Text... [Formatvorlage "Überschrift 2"]

2. Text... [Formatvorlage "Überschrift 2"]

B. [Formatvorlage "Überschrift 1"]

1. Text... [Formatvorlage "Überschrift 2"]

    a) Untergeordnete aufzählung [Formatvorlage "Überschrift 3"]

    b) Untergeordnete aufzählung [Formatvorlage "Überschrift 3"]

2. Text... [Formatvorlage "Überschrift 2"]

C. [Formatvorlage "Überschrift 1"]

1. Text... [Formatvorlage "Überschrift 2"]

und so weiter....

 

Das Ziel ist, einen bestimmten Abschnitt, den ich eingebe, vollständig zu ersetzen, um auszugsweise Abschriften herzustellen. Beispielsweise soll der gesamte Abschnitt B. mitsamt dem gesamten nachfolgenden Text bis zum Abschnitt C. ersetzt werden durch "...pp...". Idealerweise soll die nachfolgende Ziffer C. dann auch C. bleiben, also nicht zur neuen Ziffer B. werden. Mein Skript sieht bisher so aus:

Sub ErsetzeAbschnitt()
    Dim userInput As String
    Dim doc As Document
    Dim range As range
    Dim startRange As range
    Dim endRange As range
    Dim foundSection As Boolean
    
    ' Benutzereingabe abfragen
    userInput = InputBox("Geben Sie den Abschnitt ein, der ersetzt werden soll:", "Abschnitt ersetzen")
    
    ' Dokument und Range initialisieren
    Set doc = ActiveDocument
    Set range = doc.Content
    foundSection = False
    
    ' Schleife über alle Absätze im Dokument
    For Each para In doc.Paragraphs
        ' Überprüfen, ob der Absatz eine spezielle Nummerierungsfunktion hat
        If para.range.ListFormat.ListType <> wdListNoNumbering Then
            ' Überprüfen, ob der Absatz mit dem eingegebenen Text beginnt
            If Left(para.range.ListFormat.ListString, Len(userInput)) = userInput Then
                ' Bereich des Abschnitts festlegen
                If Not foundSection Then
                    Set startRange = para.range
                    foundSection = True
                End If
            ElseIf foundSection Then
                ' Den nächsten Absatz mit gültiger Nummerierung finden
                Set endRange = para.range
                Exit For
            End If
        ElseIf foundSection Then
            ' Absatz durchsuchen, um untergeordnete Nummerierungen zu erfassen
            For Each subPara In para.range.Paragraphs
                If subPara.range.ListFormat.ListType <> wdListNoNumbering Then
                    Set endRange = subPara.range
                    Exit For
                End If
            Next subPara
            
            If endRange Is Nothing Then
                ' Kein weiterer Absatz mit gültiger Nummerierung gefunden
                Set endRange = para.range
                Exit For
            End If
        End If
    Next para
    
    ' Den gesamten Abschnitt ersetzen, wenn ein Abschnitt gefunden wurde
    If foundSection Then
        range.Start = startRange.Start
        range.End = endRange.Start
        range.Text = "...pp..."
    Else
        MsgBox "Der angegebene Abschnitt wurde nicht gefunden.", vbExclamation
    End If
End Sub

Gebe ich zum Beispiel "B." ein, findet das Skript auch den Abschnitt B., ersetzt aber auch nur diese Überschrift, nicht aber den nachfolgenden Text bis zum Beginn des Abschnitt C. Weiß jemand vielleicht Rat?

Jede Hilfe ist willkommen.

Herzlichen Dank!

Moritz


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Einen ganzen Abschnitt eines Word-Dokuments ersetzen
30.06.2023 10:21:12 Moe Tie
NotSolved
01.07.2023 18:01:48 xlKing
NotSolved
01.07.2023 18:13:44 Gast37689
NotSolved
01.07.2023 19:46:20 xlKing
NotSolved
02.07.2023 08:22:55 Gast22856
NotSolved
02.07.2023 16:31:54 xlKing
Solved
02.07.2023 19:52:11 Gast83186
NotSolved