2017-10-12 1 views
0

In VBA Wort, ich ein Dokument haben, mit diesem Text, und ich brauche einen VBA-Makro es Schleife und löschen

| unwanted_text

Aus jeder Zeile kann mir bitte jemand helfen?

Beispiel1 | unerwünschter Text | Beispiel2 | Beispiel3 | Beispiel4
Hallo Welt
Beispiel1 | unerwünschter Text | Beispiel2 | Beispiel3 | example4
Hallo Welt

Das Endergebnis so sein muss:

example1 | Beispiel2 | Beispiel3 | Beispiel4
Hallo Welt
Beispiel1 | Beispiel2 | Beispiel3 | example4
Hallo Welt

Hinweis: unwanted_text jede Variable Zeichenfolge sein könnteVBA Wort, Löschen zwischen der ersten und zweiten Instanz in jedem Absatz

+0

Entweder Sie müssen genau definieren, was "unerwünschter Text" tatsächlich sein wird oder Sie müssen die Regeln für die Suche zu erklären. Wird es durch "|" begrenzt? Wenn ja, wird es dann immer die richtigen Trennzeichen geben? –

+0

Versuchen Sie, das Äquivalent von Word "Replace All" zu tun, wobei "Find which:" das ist, was Sie angeben, und "Replace with:" ist eine leere Zeichenfolge? Dies scheint nicht mit dem Fragetitel "Löschen zwischen ersten und zweiten Instanzen in jedem Absatz" übereinzustimmen. – YowE3K

+0

Schleife über den Text: Wenn das zweite und vierte Wort "|" dann lösche das zweite und dritte Wort. – Amjad

Antwort

0

Der folgende Code: (a) Spin durch das Dokument (b) festzustellen, ob das Muster gefunden wird (c) löschen das 2. und 3. Wort, wenn Muster gefunden wird.

Sub Delete_Words() 
    Dim oPara As Word.Paragraph 

    On Error GoTo Error_Trap 
    For Each oPara In ActiveDocument.Paragraphs 
     If oPara.Range.Words.Count > 3 Then 

      ' You can check for specific values of word 2 and 4 
      ' Then could delete whatever is between 
      'Debug.Print oPara.Range.Words(2).Text & " <> " & oPara.Range.Words(4).Text 
      If Trim(oPara.Range.Words(2).Text) = "|" And Trim(oPara.Range.Words(4).Text) = "|" Then 
       ' NOTE!! Must delete word 3 before word 2, else incorrect results! 
       oPara.Range.Words(3).Delete 
       oPara.Range.Words(2).Delete 
      End If 
     Else 
      ' Not enough words 
     End If 
    Next 
    Exit Sub 
Error_Trap: 
    Debug.Print "Error: "^Err.Number & vbTab & Err.Description 
    MsgBox "Error: "^Err.Number & vbTab & Err.Description 
End Sub 
Verwandte Themen