Статьи из блога

Календарь Word

Ольга спрашивает:

Можно ли в Word сделать маленький календарик, который можно было бы вызывать по кнопке на панели инструментов? Наподобие такого, как в Excel или как в 1С?

Можно. В зарубежном интернете есть отличная статья Мартина Грина на эту тему (на тему календаря, а не 1С, конечно же): A Pop-up Calendar for Word.

 

Мартин разрешил мне воспользоваться его опытом и опубликовать эту статью на моем сайте. Но переводить всю статью не имеет смысла: она большая и подробная; я лишь изложу ее основные моменты. В итоге, мы должны получить примерно вот такой календарь:

 

Календарь Word

 

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

 

Те же пользователи, кто работает с основном с таблицами Excel, могут найти аналогичную статью на сайте PlanetaExcel.ru.

 

Итак, приступим.

  1. Во-первых, создайте пустой документ Word и сохраните его как шаблон под именем WordPopupCalendar.dot. Безусловно, можно создать календарь и в глобальном шаблоне Normal.dot, чтобы он был всегда доступен, но в этот раз мы создадим новый шаблон. В дальнейшем, это позволит вам передавать ваш шаблон с календарем своим друзьям и коллегам, а доступность календаря мы обеспечим размещением шаблона в папке автозагрузок редактора Word.
  2. Далее, откройте редактор Visual Basic с помощью сочетания клавиш «Alt»+«F11». Появится пустое окно редактора. Нажмите клавишу «F7», чтобы перейти к окну кода.
  3. Теперь мы должны создать сам календарь в виде появляющегося окошка. Для этого в меню Insert выберите команду UserForm. Откроется пустая форма диалогового окна с панелью инструментов Toolbox:
  4.  

     

  5. Щелкните по заголовку панели Toolbox. Скорее всего, на панели отсутствует иконка для создания календаря. В этом случае следует выбрать в меню Tools команду Additional Controls. Откроется диалоговое окно, в котором найдите и установите флажок у элемента Элемент управления Календарь 11.0, как на рисунке ниже:
  6.  

    Additional Controls

     

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

  7. Щелкните указателем мыши на появившемся на панели Toolbox элементе Calendar и нарисуйте на форме квадрат, чтобы календарь занял всю форму. Впрочем, можете и уменьшить его размеры. Как вам будет угодно. Получится примерно так:
  8.  

    UserForm1

     

  9. Теперь можно настроить свойства календаря, в частности, его внешний вид. Как вы можете видеть, календарь использует краткую форму вывода даты, что не очень красиво и удобно. Изменим это. В панели свойств (Properties - Calendar1) щелкните на правой ячейке строки (Custom):
  10.  

    Properties

     

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

     

    Propertiy Pages

     

  11. Щелкните на заголовке формы, а затем в панели ее свойств измените значение строки (Name) "UserForm1" на значение "frmCalendar", а значение строки Caption "UserForm1" на значение "Календарь - Выберите дату". Заголовок нашей формы изменится.
  12.  

    Собственно, сам календарь уже готов. Но он практически бесполезен. Поэтому добавим календарю функцию выбора даты и вставки ее в документ.

  13. Для начала установим возможность закрывать форму календаря по нажатию клавиши «Esc», как альтернативу кнопке в правом верхнем углу окна. Иногда это удобнее. Поместим прямо на календарь кнопку, выбрав ее с панели Toolbox (кнопка называется CommandButton). Кнопка сама по себе будет скрыта от пользователя, но на этапе разработки мы видим ее контуры.
  14. В панели свойств кнопки (она должна быть в данный момент выделена у вас) измените значение строки (Name) "CommandButton1" на значение "cmdClose", а значение строки Cancel "false" на значение "True"
  15. Дважды щелкните по контуру вашей кнопки (или нажмите клавишу «F7»), чтобы перейти в окно кода и между строками кода введите: Unload Me. Итоговый код должен выглядеть так:
  16. Private Sub cmdClose_Click()
    Unload Me
    End Sub

    Все, теперь форма будет закрываться, если пользователь нажмет клавишу «Esc».

  17. Теперь напишем код для вставки выбранной даты в документ. Для этого в раскрывающемся списке панели свойств выберите строку Calendar1 Calendar:
  18.  

    Properties

     

    Календарь будет выделен на форме (появится рамка). Дважды щелкните по ней мышью, чтобы перейти в окно кода к созданной процедуре. Введите между двумя существующими операторами следующий код:

    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 символ вправо (для ввода пользователем следующего текста) и форма закрывается.

  19. Чтобы при открытии календаря всегда отображалась текущая дата, ниже кода макроса Private Sub Calendar1_Click() вставьте следующий код:
  20. Private Sub UserForm_Initialize()
    Calendar1.Today
    End Sub
  21. Для того, чтобы календарь был доступен всегда, когда открывается документ (основанный на этом шаблоне), необходимо добавить в наш проект новый модуль и ввести соответствущий код. Для этого в меню Insert выберите команду Module. Новое (пустое) окно будет открыто в редакторе VB. Введите следующий код:
  22. Sub OpenCalendar()
    frmCalendar.Show
    End Sub
  23. Обязательно сохраните все изменения в макросе, нажав на кнопку Save на панели инструментов редактора Visual Basic.
  24. Календарь готов и его можно протестировать. Для этого перейдите в окно редактора Word и нажмите сочетание клавиш «Alt»+«F8». Откроется диалоговое окно Макрос. Найдите в списке макросов созданный вами макрос OpenCalendar и нажмите кнопку Выполнить. Откроется наш календарь. Выберите в нем любую дату и щелкните по ней. Дата будет вставлена в документ, а форма календаря закроется.
  25. Осталось сделать лишь одну из трех вещей: разместить кнопку на собственной панели инструментов (см.статью Как создать собственную панель инструментов), либо назначить сочетания клавиш для этого макроса (Настройка сочетаний клавиш), либо добавить команду вызова календаря в контекстное меню, вызываемое щелчком правой кнопки мыши (см.статью Как добавить свою команду в контекстное меню Word).
Если вы работаете с редактором Word 2007, то все действия по созданию календаря будут аналогичными. Разница может быть лишь в размещении кнопки макроса на панель быстрого доступа либо добавления команды в контекстное меню (см.статью Как добавить свои команды в контекстное меню в Word 2007).

 

Как я и обещал, вы можете скачать шаблон "Календарь Word" (форма загрузки). Распакуйте шаблон и поместите его в папку автозагрузки Word, которая примерно находится по следующему адресу на вашем компьютере: C:\Documents and Settings\Application Data\Microsoft\Word\STARTUP\

 

После открытия документа (создания документа) будет доступна новая панель инструментов с кнопкой вызова календаря.

[sbox id="download" caption="Скачать" ]Календарь Word

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 10

  1. Андрей
    16.10.2008 в 20:28 | #1

    Уважаемый Антон,при попытке запустить календарь на украинском языке возникает две проблемы:

    1. Название месяця - с заглавной буквы.

    2. Название месяца в именительном падеже.

    Т.е. вместо "16 жовтня" получаем "16 Жовтень". Как решить эту проблему? Очень хотелось бы пользоватся этой полезной функцией. Спасибо.

  2. 16.10.2008 в 20:48 | #2

    Андрей, странно, так как там кода-то практически нет. Используется стандартный инструмент календаря. Полагаю, что проблема именно в локальной версии редактора, то как он получает системные данные (могу ошибаться).

    Может быть кто-то из украинских пользователей подскажет решение, так как на русском все нормально?

  3. Алексей
    10.12.2008 в 19:13 | #3

    Пользователям ворд 2007 велосипед изобретать не нужно, там такая кнопка для панели быстрого запуска уже есть.

  4. 18.02.2010 в 12:52 | #4

    Почему нужно было написать некое " Рі. "?

    У меня так и выводится "18 февраля 2010 Pi". Заменил "Пи" на "г."

  5. 18.02.2010 в 13:02 | #5

    Почему нужно было написать некое " Рі. "?
    У меня так и выводится "18 февраля 2010 Pi". Заменил "Пи" на "г."

    Похоже, опечатка. Там, кстати, в коде ниже уже "г." приведен.

  6. 18.02.2010 в 13:32 | #6

    Работает на 2007-ом. Не определился ещё для себя насколько полезная, но уж точно интересная штука. Спасибо!

  7. Николай
    03.05.2010 в 23:03 | #7

    а можно ли использовать календарь не зарегистрировав ocx в системе?

  8. Василий
    31.08.2010 в 19:37 | #8

    Включите вкладку «Разработчик». Перейдите по ней: на панели элементов управления кнопка «выбор даты». Всё просто

  9. Виктория
    27.03.2012 в 17:10 | #9

    Почему у меня нету Calendar Control, что делать??

  10. Евгений
    05.09.2012 в 16:42 | #10

    Также нет Calendar Control

Оставьте комментарий!

(обязательно)

^ Наверх