[VBA] Zeichen ersetzen in einer Word Tabelle

Pr3c4rio

Lt. Commander
Registriert
Jan. 2009
Beiträge
1.477
Hallo zusammen,
ich habe ein automatisch generiertes Worddokument mit vielen einzelnen Tabellen.
Bei allen Tabellen mit genau 3 Spalten möchte ich in der 3. Spalte ein Zeichen ( ; ) durch einen Zeilenumbruch ersetzen.
Pro Zelle können mehrere ; vorkommen.

Wichtig ist dass das Zeichen nur in den entsprechenden Tabellenzellen in der 3.Spalte ersetzt wird und an keiner anderen Position im Dokument.

Mein aktueller Code:
Code:
Sub UmbruchEinfuegen()

   Dim AktuellesDokument As Document
   Dim AktuelleTabelle As Table
   Dim AktuelleZeile As Range
   Dim AnzahlTabellen As Long
   Dim AnzahlZeilen As Long
   Dim AnzahlSpalten As Long
   Dim T As Integer
   Dim Z As Integer
   Dim ZellenInhalt As String
   Dim Muster As String
   Dim Ersatz As String

   Application.Visible = True                           
   
   Set AktuellesDokument = Application.Documents.Item(1)
   Muster = ";"
   Ersatz = "^l"

   AnzahlTabellen = AktuellesDokument.Tables.Count

   For T = 1 To AnzahlTabellen
      Set AktuelleTabelle = AktuellesDokument.Tables(T) 
      With AktuelleTabelle
         Set AktuelleZeile = .Rows(1).Range
         AnzahlZeilen = .Rows.Count
         AnzahlSpalten = .Columns.Count
         If AnzahlSpalten >= 3 Then
            For Z = 1 To AnzahlZeilen
               Set AktuelleZeile = .Rows(Z).Range
               ZellenInhalt = AktuelleZeile.Cells(3).Range.Text 
               ZellenInhalt = Left(ZellenInhalt, Len(ZellenInhalt) - 2) 
               AktuelleZeile.Cells(3).Range.Text = Replace(ZellenInhalt, Muster, Ersatz)
            Next   
         End If
      End With
   Next   

End Sub

Der Code ersetzt das ; jetzt auch durch einen anderen String. "^l" soll ja das Kürzel für einen Zeilenumbruch sein. Allerdings wird kein Umbruch eingefügt sondern eben der String.
Ich vermute dass der Ansatz einen String durch einen anderen zu ersetzen hier nicht passend ist, habe aber keinen anderen Ansatz.
Hat evtl. jemand eine Lösung?
 
Ich würde vorschlagen, es einmal mit der VBA-Konstanten vbCrLf zu versuchen.

Viel Erfolg
 
Zurück
Oben