Статьи из блога
Календарь Word
Ольга спрашивает:
Можно ли в Word сделать маленький календарик, который можно было бы вызывать по кнопке на панели инструментов? Наподобие такого, как в Excel или как в 1С?
Можно. В зарубежном интернете есть отличная статья Мартина Грина на эту тему (на тему календаря, а не 1С, конечно же): .
Мартин разрешил мне воспользоваться его опытом и опубликовать эту статью на моем сайте. Но переводить всю статью не имеет смысла: она большая и подробная; я лишь изложу ее основные моменты. В итоге, мы должны получить примерно вот такой календарь:

Для тех, кто не хочет самостоятельно создавать календарь, в конце заметки я дам ссылку на шаблон с созданным по этой заметке календарем. Вам останется лишь загрузить его на свой компьютер.
Те же пользователи, кто работает с основном с таблицами Excel, могут найти аналогичную статью на сайте .
Итак, приступим.
- Во-первых, создайте пустой документ Word и сохраните его как шаблон под именем WordPopupCalendar.dot. Безусловно, можно создать календарь и в глобальном шаблоне Normal.dot, чтобы он был всегда доступен, но в этот раз мы создадим новый шаблон. В дальнейшем, это позволит вам передавать ваш шаблон с календарем своим друзьям и коллегам, а доступность календаря мы обеспечим размещением шаблона в папке автозагрузок редактора Word.
- Далее, откройте редактор Visual Basic с помощью сочетания клавиш «Alt»+«F11». Появится пустое окно редактора. Нажмите клавишу «F7», чтобы перейти к окну кода.
- Теперь мы должны создать сам календарь в виде появляющегося окошка. Для этого в меню Insert выберите команду UserForm. Откроется пустая форма диалогового окна с панелью инструментов Toolbox:
- Щелкните по заголовку панели Toolbox. Скорее всего, на панели отсутствует иконка для создания календаря. В этом случае следует выбрать в меню Tools команду Additional Controls. Откроется диалоговое окно, в котором найдите и установите флажок у элемента Элемент управления Календарь 11.0, как на рисунке ниже:
- Щелкните указателем мыши на появившемся на панели Toolbox элементе Calendar и нарисуйте на форме квадрат, чтобы календарь занял всю форму. Впрочем, можете и уменьшить его размеры. Как вам будет угодно. Получится примерно так:
- Теперь можно настроить свойства календаря, в частности, его внешний вид. Как вы можете видеть, календарь использует краткую форму вывода даты, что не очень красиво и удобно. Изменим это. В панели свойств (Properties - Calendar1) щелкните на правой ячейке строки (Custom):
- Щелкните на заголовке формы, а затем в панели ее свойств измените значение строки (Name) "UserForm1" на значение "frmCalendar", а значение строки Caption "UserForm1" на значение "Календарь - Выберите дату". Заголовок нашей формы изменится.
- Для начала установим возможность закрывать форму календаря по нажатию клавиши «Esc», как альтернативу кнопке в правом верхнем углу окна. Иногда это удобнее. Поместим прямо на календарь кнопку, выбрав ее с панели Toolbox (кнопка называется CommandButton). Кнопка сама по себе будет скрыта от пользователя, но на этапе разработки мы видим ее контуры.
- В панели свойств кнопки (она должна быть в данный момент выделена у вас) измените значение строки (Name) "CommandButton1" на значение "cmdClose", а значение строки Cancel "false" на значение "True"
- Дважды щелкните по контуру вашей кнопки (или нажмите клавишу «F7»), чтобы перейти в окно кода и между строками кода введите: Unload Me. Итоговый код должен выглядеть так:
- Теперь напишем код для вставки выбранной даты в документ. Для этого в раскрывающемся списке панели свойств выберите строку Calendar1 Calendar:
- Чтобы при открытии календаря всегда отображалась текущая дата, ниже кода макроса Private Sub Calendar1_Click() вставьте следующий код:
- Для того, чтобы календарь был доступен всегда, когда открывается документ (основанный на этом шаблоне), необходимо добавить в наш проект новый модуль и ввести соответствущий код. Для этого в меню Insert выберите команду Module. Новое (пустое) окно будет открыто в редакторе VB. Введите следующий код:
- Обязательно сохраните все изменения в макросе, нажав на кнопку Save на панели инструментов редактора Visual Basic.
- Календарь готов и его можно протестировать. Для этого перейдите в окно редактора Word и нажмите сочетание клавиш «Alt»+«F8». Откроется диалоговое окно Макрос. Найдите в списке макросов созданный вами макрос OpenCalendar и нажмите кнопку Выполнить. Откроется наш календарь. Выберите в нем любую дату и щелкните по ней. Дата будет вставлена в документ, а форма календаря закроется.
- Осталось сделать лишь одну из трех вещей: разместить на собственной панели инструментов (см.статью ), либо назначить сочетания клавиш для этого макроса (), либо добавить команду вызова календаря в контекстное меню, вызываемое щелчком правой кнопки мыши (см.статью ).

Если у вас англоязычная версия редактора Word, то этот элемент будет называться Calendar Control 11.0 (номер зависит от версии редактора).


Откроется диалоговое окно Property Pages. Измените в нем значения на те, которые показаны на скриншоте ниже, и нажмите кнопку Применить, а затем закройте окно:

Собственно, сам календарь уже готов. Но он практически бесполезен. Поэтому добавим календарю функцию выбора даты и вставки ее в документ.
Private Sub cmdClose_Click() Unload Me End Sub
Все, теперь форма будет закрываться, если пользователь нажмет клавишу «Esc».

Календарь будет выделен на форме (появится рамка). Дважды щелкните по ней мышью, чтобы перейти в окно кода к созданной процедуре. Введите между двумя существующими операторами следующий код:
Selection.Text = Format(Calendar1.Value, "dd mmmm yyyy") & " г." Selection.MoveRight Unit:=wdCharacter, Count:=1 Unload Me
Итоговый код должен выглядеть так:
Private Sub Calendar1_Click() Selection.Text = Format(Calendar1.Value, "dd mmmm yyyy") & " г. " Selection.MoveRight Unit:=wdCharacter, Count:=1 Unload Me End Sub
Этот код вствляет выбранную дату из календаря в место, где находится курсор ввода в документе, а затем курсор ввода перемещается на 1 символ вправо (для ввода пользователем следующего текста) и форма закрывается.
Private Sub UserForm_Initialize() Calendar1.Today End Sub
Sub OpenCalendar() frmCalendar.Show End Sub
Как я и обещал, вы можете скачать шаблон "Календарь Word" (форма загрузки). Распакуйте шаблон и поместите его в папку автозагрузки Word, которая примерно находится по следующему адресу на вашем компьютере: C:\Documents and Settings\Application Data\Microsoft\Word\STARTUP\.
После открытия документа (создания документа) будет доступна новая панель инструментов с кнопкой вызова календаря.
[sbox id="download" caption="Скачать" ]Календарь Word
Метки: календарь | макросы | шаблоны
Просмотров: 81290
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 250 бесплатных шаблонов для MS Office
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Быстрый доступ к папке с шаблонами Word
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вертикальное выравнивание текста
- Возможно ли запретить копирование текста из документа Word?

Форум
Читают
Обсуждают
страницы
сайты
статистика
Комментариев: 10
Уважаемый Антон,при попытке запустить календарь на украинском языке возникает две проблемы:
1. Название месяця - с заглавной буквы.
2. Название месяца в именительном падеже.
Т.е. вместо "16 жовтня" получаем "16 Жовтень". Как решить эту проблему? Очень хотелось бы пользоватся этой полезной функцией. Спасибо.
Андрей, странно, так как там кода-то практически нет. Используется стандартный инструмент календаря. Полагаю, что проблема именно в локальной версии редактора, то как он получает системные данные (могу ошибаться).
Может быть кто-то из украинских пользователей подскажет решение, так как на русском все нормально?
Пользователям ворд 2007 велосипед изобретать не нужно, там такая кнопка для панели быстрого запуска уже есть.
Почему нужно было написать некое " Рі. "?
У меня так и выводится "18 февраля 2010 Pi". Заменил "Пи" на "г."
Похоже, опечатка. Там, кстати, в коде ниже уже "г." приведен.
Работает на 2007-ом. Не определился ещё для себя насколько полезная, но уж точно интересная штука. Спасибо!
а можно ли использовать календарь не зарегистрировав ocx в системе?
Включите вкладку «Разработчик». Перейдите по ней: на панели элементов управления кнопка «выбор даты». Всё просто
Почему у меня нету Calendar Control, что делать??
Также нет Calendar Control