Word VBA Макросы: Определить наличие колонок текста

Автор Anton, 16 ноября 2017, 09:32

Anton

Добрый день!
Попался мне документ, в котором я не смог изменить поле снаружи (Параметры страницы - Поля: снаружи (2 см) - Применить для всего документа). А всему виной оказались колонки, которые созданы в одном из разделов, но не видны. Я очень долго их искал, чтобы удалить.
Можно ли как-то найти такую структуру макросом (найти текст в колонках)? Или найти как-то еще такой сбойный раздел, где невозможно изменить размер полей. Пример приложил. Если нельзя макросом, то посоветуйте пожалуйста, как быть.

[вложение удалено администратором]

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

Если в файле не должно быть колонок, то можно удалить колонки: вкладка "Макет" - Колонки - Другие столбцы... - выберите "Одна" - выберите "Ко всему документу".
А затем меняйте поля.

Цитата:
Или найти как-то еще такой сбойный раздел, где невозможно изменить размер полей.

Не знаю, как такое сделать, для меня это сложная задача.

Вообще, найти раздел, в котором есть колонки, наверное можно с помощью макроса.

Anton

Спасибо!
Как удалить колонки - я знаю. А вот найти их я сразу не смог. Будет удобно, если такую операцию сможет сделать макрос. Надеюсь на Вашу помощь!

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

Макрос отображает информацию о колонках в новом пустом файле.

Макрос
Sub макрос()

    Dim doc_res As Document, res As Collection
    Dim sec As Section, i As Long
   
   
    '1. Создание коллекции, в которую запишутся данные.
    Set res = New Collection
   
    '2. Запись в коллекцию информации по колонкам.
    ' Цикл по всем разделам файла.
    For Each sec In ActiveDocument.Sections
        ' Если в разделе есть колонки.
        If sec.PageSetup.TextColumns.Count > 1 Then
            ' Запись в коллекциию номера страницы и номера раздела, где находятся колонки.
            res.Add Item:=sec.Range.Characters(1).Information(wdActiveEndPageNumber) & " / " & sec.Index
        End If
    Next sec
   
    '3. Если нет колонок, то выход из макроса.
    If res.Count = 0 Then
        MsgBox "Колонок нет.", vbInformation
        Exit Sub
    End If
   
    '4. Отображение результата на мониторе.
    ' Создание пустого файла и присваиваивание ему имени "doc_res".
    Set doc_res = Documents.Add
    ' Запись заголовка, чтобы юзер понимал, что означают числа.
    doc_res.Range.InsertAfter "страницы / разделы" & Chr(13)
    ' Копирование данных из коллекции в ворд-файл.
    For i = 1 To res.Count
        doc_res.Range.InsertAfter res(i) & Chr(13)
    Next i
   
    '5. Сообщение.
    MsgBox "В файле есть колонки." & vbCr & "Информация о колонках отображена в активном файле.", vbExclamation

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

Anton

Супер! Проверил.
Нашел еще одни лишние колонки у себя в документе там, где даже и не думал!
Огромное спасибо!