Text zwischen zwei Zeichen im Dokument löschen

  • Word

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Text zwischen zwei Zeichen im Dokument löschen

    Hallo,

    ich habe folgendes Problem.

    Ich möchte im gesamten Word-Dokument alles was in Klammern steht entfernen, sodass nur die Klammern übrig beiben.

    Bsp:

    Text Text Text Text

    Text (Text Text) Text Text

    Text Text

    soll so aussehen:

    Text Text Text Text

    Text () Text Text

    Text Text



    Ich habe folgenden Code hier im Forum gefunden, aber es tut sich leider nichts:

    Quellcode

    1. Dim p1 As Integer
    2. Dim p2 As Integer
    3. Dim Text As String
    4. Dim neuerText As String
    5. Text = "(dazwischen)"
    6. p1 = InStr(1, Text, "(")
    7. p2 = InStr(p1 + 1, Text, ")")
    8. neuerText = Left(Text, p1) & Mid(Text, p2)


    Kann mir da vielleicht einer helfen ?

    VB.NET-Quellcode

    1. Dim found As Boolean
    2. Dim text As String
    3. For Each var As String In "text (text text) text"
    4. If found = False Then
    5. text &= var
    6. End If
    7. If var = "(" Then
    8. found = True
    9. End If
    10. If var = ")" Then
    11. found = False
    12. text &= ")"
    13. End If
    14. Next
    15. MsgBox(text)

    Könnte man vielleicht besser lösen, aber ich glaub das geht auch.

    gabriel-b schrieb:

    For Each var As String In "text (text text) text"
    Wird in VBA nicht funktionieren.
    Da müsste man schon mit der "herkömmlichen" Methode arbeiten.

    Visual Basic-Quellcode

    1. Dim s As String, c As String, Found as Boolean, Text As String
    2. s = "123 (456 789) 0123"
    3. For i = 1 To Len(s)
    4. c = Mid(s,i,1)
    5. If c = ")" Then Found=False
    6. If Not Found Then text = text & c
    7. If c = "(" Then Found = True
    8. Next


    Aber ich sehe auch keinen Grund, weshalb der InStr-Ansatz nicht funktionieren sollte.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    Evtl. long statt integer, wenn die Texte länger werden. Dann noch vbtextcompare als Option mit angeben. Sollte aber auch so funktionieren.

    Oder so, wenn beide Klammerteile vorhanden sein müssen:

    Visual Basic-Quellcode

    1. Private Sub los()
    2. Debug.Print KlammerLeer("davor(dazwischen)danach")
    3. End Sub
    4. Private Function KlammerLeer(ByVal QuellText As String) As String
    5. Dim Anfang As Long
    6. Dim Ende As Long
    7. Anfang = InStr(1, QuellText, "(", vbTextCompare)
    8. Ende = InStr(Anfang + 1, QuellText, ")", vbTextCompare)
    9. If Anfang > 0 And Ende > 0 Then
    10. KlammerLeer = Left$(QuellText, Anfang) & Mid$(QuellText, Ende)
    11. Else
    12. KlammerLeer = QuellText
    13. End If
    14. End Function

    Gruß
    Peterfido

    Keine Unterstützung per PN!