Regulärer Ausdruck, um Zellgrenzen abzugleichen

1

Gibt es eine Lösung für reguläre Ausdrücke in Microsoft Word, um die Zellgrenzen abzugleichen?
Vor kurzem hatte ich eine Tabelle mit mehreren Zellen, die mit einem Leerzeichen anfingen, und ich musste sie entfernen ^. auch ^pohne Wildcards habe ich nicht das gefunden, was ich brauchte.

Ebenso arbeite ich oft mit Dokumenten. Kann Words Regex Zellgrenzen auf irgendeine Weise verwalten? (Finden von Text, der über mehrere Zellen verteilt ist, mit dem Ende der Zelle übereinstimmen, nur in Tabellen suchen ...)

Máté Juhász
quelle

Antworten:

1

Ich habe den folgenden Ansatz gewählt, um Word nicht zu verlassen. Dieses Mal basiert es auf Regex, das in VBA verfügbar ist.

Öffnen Sie den Visual Basic-Editor (Alt + F11).
Verweis hinzufügen:
Extras -> Verweise -> Microsoft VBScript Regular Expressions 5.5

Sub RemoveInitialSpacesInTablesCells()
Dim NoOfRows As Integer
Dim NoOfColums As Integer
Dim CellValue As Variant
Dim RegEx As RegExp
Dim Expr As String
Dim tbl As Table
Dim temp As String

Set RegEx = New RegExp
Expr = "^(\s+)"

For Each tbl In ActiveDocument.Tables
    NoOfRows = tbl.Rows.Count()
    NoOfColums = tbl.Columns.Count()
    For i = 1 To NoOfRows
        For j = 1 To NoOfColums
            CellValue = tbl.Cell(i, j)
            RegEx.Global = True
            RegEx.IgnoreCase = False
            RegEx.MultiLine = False
            RegEx.Pattern = Expr
            temp = RegEx.Replace(CellValue, "")
            If Len(temp) > 2 Then
                temp = Left(temp, Len(temp) - 2)
            End If
            tbl.Cell(i, j).Range.Text = temp
        Next j
    Next i
Next tbl
End Sub

Beispielhafte Ausgaben dieser Funktion
INPUT - repräsentiert den
Zellenwert, bevor die Regel angewendet wird OUTPUT - repräsentiert den Zellenwert, nachdem die Regel angewendet wurde

INPUT = ""
OUTPUT = ""

INPUT = ""
OUTPUT = ""

INPUT = "a"
OUTPUT = "a "

INPUT =" a
             b "
OUTPUT =" a
             b "

INPUT ="



"
OUTPUT ="

INPUT = "


c"
OUTPUT = "c"

INPUT = "



a

                          b"
OUTPUT = "a

                          b"

wlod
quelle
Danke, sieht gut aus! Ich habe es hochgestuft, aber noch ein bisschen gewartet, bevor ich es als Antwort akzeptiere, wenn jemand ohne VBA einen Weg finden könnte. Der Verweis auf Tabellenzeilen und -spalten funktioniert in Word VBA nicht, wenn einige Zellen zusammengeführt werden. Die Verwendung ist im Allgemeinen sicherer for each c in tbl.cells.
Máté Juhász
1

Ich habe versucht, das beschriebene Szenario wiederherzustellen, und das Folgende scheint für mich zu funktionieren.

Schritte zum erneuten Erstellen :
1. Öffnen Sie Word 2007
2. Ribbon.Insert.Table -> 2x2 Table
3. Table1.Cell (0,0) = 'a', Table1.C (0,1) = 'b', Table1 .Cell (1,0) = 'c', Table1.Cell (1,1) = 'd'
4. Ribbon.Insert.Table -> 2x2 Table
5. Table2.Cell (0,0) = 'e' , Table2.C (0,1) = 'f', Table2.Cell (1,0) = 'g', Table2.Cell (1,1) = 'h'
6. Office Button.Save As.Other Forats- -> Word XML-Dokument (* .xml)
7. Öffnen Sie die Datei in Notepad ++ (meine Version ist 6.6.9). Anmerkungen

:
1. Jede Tabelle befindet sich im <w: tbl> -Tag, unabhängig davon, wie viele Tabellen in Word erstellt wurden Dokument
2. Wenn der Wert nicht mit einem Leerzeichen beginnt, hat er die folgende Struktur <w: t> meinWert </ w: t>
3. Wenn der Wert mit einem Leerzeichen beginnt, hat er die folgende Struktur: <w: t xml: space = "preserve"> myValue </ w: t>

Schlussfolgerungen:
1. Es scheint, dass 'xml' entfernt werden muss: space = "preserve" 'UND Leerzeichen vor myValue
2. Regex-Ersetzung ist erforderlich

Lösung:
1. Geben Sie in N ++ Strg + H (oder Menü -> Suchen -> Ersetzen -> Ersetzen-Tabulator -> Suchmodus = "Regular" ein expression ")
2. Lassen Sie bei 'Ersetzen durch:' den Wert leer und bei 'Suchen nach:' diesen Ausdruck verwenden '(? <= xml: space =" preserve ">) (\ s +)' (// ohne Anführungszeichen) und Klicken Sie auf "Alle ersetzen".
3. Lassen Sie bei "Ersetzen durch:" den Wert leer und bei "Suchen nach:" den Ausdruck "xml: space =" preserve "".und klicken Sie auf "Alle ersetzen".
4. Dokument speichern.
5. Dokument in Word öffnen.
6. Als Dokument speichern. (x)

wlod
quelle
Vielen Dank! Nizza Ansatz in der Tat. Mein einziges Problem ist, dass ich im Allgemeinen lange Dokumente (über 100 Seiten) mit Bildern, Bildunterschriften und Referenzen habe und befürchte, dass etwas während der Konvertierung in xml und zurück beschädigt wird.
Máté Juhász