Как я могу создать макрос в Word для даты до истечения одного года с сегодняшнего дня, который будет повторяться так же, как сегодняшняя дата будет в Word при вызове?

1 ответ1

0

Вы имеете в виду просто создание «23.12.2008»?

  • Введите Date \@ “MM/dd/”=date \@ “yyyy”+1 (или скопируйте и вставьте его) в документ Word.
    Кажется, что это без учета регистра (кроме форматов даты).
    И "прямые цитаты" (прямые цитаты) и "фигурные цитаты" (фигурные цитаты) кажутся взаимозаменяемыми.
  • Выберите Date \@ “MM/dd/” и нажмите Ctrl+F9, который изменит его на поле.  Он изменится на { Date \@ “MM/dd/” } и может иметь серый фон.  Это же преобразование будет происходить каждый раз, когда вы нажимаете Ctrl+F9.  Не вводите фигурные скобки!
  • Выберите date \@ “yyyy” и нажмите Ctrl+F9.
  • Выберите ={ date \@ “yyyy” }+1 и нажмите Ctrl+F9.  Теперь строка должна выглядеть так:
    { Date \@ “MM/dd/” }{ ={ date \@ “yyyy” }+1 } .
  • Затем выделите всю строку и нажмите F9 (не Ctrl+F9).
  • Если ничего не происходит, нажмите Shift+F9 (опять же, не Ctrl+F9), и это должно сделать это.

Это просто берет сегодняшнюю дату, форматирует ее как «MM /dd /» (то есть «12/23 /»), а затем следует за текущим годом плюс один.  (Если вы хотите другой формат, просто измените его.)  Например, если вы хотите «yyyy /MM /dd», измените начальный текст на =date \@ “yyyy”+1Date \@ “/MM/dd” и следуйте тем же инструкциям (с той разницей, что MM/dd/ был заменен на /MM/dd , так как вы хотите / между годом и месяцем, а не после дня).

Я не совсем уверен, что вы подразумеваете под «сохранить это как макрос и назвать его».  Может быть, это то, что вы хотите:

  • Введите Set best_date quote =date \@ “yyyy”+1Date \@ “/MM/dd” .  Возможно, вы захотите сделать это где-то в начале документа.
  • Выполните все шаги Ctrl+F9 сверху. 
  • Выберите quote { ={ date \@ “yyyy” }+1 }{ Date \@ “/MM/dd” } (т. Е. Все, начиная от quote до конца строки), и нажмите Ctrl+F9 .
  • Выберите Set best_date { quote { ={ date \@ “yyyy” }+1 }{ Date \@ “/MM/dd” } } (т. Е. Вся строка) и нажмите Ctrl+F9 .
  • Повторите последние два шага из приведенного выше списка (те, которые с F9 и Shift+F9).  Теперь все, что вы только что сделали, исчезнет, но вы определите «закладку» best_date содержащую дату следующего года.  Для всех практических целей это переменная; это может быть достаточно близко к тому, что вы имеете в виду, когда говорите «макро».
  • Теперь в любом месте документа, в котором вы хотите использовать будущую дату, введите best_date и превратите его в поле, как описано выше (Ctrl+F9, F9 и Shift+F9).

best_date это просто произвольный идентификатор.  Вы можете использовать любой действительный идентификатор, например, bob_string .

Предупреждение: если вы используете это 29 февраля 2020 года, на нем будет отображаться «2021/2/29», что не является допустимой датой.


Хорошо, в комментарии вы сообщили, что при сохранении и повторном открытии документа появляются поля, как

{ Set best_date { quote { ={ date \@ “yyyy” }+1 }{ Date \@ “/MM/dd” } } }

и дата не появляется.  Это контролируется глобальной настройкой Word.  Есть по крайней мере несколько способов исправить это:

  1. Как Microsoft говорит вам сделать это:
    • Зайдите в «Параметры слова».  В достаточно старых версиях Word (до 2010 года) доступ к нему осуществляется через «Сферу».  В Word 2010 и 2013 (и выше?) Это «Файл» → «Параметры».
    • Перейдите в «Дополнительно» (нажав «Дополнительно» в левом столбце окна «Параметры»).
    • Прокрутите вниз до раздела «Показать содержимое документа».
    • Нажмите на кнопку «Показать коды полей вместо их значений» , чтобы очистить (снимите) флажок.
  2. Гораздо более короткий путь:
    • Нажмите Alt+F9.  Однажды.  В любом документе.

Вам, конечно, придется сделать это (один из вышеперечисленных) один раз на каждой машине.  Вероятно, один раз на машину на пользователя.  Или просто попросите пользователей сделать это (я рекомендую Alt+F9 ), если они видят коды полей.

Я не уверен, что понимаю вашу другую проблему.  Вы говорите, что, если вы будете следовать вышеуказанным инструкциям 28 декабря 2017 года, вы получите желаемую будущую дату «2018/12/28», но если вы сохраните ее, а затем снова откроете ее 29 декабря, она будет до сих пор говорят «2018/12/28», но вы хотите, чтобы сказать «2018/12/29»?  Это немного сложнее.  Очевидно, что Microsoft Word написано, чтобы не обновлять поля при открытии документа (возможно, потому что теоретически это может занять много времени).  Вот два решения этого:

  1. Как описано здесьздесь),

    • выделите весь документ (простой способ сделать это - нажать Ctrl+A) и
    • нажмите F9.

    К сожалению, каждому пользователю придется учиться делать это каждый раз, когда они открывают документ (или, по крайней мере, каждый день).

  2. Как описано здесь, напишите макрос AutoOpen который говорит

    Sub AutoOpen()
        With Options
            .UpdateFieldsAtPrint = True
            .UpdateLinksAtPrint = True
        End With
        ActiveDocument.Fields.Update
    End Sub
    

    См. Как добавить VBA в MS Office? для общей информации о механике этого.

Я рекомендую вариант 1; Макросы могут быть грязными.  Но, если ваши пользователи сопротивляются изучению новых процедур, вариант 2 может быть лучшим выбором для вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .