Как я могу создать макрос в Word для даты до истечения одного года с сегодняшнего дня, который будет повторяться так же, как сегодняшняя дата будет в Word при вызове?
1 ответ
Вы имеете в виду просто создание «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. Есть по крайней мере несколько способов исправить это:
- Как Microsoft говорит вам сделать это:
- Зайдите в «Параметры слова». В достаточно старых версиях Word (до 2010 года) доступ к нему осуществляется через «Сферу». В Word 2010 и 2013 (и выше?) Это «Файл» → «Параметры».
- Перейдите в «Дополнительно» (нажав «Дополнительно» в левом столбце окна «Параметры»).
- Прокрутите вниз до раздела «Показать содержимое документа».
- Нажмите на кнопку «Показать коды полей вместо их значений» , чтобы очистить (снимите) флажок.
- Гораздо более короткий путь:
- Нажмите Alt+F9. Однажды. В любом документе.
Вам, конечно, придется сделать это (один из вышеперечисленных) один раз на каждой машине. Вероятно, один раз на машину на пользователя. Или просто попросите пользователей сделать это (я рекомендую Alt+F9 ), если они видят коды полей.
Я не уверен, что понимаю вашу другую проблему. Вы говорите, что, если вы будете следовать вышеуказанным инструкциям 28 декабря 2017 года, вы получите желаемую будущую дату «2018/12/28», но если вы сохраните ее, а затем снова откроете ее 29 декабря, она будет до сих пор говорят «2018/12/28», но вы хотите, чтобы сказать «2018/12/29»? Это немного сложнее. Очевидно, что Microsoft Word написано, чтобы не обновлять поля при открытии документа (возможно, потому что теоретически это может занять много времени). Вот два решения этого:
-
- выделите весь документ (простой способ сделать это - нажать Ctrl+A) и
- нажмите F9.
К сожалению, каждому пользователю придется учиться делать это каждый раз, когда они открывают документ (или, по крайней мере, каждый день).
Как описано здесь, напишите макрос
AutoOpen
который говоритSub AutoOpen() With Options .UpdateFieldsAtPrint = True .UpdateLinksAtPrint = True End With ActiveDocument.Fields.Update End Sub
См. Как добавить VBA в MS Office? для общей информации о механике этого.
Я рекомендую вариант 1; Макросы могут быть грязными. Но, если ваши пользователи сопротивляются изучению новых процедур, вариант 2 может быть лучшим выбором для вас.