Рассматривая это самостоятельно (мне пришлось решить проблему в короткие сроки и я не мог ждать), я пришел к тому же выводу, который был отмечен в комментарии @CindyMeister, что при удалении последнего «разрыва раздела»на самом деле, следующий за последним раздел удаляется, и то, какие данные и форматирование ранее принадлежали последнему разделу, является , по-видимому, , унаследованным новым последним разделом (т. е. более ранним следующимдо последнего раздела).Но в действительности последний раздел остался, и был удален только разрыв раздела, поэтому был удален следующий за последним раздел (и фактические страницы из последнего раздела).
Я обнаружил, что LinkToPrevious
Свойство объекта HeaderFooter
позволяет упростить «наследование» настроек из предыдущего раздела.
Таким образом, добавив несколько строк, чтобы установить для этого свойства значение true
в каждом экземпляре, а затем изменить еговернуться к false
, я могу получить требуемое поведение следующего за последним раздела, оставаясь таким же, как и раньше.
(Обратите внимание, что это сработало для меня, потому что у меня просто был другой текст в основном заголовке, и у меня не было специального форматирования и т. Д. Но я подозреваю, что в зависимости от работы свойства LinkToPrevious
этопанацея. Прокомментируйте, если не указано иное.)
Это строки для установки свойства:
for each hf in .Sections(1).Headers
hf.LinkToPrevious = True
hf.LinkToPrevious = False
next
for each hf in .Sections(1).Footers
hf.LinkToPrevious = True
hf.LinkToPrevious = False
next
Полный рабочий код для потомства:
Sub DeleteLastSection()
'Deletes last section of a document including
'the section break
Dim doc As Document
Dim rng As Range
Dim ctr As Integer
Set doc = ActiveDocument
ctr = doc.Sections.Count
Set rng = doc.Sections(ctr).Range
Dim myheader As HeaderFooter
If ctr > 1 Then
With rng
'Added lines to "inherit" the settings from the next-to-last section
for each hf in .Sections(1).Headers
hf.LinkToPrevious = True
hf.LinkToPrevious = False
next
for each hf in .Sections(1).Footers
hf.LinkToPrevious = True
hf.LinkToPrevious = False
next
.Select
.MoveStart Unit:=wdCharacter, Count:=-1
.Delete
End With
End If
End Sub