Можно ли в Word сделать маленький календарик, который можно было бы вызывать по кнопке на панели инструментов? Наподобие такого, как в Excel или как в 1С?
Можно. В зарубежном интернете есть отличная статья Мартина Грина на эту тему: A Pop-up Calendar for Word. Мартин разрешил мне воспользоваться его опытом и опубликовать эту статью на моем сайте. Но переводить всю статью не имеет смысла: она большая и подробная; я лишь изложу ее основные моменты. В итоге, мы должны получить примерно вот такой календарь:
Для тех, кто не хочет самостоятельно создавать календарь, в конце заметки я дам ссылку на шаблон с созданным по этой заметке календарем. Вам останется лишь загрузить его на свой компьютер. Те же пользователи, кто работает с основном с таблицами Excel, могут найти аналогичную статью на сайте PlanetaExcel.ru.
Итак, приступим.
Во-первых, создайте пустой документ Word и сохраните его как шаблон под именем WordPopupCalendar.dot. Безусловно, можно создать календарь и в глобальном шаблоне Normal.dot, чтобы он был всегда доступен, но в этот раз мы создадим новый шаблон. В дальнейшем, это позволит вам передавать ваш шаблон с календарем своим друзьям и коллегам, а доступность календаря мы обеспечим размещением шаблона в папке автозагрузок редактора Word.
Далее, откройте редактор Visual Basic с помощью сочетания клавиш "Alt"+"F11". Появится пустое окно редактора. Нажмите клавишу "F7", чтобы перейти к окну кода.
Теперь мы должны создать сам календарь в виде появляющегося окошка. Для этого в меню Insert выберите команду UserForm. Откроется пустая форма диалогового окна с панелью инструментов Toolbox:
Щелкните по заголовку панели Toolbox. Скорее всего, на панели отсутствует иконка для создания календаря. В этом случае следует выбрать в меню Tools команду Additional Controls. Откроется диалоговое окно, в котором найдите и установите флажок у элемента Элемент управления Календарь 11.0, как на рисунке ниже:
Если у вас англоязычная версия редактора Word, то этот элемент будет называться Calendar Control 11.0 (номер зависит от версии редактора).
Щелкните указателем мыши на появившемся на панели Toolbox элементе Calendar и нарисуйте на форме квадрат, чтобы календарь занял всю форму. Впрочем, можете и уменьшить его размеры. Как вам будет угодно. Получится примерно так:
Теперь можно настроить свойства календаря, в частности, его внешний вид. Как вы можете видеть, календарь использует краткую форму вывода даты, что не очень красиво и удобно. Изменим это. В панели свойств (Properties - Calendar1) щелкните на правой ячейке строки (Custom):
Откроется диалоговое окно Property Pages. Измените в нем значения на те, которые показаны на скриншоте ниже, и нажмите кнопку Применить, а затем закройте окно:
Щелкните на заголовке формы, а затем в панели ее свойств измените значение строки (Name) "UserForm1" на значение "frmCalendar", а значение строки Caption "UserForm1" на значение "Календарь - Выберите дату". Заголовок нашей формы изменится.
Собственно, сам календарь уже готов. Но он практически бесполезен. Поэтому добавим календарю функцию выбора даты и вставки ее в документ.
Для начала установим возможность закрывать форму календаря по нажатию клавиши "Esc", как альтернативу кнопке в правом верхнем углу окна. Иногда это удобнее. Поместим прямо на календарь кнопку, выбрав ее с панели Toolbox (кнопка называется CommandButton). Кнопка сама по себе будет скрыта от пользователя, но на этапе разработки мы видим ее контуры.
В панели свойств кнопки (она должна быть в данный момент выделена у вас) измените значение строки (Name) "CommandButton1" на значение "cmdClose", а значение строки Cancel "false" на значение "True"
Дважды щелкните по контуру вашей кнопки (или нажмите клавишу "F7"), чтобы перейти в окно кода и между строками кода введите: Unload Me . Итоговый код должен выглядеть так:
Private Sub cmdClose_Click()
Unload Me
End Sub
Все, теперь форма будет закрываться, если пользователь нажмет клавишу "Esc".
Теперь напишем код для вставки выбранной даты в документ. Для этого в раскрывающемся списке панели свойств выберите строку Calendar1 Calendar :
Календарь будет выделен на форме (появится рамка). Дважды щелкните по ней мышью, чтобы перейти в окно кода к созданной процедуре. Введите между двумя существующими операторами следующий код:
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 Calendar1_Click() вставьте следующий код:
Private Sub UserForm_Initialize()
Calendar1.Today
End Sub
Для того, чтобы календарь был доступен всегда, когда открывается документ (основанный на этом шаблоне), необходимо добавить в наш проект новый модуль и ввести соответствущий код. Для этого в меню Insert выберите команду Module. Новое (пустое) окно будет открыто в редакторе VB. Введите следующий код:
Sub OpenCalendar()
frmCalendar.Show
End Sub
Обязательно сохраните все изменения в макросе, нажав на кнопку Save на панели инструментов редактора Visual Basic.
Календарь готов и его можно протестировать. Для этого перейдите в окно редактора Word и нажмите сочетание клавиш "Alt"+"F8". Откроется диалоговое окно Макрос. Найдите в списке макросов созданный вами макрос OpenCalendar и нажмите кнопку Выполнить. Откроется наш календарь. Выберите в нем любую дату и щелкните по ней. Дата будет вставлена в документ, а форма календаря закроется.
Если вы работаете с редактором Word 2007, то все действия по созданию календаря будут аналогичными. Разница может быть лишь в размещении кнопки макроса на панель быстрого доступа либо добавления команды в контекстное меню (см.статью Как добавить свои команды в контекстное меню в Word 2007).
Как я и обещал, вы можете скачать шаблон "Календарь Word" (форма загрузки). Распакуйте шаблон и поместите его в папку автозагрузки Word, которая примерно находится по следующему адресу на вашем компьютере: C:\Documents and Settings\Application Data\Microsoft\Word\STARTUP\ . После открытия документа (создания документа) будет доступна новая панель инструментов с кнопкой вызова календаря.
В каталоге Download Вы можете найти другие полезные материалы - утилиты, программы, документацию, исходники, электронные книги. Если Вы обнаружили неработающую ссылку, пожалуйста, помогите другим посетителям и администратору каталога Download - сообщите об этом редактору.
Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=16741