Автор Тема: Word VBA Макросы: Удаление полей ввода в колонтитулах.  (Прочитано 51 раз)

Оффлайн vertraut

  • Посетитель форума
  • Сообщений: 2
Есть необходимость удалить все поля ввода в колонтитулах. В теле документа я удаляю их так:

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

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

Оффлайн Администратор

  • Administrator
  • Сообщений: 1719
Удалять нужно, двигаясь от последнего элемента к первому, иначе логика не понятна, а в некоторых случаях и не удаляется.

Макрос

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

  • Посетитель форума
  • Сообщений: 2
Супер, спасибо большое, макрос работает. Все удалил, текст оставил.