Видаліть пробіл у кінці комірок таблиці


3

Я відкрив PDF-файл у Word для того, щоб відредагувати його (початковий документ Word втрачено). Під час перетворення кожному рядку тексту та кожній комірці таблиці було надано додаткове місце. Звичайно, вони насправді нікому не шкодять, окрім мене та мого незначного OCD. Мені не подобається пробільний пробіл.

Знімок екрана

Видалити пробіл у кінці рядка (пошук " ^p"і заміна "^p") тривіальним , але, схоже, немає спеціального символу для "маркера комірки кінці таблиці" у діалоговому вікні "Знайти / замінити" та Word Не виявляється, що двигун «regex» також не підтримує якоря .

Пошук Google підвів мене до цієї поради щодо того, як додати щось до кінця комірки таблиці (я планував додати щось на кшталт "§§§"кожної комірки, а потім зробити простий пошук / заміну " §§§"), але в Word 2016 я не можу знайдіть Стиль "Ячейка таблиці", принаймні, не в німецькій версії Word.

Якусь іншу ідею я міг би спробувати? Крім того, будь-яка ідея, як видалити один або кілька пробілів у кінці комірки рядка / таблиці? Здається, кількісні показники не працюють у нерегекс-знаходженні / заміні.


Я також спробував це кілька разів, не маючи успіху. Одним із шляхів вирішення може бути скопіювати таблицю в Excel, видалити їх TRIM, а потім скопіювати назад, зберігаючи форматування з початкової версії в Word.
Máté Juhász

1 / Перетворення таблиці в текст, 2 / Виправлення тексту, 3 / Перетворення тексту в таблицю
DavidPostill

@DavidPostill: Гарна ідея, спробував її (замінивши " (?=\t|$)"нічим). На жаль, введення тексту назад у таблицю не вдається через комбіновані комірки, виноски, відформатований текст та вкладки всередині комірок. Їх не було видно на моєму скріншоті, але вони присутні в таблицях, які мені потрібно виправити. Тож я здогадуюсь, я розглядаю рішення VBA (здригається).
Тім Піцкер

Відповіді:


1

Гаразд, я копав навколо об'єктної моделі Word VBA і придумав це (увімкнено Microsoft VBScript Regular Expressions 5.5):

Sub TrimCellSpaces()
    Dim myRE As New RegExp
    Dim itable As Table
    Dim C As Cell
    myRE.Pattern = "\s+(?!.*\w)"
    For Each itable In ThisDocument.Tables
        For Each C In itable.Range.Cells
            With myRE
                C.Range.Text = .Replace(C.Range.Text, "")
            End With
        Next
    Next
End Sub

Цікаво, що моя первинна спроба (за допомогою Trim(C.Range.Text)) не видалила пробіли, навпаки, вона додала маркер абзацу в кінці кожної комірки. Спантеличений цим, я спробував регулярний вираз \s+$з такими ж результатами. Оглядаючи місцеве дерево об’єктів, я виявив, що клітина, що містила текст, Note насправді містила Note \x0d\x0d\x07( я з тих пір з’ясувала, чому це так ). Ось чому мені довелося використовувати той дивний регекс, щоб знайти останні пробіли у комірці ...


0

Я використовую модифікацію Sub Sub Тіма Піткера, де я використовую комбінацію Left () і Trim () замість regExp (а також використовую ActiveDocument замість ThisDocument ):

Sub TrimCellSpaces()
    Dim itable As Table
    Dim C As Cell
    For Each itable In ActiveDocument.Tables
        For Each C In itable.Range.Cells
            C.Range.Text = Trim(Left(C.Range.Text, Len(C.Range.Text) - 2))
        Next
    Next
End Sub
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.