powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Можно ли убрать нижний колонтитул только на последней странице док-та Word?
10 сообщений из 35, страница 2 из 2
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #37290061
_Вопрос?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил - и при печати тоже нет колонтитула на последней странице!
Спасибо большое за помощь и терпение!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38242142
_Ф_Ф_Ф_Ф_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использовал выложенный тут код, но вылезает ошибка:
При принудительном добавлении разрыва раздела, если этот раздел разделяет нумерованный абзац , то Ворд начинает считать, что после разрыва не продолжение текста, а новый абзац и нумерует его!
...
Рейтинг: 0 / 0
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38242193
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Ф_Ф_Ф_Ф_...раздел разделяет нумерованный абзац , то...
Здешний код вставляет разрыв в начале абзаца, что не приволит к нарушению форматирования. Вы же, вставляете разрыв либо в середине, либо в конце абзаца, вот и получаете "спецэфекты", как самый хитрый :) Разрыв действует как знак абзаца.
...
Рейтинг: 0 / 0
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38242370
_Ф_Ф_Ф_Ф_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раздел вставляется конкретно этим кодом:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Set WordDoc = WordApp.Documents.Open(OutPutch & TempName)
' заполнение закладок - формирование документа...
........................
'==================================================
    Dim n As Integer, R As Object, F As Object
    n = WordDoc.Range.Information(Type:=3) '(Word.wdActiveEndPageNumber=3)
    ' начало последней страницы
    '(Word.wdGoToPage =1, Word.wdGoToAbsolute=1)
    Set R = WordDoc.GoTo(What:=1, _
                   Which:=1, _
                   Count:=n)
     ' вставляем разрыв раздела
    R.InsertBreak Type:=2 '(Word.wdSectionBreakNextPage=2)
    ' перебираем нижние колонтитулы
    For Each F In WordDoc.Range.Sections.Last.Footers
        F.LinkToPrevious = False ' отсоединяем
        F.Range.Delete ' очищаем
    Next F

на строке
Код: vbnet
1.
R.InsertBreak Type:=2 

делаем точку останова, к этому моменту документ уже сформирован и выглядит так:
на предпоследней странице начинается абзац, который переходит на последнюю страницу без всяких выкрутасов. После отработки указанной строки в документ вставляется разрыв именно в конце предпоследней страницы, и продолжение текста абзаца становится ...новым абзацем!
Что не так? Подскажите, пожалуйста, такие тонкости Word-VBA я не знаю!
...
Рейтинг: 0 / 0
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38242458
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Ф_Ф_Ф_Ф_...на предпоследней странице начинается абзац, который переходит на последнюю...
Тогда да, будет нумерация. С утра дошло :)
Чтобы отрезать переходный параграф целиком:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
...
    Dim n As Long, R As Object, F As Object
    ' начало последней страницы
    n = WordDoc.Range.Information(Type:=3) ' 3=Word.wdActiveEndPageNumber
    Set R = WordDoc.GoTo(What:=1, Which:=1, Count:=n) ' 1=Word.wdGoToPage, 1=Word.wdGoToAbsolute
    ' отрезаем
    n = R.Paragraphs.First.Range.Start
    If R.Start <> n Then R.End = n
    R.InsertBreak Type:=2 ' 2=Word.wdSectionBreakNextPage
    ' перебираем нижние колонтитулы
    For Each F In WordDoc.Range.Sections.Last.Footers
        F.LinkToPrevious = False ' отсоединяем
        F.Range.Delete ' очищаем
    Next F
...


Чтобы разрезать параграф на два:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
...
    Dim n As Long, R As Object, F As Object
    ' начало последней страницы
    n = WordDoc.Range.Information(Type:=3) ' 3=Word.wdActiveEndPageNumber
    Set R = WordDoc.GoTo(What:=1, Which:=1, Count:=n) ' 1=Word.wdGoToPage, 1=Word.wdGoToAbsolute
    ' смещение от начала параграфа
    n = R.Start - R.Paragraphs.First.Range.Start
    ' отрезаем раздел
    R.InsertBreak Type:=2 '2 - Word.wdSectionBreakNextPage
    ' коррекция форматирования с учетом списков
    If n <= 0 Then
    ElseIf R.ListParagraphs.Count <= 0 Then
    Else
        ' убираем нумерацию
        R.ListFormat.RemoveNumbers NumberType:=1 '1 - Word.wdNumberParagraph
        ' восстанавливаем отступ
        With R.Previous(Unit:=4).ParagraphFormat '4 - Word.wdParagraph
            R.ParagraphFormat.FirstLineIndent = 0
            R.ParagraphFormat.LeftIndent = .LeftIndent
        End With
    End If
    ' перебираем нижние колонтитулы
    For Each F In WordDoc.Range.Sections.Last.Footers
        F.LinkToPrevious = False ' отсоединяем
        F.Range.Delete ' очищаем
    Next F
...
...
Рейтинг: 0 / 0
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38243991
_Вопрос?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
Первый код работает "на ура", проблема только если "переходной" параграф (далее - ПП) занимал на предпоследней странице значительную часть, и после его переноса остаётся бросающиеся в глаза пустое место...

А второй код делает вот что: до его срабатывания ПП заканчивался на предпоследней странице строкой Х, последняя страница начиналась со строки Х+1.
После запуска процедуры, при первом проходе строки
Код: vbnet
1.
objFooter.LinkToPrevious = False ' отсоединяем

в документ вставляется новая предпоследняя страница, на неё переносится начало ПП по строку Х включительно. Остальная часть новой страницы пустая. Последняя страница начинается со строки Х+1 ПП.
В таком виде документ и идёт на печать...

Если документ на печать не отправлять, а открыть сначала его предварительный просмотр, то вся эта хренотень с новой страницей пропадает(пробовали на нескольких машинах): начало ПП возвращается на своё место. лишняя страница удаляется, последняя страница начинается со строки Х+1 без ненужной нумерации...
...
Рейтинг: 0 / 0
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38244052
_Вопрос?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно обойтись без этих принудительных разрывов и обработки параграфа?
Если на последней странице нижний колонтитул "накрыть" непрозрачным прямоугольником с бесцветной границей?

Вопрос: как задать этому прямоугольнику размеры и координаты нижнего колонтитула?
...
Рейтинг: 0 / 0
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38244442
_Вопрос?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот, сляпал на коленке:
Код: vbnet
1.
2.
3.
4.
5.
6.
'число страниц в док-те
i = WordDoc.Range.Information(Type:=3) 'Word.wdActiveEndPageNumber
If i > 1 Then 'только для многостраничных док-тов
    WordDoc.Shapes.AddShape(1, 45.85, 793.35, 504#, 45#).Select
    WordDoc.Range.ShapeRange.Line.Visible = 0
End If

добавляется непрозрачный прямоугольник поверх колонтитула последнего листа.
Способ не универсальный - так и не нашёл как программно задавать параметры прямоугольника, поэтому числа - "среднепотолочные"...
...
Рейтинг: 0 / 0
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38244519
Фотография Сын вождя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Вопрос?...задать этому прямоугольнику размеры и координаты нижнего колонтитула...
По идее, колонтитулы не должны выходить за поля страницы. Если это так, то:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    With WordDoc.Sections(WordDoc.Sections.Count).PageSetup
        With WordDoc.Shapes.AddShape( _
                    Type:=1, _
                    Left:=0, _
                    Top:=.PageHeight - .BottomMargin, _
                    Width:=.PageWidth, _
                    Height:=.BottomMargin)  ' 1 = msoShapeRectangle
            .Fill.Solid
            .Fill.ForeColor.RGB = RGB(255, 255, 255)
            .Line.Visible = 0 ' msoFalse
        End With
    End With
...
Рейтинг: 0 / 0
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
    #38495120
ЕгорМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сын вождя,
Подскажите плз обратную ситуацию, когда нужно иметь уникальный верхний колонтитул для 1 страницы(с этим всё понятно) и уникальный нижний только на последней странице. Как сделать нижний колонтитул только на последней странице?
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]