Нужна помощь: вставка пустого абзаца после таблицы в Word

Автор ASB, 27 мая 2025, 17:12

ASB

Всем добрый день! Есть документ с кучей таблиц. Он генерится на стороне и приходит в таком виде. После таблиц сразу стоит заголовок любого уровня или обычный абзац. Т.е. в текущей версии документа между таблицей и заголовком нет пустых строк.

Нужен макрос, который добавит пустой новый абзац (пустую строку) после таблицы. При этом имеющийся заголовок должен остаться таким же, с той же нумерацией и того же стиля, просто как бы сдвинуться вниз.
Отрывать первую букву/символ заголовка - нельзя.

Я нагенерила макрос, он первый раз отработал нормально, но потом стал разрывать заголовок, отрывая от него первую букву.
Пыталась записать макрос, проделывая процедуру вручную - но все равно отрывает букву.

Суть в том, что при дальнейшей работе с документом, после таблицы может потребоваться что-то добавить (не мной, поэтому там могут быть сложности).  Можно ли как-то решить эту проблему или это безнадежно? Прикрепляю текст "нерабочего макроса" и документы как есть и как должно быть.

Макрос
Sub AddEmptyLineAfterTablesWithoutBreakingHeaders()
    Dim tbl As Table
    Dim rngAfterTable As Range
    Dim i As Integer
   
    ' Обрабатываем таблицы с конца документа, чтобы не нарушить нумерацию
    For i = ActiveDocument.Tables.Count To 1 Step -1
        Set tbl = ActiveDocument.Tables(i)
       
        ' Получаем диапазон сразу после таблицы
        Set rngAfterTable = tbl.Range
        rngAfterTable.Collapse Direction:=wdCollapseEnd
       
        ' Проверяем, не находится ли таблица в конце документа
        If rngAfterTable.End < ActiveDocument.Range.End Then
            ' Расширяем диапазон на 1 символ для проверки следующего символа
            rngAfterTable.MoveEnd Unit:=wdCharacter, Count:=1
           
            ' Если следующий символ - не начало абзаца, добавляем абзац
            If Not rngAfterTable.Text = vbCr Then
                rngAfterTable.InsertAfter vbCr
            End If
           
            ' Устанавливаем стиль "Обычный" для новой строки
            rngAfterTable.style = "Обычный"
        Else
            ' Если таблица в конце документа, просто добавляем абзац
            tbl.Range.InsertAfter vbCr
            tbl.Range.style = "Обычный"
        End If
    Next i
   
    MsgBox "Готово! Пустые строки добавлены после всех таблиц без изменения стилей заголовков.", vbInformation
End Sub
[свернуть]

Администратор

Написал вам письмо на почту. Написал именно на почту, а не на форум.