Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Можно ли убрать нижний колонтитул только на последней странице док-та Word? / 25 сообщений из 35, страница 1 из 2
30.05.2011, 19:05
    #37286144
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Создаю документ программно из Access на основе шаблона. VBA-Word знаю очень приблизительно, но интуичу, что подобное проделать можно только в самом Word, создав в нём какой-то макрос. Может кто-то делал подобное?
...
Рейтинг: 0 / 0
31.05.2011, 08:32
    #37286576
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Dim F As Word.HeaderFooter
    
    Set D = ActiveDocument
    ' вставляем разрыв раздела в конце документа
    With D.Range
        .Collapse Direction:=Word.wdCollapseEnd
        .InsertBreak Type:=Word.wdSectionBreakNextPage
    End With
    ' перебираем нижние колонтитулы
    For Each F In D.Range.Sections.Last.Footers
        F.LinkToPrevious = False ' отсоединяем
        F.Range.Delete ' очищаем
    Next F
Если страница уже набрана, то разрыв раздела вставляем в ее начале.
...
Рейтинг: 0 / 0
31.05.2011, 12:22
    #37286969
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Спасибо! А где находится процедура, на стороне Access или в самом Word? Если - последнее, то на какое событие документа её поместить?
...
Рейтинг: 0 / 0
31.05.2011, 14:29
    #37287299
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Попробовал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Document_Open()
Dim F As Word.HeaderFooter, D As Document
    
    Set D = ActiveDocument
    ' вставляем разрыв раздела в конце документа
    With D.Range
        .Collapse Direction:=Word.wdCollapseEnd
        .InsertBreak Type:=Word.wdSectionBreakNextPage
    End With
    ' перебираем нижние колонтитулы
    For Each F In D.Range.Sections.Last.Footers
        F.LinkToPrevious = False ' отсоединяем
        F.Range.Delete ' очищаем
    Next F
End Sub
Если открывать файл напрямую, то в конце док-та добавляется ещё одна страница, у которой нет нижнего колонтитула.
Если же открывать файл из другой программы:
Код: plaintext
1.
2.
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open("N:\...\rptDog.doc")
WordApp.Visible = True
то в конец добавляются почему-то 2 пустые страницы без нижних колонтитулов.
Если заменить Word.wdCollapseEnd на Word.wdCollapseStart, то, открывая файл напрямую, получаем картину аналогичную первому варианту. Если же открывать файл из другой программы, то одна пустая станица добавляется в начало(нижний колонтитул у неё есть), а другая - в конец документа(эта - без колонтитула).

Может как-то поможет то, что в документе всегда 6 страниц и убрать колонтитул надо на 6-ой?
...
Рейтинг: 0 / 0
31.05.2011, 15:35
    #37287519
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
_Вопрос?...в документе всегда 6 страниц...
Если шаблон уже готов (в смысле число страниц не меняется), то макрос не нужен, достаточно подправить шаблон. Если страницы создаются программно, то мой код надо интегрировать в ваш. Короче, надо знать структуру шаблона и методику его обработки.
...
Рейтинг: 0 / 0
31.05.2011, 16:03
    #37287611
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Шаблон уже готов заранее. Это текст договора с расположенными в нужных местах закладками, в программе я подставляю в закладки нужные значения и, либо вывожу док-т для просмотра, либо отправляю его на печать.
Подправить шаблон не получилось - удаление колонтитула на любой странице автоматически удаляет его и на остальных страницах.
...
Рейтинг: 0 / 0
31.05.2011, 18:29
    #37287989
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Тогда достаточно отредактировать шаблон:
- вставить "разрыв раздела" со следующей страницы в начале последней страницы
- в получившемся разделе войти в колонтитул и отключить параметр "как в предыдущем разделе"
- почистить колонтитул.

Можно и так:
- откройте ваш шаблон в Word через "Открыть"
- запустите мой макрос
- в шаблон добавится пустая страница без колонтитула
- вырезаем предпоследнюю страницу и вставляем на последнюю
- сохраняем
...
Рейтинг: 0 / 0
31.05.2011, 18:32
    #37287991
Electro_Nick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Может оставить колонтитул оставить как есть, потому что:
удаление колонтитула на любой странице автоматически удаляет его и на остальных страницах,
а печатать документ с помощью макроса:
- 5 страниц с колонтитулом на печать,
- автоматически удаляем колонтитул
- печатаем 6 страницу
- восстанавливаем колонтитул.

P.S. Только как он правильно печатает по-странично?
...
Рейтинг: 0 / 0
31.05.2011, 18:44
    #37288020
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
авторМожно и так:
- откройте ваш шаблон в Word через "Открыть"
- запустите мой макрос
- в шаблон добавится пустая страница без колонтитула
- вырезаем предпоследнюю страницу и вставляем на последнюю
- сохраняемНа первый взгляд всё получилось, но только на первый:
- последняя страница содержит всего неск. строк
- если на любой из 5 предыдущих страниц вставить текста столько, что на последнюю страницу перейдёт хотя бы одна строка, то появляется ещё один лист с этой самой перешедшей строкой(и с колонтитулом)
- последняя же страница становится уже 7-ой (правда, без колонтитула!).
...
Рейтинг: 0 / 0
31.05.2011, 19:00
    #37288051
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Может такое происходит из-за добавленного в макросе разрыва раздела?

Вывел на экран колонтитулы документа. У последнего листа(который макрос добавил), в верхнем колонтитуле написано слева вверху:
"Верхний колонтитул. Раздел 2", у остальных листов: "...Раздел 1"
а справа вверху у нового листа написано: "как в предыдущем", у остальных листов - ничего.
...
Рейтинг: 0 / 0
31.05.2011, 19:02
    #37288054
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
_Вопрос?...Шаблон уже готов заранее...
...появляется ещё один лист...
Данные вставляемые в шаблон, могут сильно сдвигать текст, и сколько будет страниц и что будет на последней неизвестно. Я правильно понимаю? Тогда, придется подправить мой код и интегрировать в ваш.
...
Рейтинг: 0 / 0
31.05.2011, 19:15
    #37288071
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Не совсем так: данные вставляемые в шаблон могут сдвинуть текст вниз максимум строк на 20, и то я не представляю какие строки должны вставляться для такого сдвига... но и тогда до конца последнего листа будет ещё много места.

В реальности текст сдвигается на 5 - 10 строк.
...
Рейтинг: 0 / 0
31.05.2011, 19:20
    #37288079
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Может я невнятно описал, что сейчас происходит при сдвиге текста на новую последнюю страницу?
Если совсем коротко, то она не принимает текст сдвигаемый сверху, а подставляет для этого впереди себя ещё одну страницу. Так лучше?
...
Рейтинг: 0 / 0
31.05.2011, 19:20
    #37288081
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Попробуйте в конце вашего кода добавить:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Dim D As Word.Document
Dim R As Word.Range
Dim F As Word.HeaderFooter
Dim N As Long
    
    ' документ
    Set D = ActiveDocument ' заменить вашим
    ' всего страниц
    N = D.Range.Information(Type:=Word.wdActiveEndPageNumber)
    ' начало последней страницы
    Set R = D.GoTo(What:=Word.wdGoToPage, _
                   Which:=Word.wdGoToAbsolute, _
                   Count:=N)
     ' вставляем разрыв раздела
    R.InsertBreak Type:=Word.wdSectionBreakNextPage
    ' перебираем нижние колонтитулы
    For Each F In D.Range.Sections.Last.Footers
        F.LinkToPrevious = False ' отсоединяем
        F.Range.Delete ' очищаем
    Next F
...
Рейтинг: 0 / 0
31.05.2011, 19:29
    #37288096
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
_Вопрос?...подставляет для этого впереди себя ещё одну страницу...
Если известно точно, где всегда будет начало последней страницы (т.е. если оно неизменно до и после вставки данных), то достаточно подправить шаблон, и макрос не нужен.
...
Рейтинг: 0 / 0
31.05.2011, 19:36
    #37288103
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Желательно видеть шаблон, а то может там уже есть своя жесткая разбивка на страницы.
...
Рейтинг: 0 / 0
31.05.2011, 19:42
    #37288111
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Не понял:
процедуру куда добавить, к макросу Ворда?авторЕсли известно точно, где всегда будет начало последней страницы (т.е. если оно неизменно до и после вставки данных), то достаточно подправить шаблон, и макрос не нужен.
Поясните, например, в сохранённом шаблоне, из-за того, что часть его текста заменена на закладки, последний лист начинается со строки : "Реквизиты сторон:", ниже 4 строки этих самых реквизитов и ещё ниже - подписи. Всё. Конец док-та.
Теперь подставляем значания в закладки, общая длина текста увеличивается и, скажем, 3 строки переползают на посл.лист.
Теперь он начинается со строки: "Первая перешедшая строка", ниже идут " Вторая" и "Третья" и уже после них: "Реквизиты сторон: и т.д.
Я не понял как может быть начало последней страницыавторнеизменно до и после вставки данных
...
Рейтинг: 0 / 0
31.05.2011, 19:44
    #37288113
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Нет там жёсткой разбивки на странице, при увеличении числа строк на ранних листах, они плавно перетекают на следующие листы.
...
Рейтинг: 0 / 0
31.05.2011, 21:20
    #37288233
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
_Вопрос?...куда добавить, к макросу Ворда?...
В конец вашего VBA-кода в Access. Ничего не меняя, можно запустить макрос в Word: последняя страница любого документа будет оформлена без нижнего колонтитула.
_Вопрос?...как может быть начало последней страницы неизменно...
По всякому, зависит от того, как оформлен ваш шаблон.
...
Рейтинг: 0 / 0
31.05.2011, 21:31
    #37288259
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
В Access это будет выглядеть приблизительно так:
Код: plaintext
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.
28.
Option Explicit

Sub Макрос()

Dim A As Word.Application
Dim D As Word.Document
Dim R As Word.Range
Dim F As Word.HeaderFooter
Dim N As Long
    
    ' документ
    Set A = CreateObject("Word.Application")
    Set D = A.Documents.Add(Template:="C:\Шаблон.dot")
    A.Visible = True
    ' всего страниц
    N = D.Range.Information(Type:=Word.wdActiveEndPageNumber)
    ' начало последней страницы
    Set R = D.GoTo(What:=Word.wdGoToPage, _
                   Which:=Word.wdGoToAbsolute, _
                   Count:=N)
     ' вставляем разрыв раздела
    R.InsertBreak Type:=Word.wdSectionBreakNextPage
    ' перебираем нижние колонтитулы
    For Each F In D.Range.Sections.Last.Footers
        F.LinkToPrevious = False ' отсоединяем
        F.Range.Delete ' очищаем
    Next F
        
End Sub
Тестировал. Работает.
...
Рейтинг: 0 / 0
01.06.2011, 14:35
    #37289321
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Попробовал процедуру оставить в Word:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub Document_Open()
Dim F As Word.HeaderFooter, D As Word.Document, n As Integer, R As Word.Range
Set D = ActiveDocument
' всего страниц
n = D.Range.Information(Type:=Word.wdActiveEndPageNumber)
' начало последней страницы
Set R = D.GoTo(What:=Word.wdGoToPage, _
                Which:=Word.wdGoToAbsolute, _
                Count:=n)
' вставляем разрыв раздела
R.InsertBreak Type:=Word.wdSectionBreakNextPage
' перебираем нижние колонтитулы
For Each F In D.Range.Sections.Last.Footers
    F.LinkToPrevious = False ' отсоединяем
    F.Range.Delete ' очищаем
Next F
End Sub
После открытия док-нт имеет нижние колонтитулы, только на первых 2 листах из 6-и!
Я тихонечко шизею...
...
Рейтинг: 0 / 0
01.06.2011, 16:27
    #37289647
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
_Вопрос?...док-нт имеет нижние колонтитулы, только на первых 2 листах из 6-и...
Мой макрос категорически нельзя совать в событие открытия документа! А то макрос будет отрабатывать каждый раз при открытии самого шаблона или документа, созданного на его основе, что недопустимо. Макрос должен отработать только один раз и после заполнения документа.

Что конкретно не работает в Access? Ведь если, как вы пишите "создаю документ программно из Access", то добавить в конец вашего кода мой не представляет сложности. Может вы в Access > VBA > Tools > References не подключили библиотеку "Microsoft Word"?
...
Рейтинг: 0 / 0
01.06.2011, 17:07
    #37289786
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
авторМожет вы в Access > VBA > Tools > References не подключили библиотеку "Microsoft Word"?Да, я использую позднее связывание. Добавил Ваш код, с некоторыми изменениями:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
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
'==================================================
.................
На строке
Код: plaintext
R.InsertBreak Type:= 2 
получаю ошибку: Метод или свойство недоступны, поскольку объект ссылается на защищенную область документа.
...
Рейтинг: 0 / 0
01.06.2011, 18:08
    #37289944
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
_Вопрос?Set WordDoc = WordApp.Documents.Open
А почему Open, а не Add? Так вы открываете сам шаблон, а в начале писали "Создаю документ программно из Access на основе шаблона". Но это не важно, и вам виднее.
_Вопрос?получаю ошибку
Я уже устал гадать, как оформлен ваш шаблон :) Может в нем есть области, защищенные от изменений, тогда естественно может появиться ошибка.
...
Рейтинг: 0 / 0
01.06.2011, 18:59
    #37290032
_Вопрос?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли убрать нижний колонтитул только на последней странице док-та Word?
Да, всё в порядке оказалось!
Это я впопыхах добавил новые строки аккурат после строки, где я защищаю док-т от изменений...
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Можно ли убрать нижний колонтитул только на последней странице док-та Word? / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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