Всем добрый день! Есть документ с кучей таблиц. Он генерится на стороне и приходит в таком виде. После таблиц сразу стоит заголовок любого уровня или обычный абзац. Т.е. в текущей версии документа между таблицей и заголовком нет пустых строк.
Нужен макрос, который добавит пустой новый абзац (пустую строку) после таблицы. При этом имеющийся заголовок должен остаться таким же, с той же нумерацией и того же стиля, просто как бы сдвинуться вниз.
Отрывать первую букву/символ заголовка - нельзя.
Я нагенерила макрос, он первый раз отработал нормально, но потом стал разрывать заголовок, отрывая от него первую букву.
Пыталась записать макрос, проделывая процедуру вручную - но все равно отрывает букву.
Суть в том, что при дальнейшей работе с документом, после таблицы может потребоваться что-то добавить (не мной, поэтому там могут быть сложности). Можно ли как-то решить эту проблему или это безнадежно? Прикрепляю текст "нерабочего макроса" и документы как есть и как должно быть.
Макрос
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
Написал вам письмо на почту. Написал именно на почту, а не на форум.