Word 2016: Как найти и заменить все знаки абзаца только в таблицах? - PullRequest
0 голосов
/ 06 июня 2018

У меня более 300 страниц документа Word 2016, импортированного из другой программы с огромным количеством таблиц.В каждой ячейке таблицы есть хотя бы один знак абзаца.Я хочу найти и заменить каждый маркер абзаца ничем, но только в таблицах (в обычном тексте есть тонны других меток абзаца, которые я хочу оставить в покое).

Я могу использовать диалоговое окно «Найти / заменить»сделать это вручную, но это займет огромное количество кликов и времени.В диалоговом окне нет опции «только в таблицах», поэтому мне кажется, что мне нужно создать макрос VBA, но я никогда не делал этого раньше.Ниже приведен макрос, созданный путем записи действия «Найти / заменить знак абзаца в одной таблице».Что нужно изменить, чтобы включить эту функцию для одновременного использования всех таблиц?

Dim mytable As Table
Application.ScreenUpdating = False

For Each mytable In ActiveDocument.Tables
mytable.Range.Editors.Add wdEditorEveryone
Next
ActiveDocument.SelectAllEditableRanges (wdEditorEveryone)
ActiveDocument.DeleteAllEditableRanges (wdEditorEveryone)
Application.ScreenUpdating = True
End Sub
Sub FindReplaceInTable()
'
' FindReplaceInTable Macro
'
'
    Selection.Tables(1).Select
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
End Sub

Заранее спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Попробуйте:

Sub ClearTblParaBreaks()
Application.ScreenUpdating = False
Dim Tbl As Table
For Each Tbl In ActiveDocument.Tables
  With Tbl.Range.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Format = False
    .Forward = True
    .Wrap = wdFindStop
    .MatchWildcards = True
    .Text = "[^13]{1,}"
    .Replacement.Text = ""
    .Execute Replace:=wdReplaceAll
  End With
Next
Application.ScreenUpdating = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...