Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование в Microsoft Office для пользователей
 
 

Получить учебные материалы по этому курсу


<-- Назад Посмотреть решение -->

Задание для самостоятельной работы 5.1 Работа с элементами управления

Подготовка:

Создайте новую книгу Excel и сохраните ее как Prikaz.xls. Заполните ячейки с A1 по A5 значениями, аналогичными представленным на рис. 5.12.

Рис 5.12 Список сотрудников на листе Excel

Откройте редактор Visual Basic и в окне Project Explorer щелкните правой кнопкой мыши по объекту "Эта книга" и в контекстном меню выберите View Code.

В окне редактора кода для этой книги введите следующий код:

'При открытии рабочей книги показываем форму 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 String)

Dim oWord As Word.Application

Dim oDoc As Word.Document

Set oWord = CreateObject("Word.Application")

Set oDoc = oWord.Documents.Add()

oWord.Visible = True

oDoc.Activate

With oWord.Selection

.TypeText "Приказ"

.Style = "Заголовок 1"

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeText vbCrLf

.Style = "Обычный"

.TypeText vbCrLf

.TypeText " г .Санкт-Петербург" & Space(90) & Date

.TypeText vbCrLf

. TypeText vbCrLf

. TypeText "За проявленные успехи в " & sPovod & _

" наградить " & sFio & ":"

.TypeText vbCrLf

If bFlagPremia Then

. TypeText vbTab & "- денежной премией в сумме " & nSummaPremii & " рублей"

End If

If bFlagGramota Then

.TypeText ";"

.TypeText vbCrLf

.TypeText vbTab & "- почетной грамотой."

Else

.TypeText "."

End If

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

. TypeText "Генеральный директор" & vbTab & vbTab & vbTab & "Иванов И.И."

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeParagraph

.TypeText vbCrLf

.TypeText vbCrLf

.ParagraphFormat.Alignment = wdAlignParagraphLeft

.TypeText Text:=("Отв. исполнитель" & sOtvIsp)

.TypeParagraph

End With

End Sub

Щелкните правой кнопкой мыши по вашему проекту Prikaz.xls и в контекстном меню выберите Insert -> UserForm. Выделите созданный вами объект формы и нажмите на кнопку <F4>. Настройте для свойства (Name) этой формы значение UF1.

Поместите на форму из Toolbox единственную кнопку — элемент управления CommandButton1. Установите для этой кнопки значение свойства Caption как "Напечатать приказ" и измените размеры и местонахождение этой кнопки, чтобы форма выглядела так, как представлено на рис. 5.13.

Рис. 5.13 Форма — пока с единственной кнопкой

Щелкните правой кнопкой мыши по кнопке CommandButton1 на вашей форме, в контекстном меню выберите View Code и добавьте в код событийной процедуры для события Click этой формы следующий код:

Private Sub CommandButton1_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 = "освоении новых информационных технологий"

sFio = "Иванова Ивана Ивановича"

bFlagPremia = True

bFlagGramota = True

nSummaPremii = 100000

sOtvIsp = "Петрова П . П ."

' Конец подстановки данных

 

Call ЭтаКнига.DocWrite(sPovod, sFio, bFlagPremia, bFlagGramota, nSummaPremii, sOtvIsp)

End Sub

7) Запустите вашу форму на выполнение и убедитесь, что она работает: выводит в создаваемый документ Word приказ с фиксированными значениями.

Задание:

Измените форму таким образом, чтобы вместо присвоения переменным в выделенном комментариями блоке заранее определенных значений пользователь смог выбирать данные при помощи формы. При этом:

  • Значение переменной sPovod должно выбираться из трех возможных значений: "освоении новых информационных технологий", "внедрении новых программных продуктов" и значение, которое пользователь может ввести через текстовое поле. Используйте для этого набор из трех переключателей и текстовое поле (оно должно быть спрятано, если пользователь выбрал один из двух других переключателей). По умолчанию должно подставляться "освоении новых информационных технологий".
  • Значение переменной sFio должно выбираться пользователем при помощи комбинированного списка. В этот комбинированный список должны автоматически помещаться значения из всех непустых ячеек столбца A листа Excel. По умолчанию должно выбираться значение "Иванова Ивана Ивановича".

Примечание.

Образец для работы с ячейками столбца можно получить из ответов к предыдущим лабораторным работам.

  • Значения переменных bFlagPremia и bFlagGramota должны устанавливаться в зависимости от состояния двух флажков — "Премия" и "Грамота". По умолчанию оба флажка должны быть установлены.
  • Если пользователь снял оба флажка, то ему должно выводиться предупреждающее сообщение "Не выбрана ни премия, ни почетная грамота!" с отменой вывода документа.
  • Пользователь должен иметь возможность задавать значение переменной nSummaPremii либо при помощи полосы прокрутки с диапазоном значений от 0 руб. до 100 000 руб., либо при помощи текстового поля. Если флажок "Премия" снят, то полоса прокрутки и текстовое поле должны быть спрятаны от пользователя.
  • Ход полосы прокрутки должен быть равен 100 рублям.
  • По умолчанию размер премии должен быть равен 100 рублям.
  • Поместите на форму еще одну кнопку "Отмена". Эта кнопка должна закрывать текущую форму и срабатывать при нажатии на клавишу <Esc>.
  • В заголовке формы должно выводиться значение "Формирование приказа о выплате премии".

Общий вид формы может выглядеть, например, так, как представлено на рис. 5.14:

Рис. 5.14 Готовая форма

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Посмотреть решение -->

Получить учебные материалы по этому курсу


 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru