Порядок выполнения итогового задания по VBA
Студент получает образец документа с выделенными цветом полями, которые будут обрабатываться в программе. Каждому цвету соответствует определенный элемент UserForm, который необходимо использовать в программе.
Необходимо создать VBA приложение, в котором будет создаваться аналогичный документ, выводится в Word для печати и записываться в базу данных этих документов.
Последовательность выполнения работы рассматривается на примере документа – Анкета:
АНКЕТА № 22
Фамилия: Соболев
Имя: Семен
Отчество: Петрович
Место рождения: Санкт-Петербург
Год рожденя: 1975
Образование: высшее
Пол: Мужской
Семейное положение: Не в браке
Интересы:
Книги Кино Спорт
14.05.2009
Пояснение к цветовым заливкам в задании:
TextBox - поле для ввода
CheckBox – поле для выбора нескольких позиций
OptionButton - поле для выбора одного из 2-х состояний
ToggleButton - поле для установки одного из 2-х состояний
ComboBox - поле для выбора из списка
SpinButton – поле для установки показания счетчика
Дата из макроса - поле для ввода
Считает из Базы Excel -поле для ввода
Порядок действий – ЧАСТЬ1:
1. В новой книге Excel на листе (например №1) в 1-й строке по столбцам ввести названия полей(столбцов), отмеченных в задании цветной заливкой (либо слева от заливки, либо по смыслу контекста), кроме «даты из макроса» и «счет из базы».
У нас:
Фамилия | Имя | Отчество | Год рождения | Место рождения | Образование | Пол | Интересы | Семейное положение |
2. На листе (например №2) в столбцах (например A,B) внести списки для элементов ComboBox из задания. У нас:
A | B |
Города | Образование |
Москва | начальное |
Санкт-Петербург | среднее |
высшее |
|
3. В редакторе VB создать UserForm с элементами, которые имеются в задании. У нас:
На форме рядом со счетчиком SpinButton установить текстовое поле TextBox, в котором будут отображаться значения счетчика при прокрутке.
Поля OptionButton и CheckBox окружить рамкой Frame (каждое своей).
4. Настроить свойства счетчика SpinButton. Для этого в таблице его свойств установить минимальное (у нас Min=1900) и максимальное (у нас Max=2000) значения, а также шаг (у нас SmallChange =1). Свойство Value установить равным числу (у нас – 1980), которое будет выводится по умолчанию в рядом стоящий TextBox (у нас – 1980 установлено в свойства TextBox4 – Text и Value.
5. Настроить свойства раскрывающегося списка, указав откуда берутся данные. Для этого в таблице его свойств установить в против поля RowSource адрес листа и ячеек (у нас один - =Лист2!A2:A4, другой - =Лист2!B2:B4).
6. Щелкнуть по кнопке CommandButton (у нас - Сохранить/Печать) и в открывшемся окне начать запись программы.
7. Объявить строковые переменные. У нас -
Private Sub CommandButton1_Click()
Dim pol, brak, interes As String
8. Записать код, обрабатывающий элемент выбора из 2-х вариантов – OptionButton. (У нас – выбор пола М/Ж). Названия полей записываются в свойство – caption (у нас – мужской и женский):
If (OptionButton1.Value = True) Then pol = OptionButton1.Caption
If (OptionButton2.Value = True) Then pol = OptionButton2.Caption
Наличие точки в первоначальном состоянии при выводе формы на экран определяется
установкой свойства OptionButton – Value в значение True или False.
Оба поля OptionButton обрамляются рамкой Frame с названием, записываемым в свойство caption (у нас – Выберите пол).
9. Записать код, обрабатывающий элемент установки одного из 2-х состояний – ToggleButton (У нас – выбор семейного положения):
|
If (ToggleButton1.Value = True) Then
brak = "Не в браке"
Else
brak = "В браке"
End If
10.Записать код, обрабатывающий элемент установки нескольких условий – CheckBox (У нас это – выбор интересов):
interes = ""
If (CheckBox1.Value = True) Then interes = interes & CheckBox1.Caption & " "
If (CheckBox2.Value = True) Then interes = interes & CheckBox2.Caption & " "
If (CheckBox3.Value = True) Then interes = interes & CheckBox3.Caption & " "
If (CheckBox4.Value = True) Then interes = interes & CheckBox4.Caption & " "
Названия полей записываются в свойство – caption ( у нас – книги, кино, музыка, спорт).
Отсутствие флажка в поле CheckBox в первоначальном состоянии при выводе формы на экран определяется установкой свойства Value в значение False.
Все поля CheckBox1-4 окружить рамкой Frame с названием, записываемым в свойство caption (у нас – интересы).
11. Выбрать вторую строку Листа1(в первой идут названия столбцов), куда будут записываться каждый раз новые данные, вводимые в форму, записав строку кода:
Worksheets("Лист1").Rows("2:2").Select
И осуществить сдвиг предыдущих записей на одну строку вниз, записав код:
Selection.Insert Shift:=xLDown
После чего пишем код, который заносит все данные из полей формы в соответствующие ячейки Листа1 (там, где создается основная таблица базы):
Worksheets("Лист1").Range("a2").Value = TextBox1.Text
Worksheets("Лист1").Range("b2").Value = TextBox2.Text
Worksheets("Лист1").Range("c2").Value = TextBox3.Text
Worksheets("Лист1").Range("d2").Value = TextBox4.Text
Worksheets("Лист1").Range("e2").Value = ComboBox1.Text
Worksheets("Лист1").Range("f2").Value = ComboBox2.Text
Worksheets("Лист1").Range("g2").Value = pol
|
Worksheets("Лист1").Range("h2").Value = interes
Worksheets("Лист1").Range("i2").Value = brak
В конце добавляем сообщение, что данные сохранены и заканчиваем процедуру командной кнопки:
MsgBox "Сохранено удачно"
Далее обнуляем все инструменты формы:
MsgBox "Сохранено удачно"
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
ToggleButton1.Value = False
ComboBox1.ListIndex = -1
ComboBox2.ListIndex = -1
End Sub
И далее добавляем код отображения значения SpinButton1 в текстовом поле (TextBox4.Text):
Private Sub SpinButton1_Change()
TextBox4.Text = SpinButton1.Value
End Sub
И далее считаем количество записей (строк с информацией) в таблице базы:
Dim kolich As Integer
kolich = 0
For Each cel In Worksheets("Лист1").Range("a2:a500")
If (cel.Value <> "") Then kolich = kolich + 1
Next
Количество будет храниться в переменной count
Порядок действий – ЧАСТЬ 2:
Запуск из программы редактора MS WORD и создание документа с введенными данными.
Предварительное действие:
1) В конце программы ввести следующий код
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
Код предназначен для открытия MS WORD
2) Добавить в VBA поддержку работы с MS WORD
Зайти в меню Tools – Reference
И выбрать Microsoft Word 11.0 Object Library
Далее открыть редактор MS WORD. Начать запись макроса (Сервис->Макрос->Начать запись…)
16. Аккуратно без ошибок напечатайте ваш документ, если у вас есть поле с текущей даты, то вставьте его следующим образом: Вставка ->Дата и время…
Остановить запись макроса.
Зайти в Сервис->Макрос->Макросы выбрать только что созданный макрос и нажать кнопку Изменить
Скопировать код программы созданного макроса (между “Sub …()” и “End Sub”) и перенести его в конец создаваемой программы.
После скопированного фрагмента напишите команду End With
В скопированном фрагменте перед каждым употреблением Selection поставить точку (.)
Например:
Было: Selection.TypeParagraph
Сделать. Selection.TypeParagraph
Необходимо подставить переменные с информацией из UserForm в документ. (Все необходимые переменные уже использовались ранее)
Для этого нужно найти в скопированном фрагменте текст вместо, которого необходимо выводить значение переменной. Например:
Необходимо вывести фамилию заполнившего бланк
Находим в программе слово Имя:
.Selection.TypeText Text:="Имя: "
.Selection.Font.Bold = wdToggle
.Selection.Font.Italic = wdToggle
.Selection.TypeText Text:="Семен"
.Selection.TypeParagraph
Там же видим команду выводящую само имя Семен
.Selection.TypeText Text:="Семен"
вместо этого имени пишем нашу переменную хранящую имя (TextBox2.Text)
.Selection.TypeText Text:= TextBox2.Text