Word VBA Макросы: Удаление полей ввода в колонтитулах.

Автор vertraut, 08 ноября 2019, 11:47

vertraut

Есть необходимость удалить все поля ввода в колонтитулах. В теле документа я удаляю их так:

Dim objCC As ContentControl

Do While ActiveDocument.ContentControls.Count > 0
For Each objCC In ActiveDocument.ContentControls
objCC.Delete False
Next
Loop

При это текст с поля ввода остается на месте. А вот в колонтитулах поля ввода вообще никак не затрагиваются. Подскажите, пожалуйста, как оптимизировать код, чтобы и в колонтитулах удалялись эти поля.

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

Удалять нужно, двигаясь от последнего элемента к первому, иначе логика не понятна, а в некоторых случаях и не удаляется.

Макрос


Sub Макрос()

    Dim раздел As Section, колонт As HeaderFooter
    Dim i As Long
   
   
    ' Удаление контролов в тексте файла.
    For i = ActiveDocument.ContentControls.Count To 1 Step -1
        ActiveDocument.ContentControls(i).Delete
    Next i
   
    ' Удаление контролов в колонтитулах.
    For Each раздел In ActiveDocument.Sections
        ' Удаленик контролов в верхних колонтитулах.
        For Each колонт In раздел.Headers
            For i = колонт.Range.ContentControls.Count To 1 Step -1
                колонт.Range.ContentControls(i).Delete
            Next i
        Next колонт
        ' Удаленик контролов в нижних колонтитулах.
        For Each колонт In раздел.Footers
            For i = колонт.Range.ContentControls.Count To 1 Step -1
                колонт.Range.ContentControls(i).Delete
            Next i
        Next колонт
    Next раздел
   
    ' Сообщение.
    MsgBox "Готово.", vbInformation

End Sub
[свернуть]

vertraut

Супер, спасибо большое, макрос работает. Все удалил, текст оставил.