Статьи из блога
Запрет обновления полей с разорванными связями
Сергей поинтересовался:
Прошу Вас рассказать, как в WORD 2003 запретить обновление полей во всем документе (включая колонтитулы) при печати этого документа.
Чтобы текстовые поля документа не обновлялись при печати, снимите флажок с опции "Обновлять поля" и "Обновлять связи" из вкладки Печать диалогового окна Параметры (меню Сервис - команда Параметры).
Позже Сергей уточнил свой вопрос и сообщил новые данные:
Проблема в том, что поля в документе имеют разорванные связи и документ при открытии выглядит как обычно, но, если его распечатать или перевести в PDF, то поля в документе обновляются, а обновляться неоткуда, и вместо текста появляется код данного поля. Поэтому приходиться вручную запрещать обновление каждого поля, что существенно снижает преимущество донного способа оформления.
В этом случае попробуйте следующий макрос, запрещающий обновление полей во всем документе и во всех разделах, в колонтитулах и в надписях, которые содержаться в колонтитулах:
Sub fieldLocked() 'Запрет на обновление полей документа во всем документе и во всех разделах Dim aStory As Range Dim oSection As Section Dim HF As HeaderFooter Dim aField As Field Dim rngStory As Word.Range Dim oShp As Word.Shape 'Запрет обновления полей во всем тексте For Each aStory In ActiveDocument.StoryRanges For Each aField In aStory.Fields aField.Locked = True Next aField Next aStory 'Запрет обновления полей в колонтитулах For Each oSection In ActiveDocument.Sections For Each HF In oSection.Headers HF.Range.Fields.Locked = True Next HF For Each HF In oSection.Footers HF.Range.Fields.Locked = True Next HF Next oSection 'Запрет обновления полей в надписях в колонтитулах For Each rngStory In ActiveDocument.StoryRanges Do On Error Resume Next rngStory.Fields.Update Select Case rngStory.StoryType Case 6, 7, 8, 9, 10, 11 If rngStory.ShapeRange.Count > 0 Then For Each oShp In rngStory.ShapeRange If oShp.TextFrame.HasText Then oShp.TextFrame.TextRange.Fields.Locked = True End If Next oShp End If Case Else 'Do Nothing End Select On Error GoTo 0 'Get next linked story (if any) Set rngStory = rngStory.NextStoryRange Loop Until rngStory Is Nothing Next rngStory End Sub
Чтобы вернуть возможность автоматического обновления полей, можно использовать этот же макрос, но заменив в нем свойство "Locked = True" на "Locked = False".
Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:
Создание макроса из готового кода
Метки: макросы | поля | связи
Просмотров: 23329
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Microsoft Office: популярные команды на одной вкладке
- Ribbon XML Editor — программа редактирования интерфейса Word 2007, 2010
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение всех открытых документов
- Автоматическое сохранение документа при его закрытии
- Автотекст и Word 2007
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Белый текст на синем фоне: ностальгия по DOS
- Быстрая смена ориентации страниц документа
- Быстрая смена регистра букв (слов) или их размеров
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
Комментариев: 5
Почему после прямого и обратного применения данного макроса исчезают созданные рисунки? Как этого избежать?
Вставленные рисунки остаются на месте.
сорри, правильнаое сочетание- CTRL+Shift+F9
если поля и связи в документе больше не нужны, то выделите их и преобразуйте в текст, нажав Ctrl+Shift+F9
Подскажите. какой командой можно определить находится курсор в редактируем поле или в поле запрещенном для редактирования
Благодарю!