Макрос для обновления полей в формах (текстовых полях) в нижнем колонтитуле в Microsoft Word - PullRequest
0 голосов
/ 24 декабря 2018

Существуют отличные макросы для обновления всех полей в документах Microsoft Word (включая верхние и нижние колонтитулы).Точно так же: Макрос для обновления всех полей в текстовом документе

Но что, если верхние и нижние колонтитулы содержат текстовые поля с полями?Конечно, было бы лучше, чтобы там не было текстового поля, но что, если другого решения не существует?

Например, его можно применить к такой проблеме:

Мы должны сделатьшаблон текстового документа со стандартной формой, такой как этот: стандартная форма ГОСТ для текстовых документов Каждый лист содержит рамку с нижней таблицей и левую таблицу с некоторыми полями, такими как номер документа, редакции и т. д..

На мой взгляд, лучший способ сделать это - использовать ссылки на пользовательские свойства документа в полях, расположенных в нижнем колонтитуле.Но должны быть таблицы, которые занимают много места, сжимая основную текстовую область.Чтобы предотвратить это, мы могли бы переместить эти таблицы в большое текстовое поле на другом слое.Единственная проблема заключается в том, как обновить поля в этом текстовом поле ...

Этого можно достичь, выполнив следующие действия:

Get Active Document
Iterate through Footers in Active Document
  Iterate through Shapes in Footers in Active Document
    If the Shape has Text then
      Update Fields in the Shape
    End IF
  Next
Next

Итак, путь к объекту: ActiveDocument ->Нижний колонтитул -> TextBox -> Поле

Проблема в том, как туда добраться.Справочник по Microsoft Word-VB ничего не говорит о подобных ситуациях.

Тестовый документ: Тестовый документ MS-Word с полями в нижнем колонтитуле

Документ имеет 4 настраиваемых свойства для изменения:

  • Номер документа
  • Название документа
  • Тип продукта
  • Родительский номер

1 Ответ

0 голосов
/ 25 декабря 2018

Вы можете попробовать:

Sub UpdateFields()
Application.ScreenUpdating = False
With ActiveDocument
  .Fields.Update
  .PrintPreview
  .ClosePrintPreview
End With
Application.ScreenUpdating = True
End Sub

Что касается текстовых полей, вы можете заменить их таблицами из одной ячейки, с переносом, если необходимо.В отличие от текстовых полей, содержимое даже свернутых таблиц остается связанным с нижележащим текстовым слоем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...