1. Создайте новую книгу Excel и сохраните ее как Prikaz.xls. Заполните ячейки с А1 по А5 значениями, аналогичными представленным на рис. 5.12. Данные о сотрудниках лучше ввести в родительном падеже, поскольку эти значения будут подставляться в автоматически создаваемый приказ в формате документа Word.
Рис. 5.12. Список сотрудников на листе Excel
2. Откройте редактор Visual Basic и в окне Project Explorer щелкните правой кнопкой мыши по объекту Эта книгаи в контекстном меню выберите View Code.
3. В окне редактора кода для этой книги введите следующий код:
'При открытии рабочей книги показываем форму UF1
Private Sub Workbook_Open()
UF1.Show
End Sub
'Специальная процедура, которая печатает приказ в Word
Public Sub DocWrite(sPovod As String, sFio As String, bFlagPremia As
Boolean, bFlagGramota As Boolean, nSummaPremii As Long, sOtvIsp As
4. В окне Project Explorer щелкните правой кнопкой мыши по проекту Prikaz.xls и в контекстном меню выберите Insert | UserForm. Выделите созданный вами объект формы и нажмите клавишу <F4>. В окне Properties введите для свойства Name этой формы значение ufi.
Поместите на форму из Toolbox единственную кнопку — элемент управления CommandButton1. Установите для этой кнопки значение свойства Caption как "напечатать приказ" (без кавычек) и измените размеры и местонахождение этой кнопки, чтобы форма выглядела так, как показано на рис. 5.13.
Рис. 5.13. Заготовка для формы с единственной кнопкой
5. Щелкните правой кнопкой мыши по кнопке CommandButton1 на вашей форме, в контекстном меню выберите View Code и добавьте в код событийной процедуры для события Click этой кнопки следующий код:
Private Sub CommandButtonl_Click()
Dim sPovod As String
Dim sFio As String
Dim bFlagPremia As Boolean
Dim bFlagGramota As Boolean
Dim nSummaPremii As Long
Dim sOtvIsp As String
'Подставить данные из формы
sPovod = "освоении новых информационных технологий"
6. Запустите вашу форму на выполнение и убедитесь, что она работает: выводит в создаваемый документ Word приказ с фиксированными значениями.
ЗАДАНИЕ:
Измените форму таким образом, чтобы вместо присвоения переменным в выделенном комментариями блоке заранее определенных значений пользователь мог выбирать данные при помощи формы. При этом:
1. Значение переменной sPovod должно выбираться из трех возможных значений: "освоении новых информационных технологий", "внедрении новых программных продуктов" и значение, которое пользователь может ввести через текстовое поле. Используйте для этого набор из трех переключателей и текстовое поле (оно должно быть спрятано, если пользователь выбрал один из первых двух переключателей). По умолчанию должно подставляться "освоении новых информационных технологий".
2. Значение переменной sFio должно выбираться пользователем при помощи комбинированного cписка. В этот комбинированный список должны автоматически помещаться значения из всех непустых ячеек столбца А листа Excel. По умолчанию должно выбираться значение "Иванова Ивана Ивановича".
Образец для работы с ячейками столбца можно получить из ответов к предыдущим лабораторным работам.
3. Значения переменных bFlagPremia и bFlagGramota должны устанавливаться в зависимости от состояния двух флажков— "Премия" и "Грамота". По умолчанию оба флажка должны быть установлены. Если пользователь снял оба флажка,- то ему должно выводиться предупреждающее сообщение "Не выбрана ни премия, ни почетная грамота!" с отменой вывода документа.
4. Пользователь должен иметь возможность задавать значение переменной nSummaPremii либо при помощи полосы прокрутки с диапазоном значений от 0 руб. до 100 000 руб., либо при помощи текстового поля. Если флажок "Премия" снят, то полоса прокрутки и текстовое поле должны быть спрятаны от пользователя.
Ход полосы прокрутки (увеличение или уменьшение значения при щелчке на кнопках со стрелками) должен быть равен 100 руб.
По умолчанию размер премии должен быть равен 100 руб.
5. Поместите на форму еще одну кнопку Отмена. Эта кнопка должна закрывать текущую форму и срабатывать при нажатии клавиши <Esc>.
6. В заголовке формы должно выводиться значение "Формирование приказа о выплате премии".
Общий вид формы может выглядеть, например, так, как представлено на рис. 5.14.