Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2009, 15:46   #1
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию Колонтитулы: как в предыдущем и поля

Добрый день!
Не подскажите, что в этом коде не так. Назначение этого кода: убрать во всех верхних колонтитулах Как в предыщем и превратить Поля (в колонтитулах есть поля) в обычный текст.

Sub КолонтКакВПредУбир()
'Убираем во всем документе в верхнем колонтитуле Как в предыдущем и удаляем поля
Dim x As Integer
Dim oSec As Section
Dim oHeadr As HeaderFooter
'Убираем Как в предыдущем
For x = 2 To ActiveDocument.Sections.Count
ActiveDocument.Sections(x).Headers( wdHeaderFooterPrimary).LinkToPrevio us = False
Next
'Удаление полей в верхних колонтитулах
For Each oSec In ActiveDocument.Sections
For Each oHeadr In oSec.Headers
oHeadr.Range.Fields.Unlink
Next oHeadr
Next oSec
End Sub

Последний раз редактировалось Busine2009; 29.07.2009 в 15:50.
Busine2009 вне форума Ответить с цитированием
Старый 29.07.2009, 18:03   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

А что, собственно, не работает? Связь не разрывается между колонтитулами?
Сюда ходи. Может поможет.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 29.07.2009, 18:17   #3
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Проблема в том, что как это ни странно, но вторая часть этого кода - а именно

'Удаление полей в верхних колонтитулах
For Each oSec In ActiveDocument.Sections
For Each oHeadr In oSec.Headers
oHeadr.Range.Fields.Unlink
Next oHeadr
Next oSec
End Sub

срабатывает раньше первой. Но я точно не устанавливал тонкостей. Т.е. происходит что: поле превращается в текст и только затем отжимается Как в предыдущем. В результате в разных раздел оказывается один и тот же колонтитул. Это еще не все. Я разделил эти 2 части на 2 макроса: сделал 2 кнопки, и что удивительно - их нельзя нажимать сразу одна за другой, потому что второй макрос снова опережает первый. Хотя если взглянуть на кнопку отмена действий (на стрелочку), то порядок действий правильный. Но если второй макрос запустить чуть позже, то всё срабатывает. В результате я в первом макросе добавил появляние Окна с сообщением: Закрой и посчитай до 10.
Busine2009 вне форума Ответить с цитированием
Старый 29.07.2009, 19:54   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

нужно проверить разрывается ли связь с предыдущим. Дело в том, что ошибка не возникает, но и связь не разрывается.

Поставь Breakpoint на операторе Next из первого цикла и посмотри в Immediate что даст строка ?ActiveDocument.Sections(x).Headers ( wdHeaderFooterPrimary).LinkToPrevio us
Если связь с предыдущим разделом разорвана, то даст, естественно False
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 29.07.2009, 20:44   #5
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Да я проверил с помощью Breakpoint and Immediate - связь разрывается: Как в предыдущем убирается.
Вот файл. Если хотите проверьте.
В конце документа код макроса.
Только что ещё кое-что обнаружил: после применения макроса во всех колонтитулах становится название того раздела, где стоял курсор, а не Заголовка 1.
Вложения
Тип файла: doc Колонтитулы.doc (46.0 Кб, 30 просмотров)

Последний раз редактировалось Busine2009; 29.07.2009 в 20:49.
Busine2009 вне форума Ответить с цитированием
Старый 30.07.2009, 03:01   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Проверил. Все работает. Результат в приложении. Использовал макрос, приведенный в первом посте
Вложения
Тип файла: doc Колонтитулы.doc (55.5 Кб, 32 просмотров)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 30.07.2009, 09:01   #7
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Проверил. Все работает.
Тогда у меня один вывод, что у вас настройки в VBA свои. Т.к. у меня не работает на 2-х компьютерах.
Busine2009 вне форума Ответить с цитированием
Старый 06.08.2009, 22:24   #8
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

У меня не работает макрос по превращению полей в колонтитулах в текст: в каких-то колонтитулах правильно работает, в каких-то нет. Буду использовать ручное преобразование полей в текст.
Busine2009 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать колонтитулы на нужных страницах? Окоча Юра Microsoft Office Word 4 12.06.2009 21:38
Как подсчитать пустые поля? mike_cheb Microsoft Office Access 6 18.03.2009 12:59
Разные колонтитулы на двух страницах одного листа Dorvir Microsoft Office Excel 1 14.06.2008 12:25
Колонтитулы при альбомной ориентации в MS Word OldNick85 Microsoft Office Word 1 14.11.2007 07:12