5.2. Форматирование документа
Работа с текстом (продолжение)
Наиболее важной особенностью работы на VBA в Word является вставка текста в документ при работе с приложениями. Для этого служат объекты Range и Selection, которые являются главными для практически любых операций, которые можно выполнять с помощью Word VBA. Некоторые из этих действий можно применять к документам в целом, но в общем случае вам необходим диапазон или выделенная область, прежде чем вносить изменения. Мы, однако, рассмотрим действия с документом при его создании.
Открытый документ Word уже содержит объекты Range, соответствующие многим его элементам. Каждый абзац, таблица, ячейка таблицы, комментарий и т. д. определяют диапазоны. Например, для того чтобы вставить некоторый текст в уже существующий документ, необходимо прописать код:
ActiveDocument.Paragraphs(1).Range.Text = «Oxo-xo!!»
Причем данная строка будет расположена в конце существующего параграфа. С другой стороны, используя объект Selection, можно также вставить некоторый текст в документ, используя метод Add и присвоение свойства Text объекту Selection:
If Documents.Count = 0 Then Documents.Add
Selection.Text = "Изучение работы с текстом в документе Word является важной составной частью умения программировать в VBA, « + TextBox1.Text +», и отвечает запросам всех программистов!»
В результате выполнения данного программного кода в документе Word будет выведена строка:
Изучение работы с текстом в документе Word является важной составной частью умения программировать в VBA, Светлана, и отвечает запросам всех программистов!
Здесь имя Светлана, например, считано с текстового поля некоторой формы, имеющей всего одно поле ввода для имени и кнопку «Вывод текста» (рис. 64).
Рис. 64. Форма ввода данных
При работе с текстом на рабочем листе Word необходимо знать следующие коды:
определение цвета
Selection.Font.Color =
wdColorRed – красный
wdColorDarkRed – бордовый
wdColorDarkTeal – бирюзовый
wdColorBlue – синий
wdColorGreen – зеленый
wdColorBlack – черный
wdColorOrange – оранжевый
определение жирности
Selection.Font.Bold =
wdToggle – жирность
определение начертания
Selection.Font.Italic=
wdToggle – курсив
определение выравнивания
Selection.ParagraphFormat.Alignment=
wdAlignParagraphRight – выравнивание по правому краю
wdAlignParagraphCenter – выравнивание по центру
wdAlignParagraphJustify – выравнивание по левому краю
вставка в текст конкретного предложения
Selection.TypeText Text:="Пример работы с текстом"
вставка новой пустой строки
Selection.TypeParagraph
установка размера букв
Selection.Font.Size = 14
Примечание. Для правильного оформления кода пользуйтесь возможностями создания макроса написания программы.
Одним из элементов оформления диалоговых окон является элемент управления Image (рисунок). Его основные свойства:
Autosize – изменяет размер рисунка на форме (автоматически или нет);
Picture – отображает графический файл, выводимый на форму;
pictureSizeMode – устанавливает масштабирование рисунка (не весь рисунок, вся поверхность объекта, целиком внутри объекта);
PictureAligment – устанавливает расположение рисунка внутри объекта (слева, справа, вверху, внизу);
pictureTilling – покрывает объект мозаикой из рисунка.
Данные свойства либо устанавливаются в окне свойств объекта, либо прописываются в листинге.
Пример 30. Создать программу, которая будет производить подсчет количества теплоты, выделяемой в проводнике при протекании в нем тока. Формула для расчета количества теплоты известна под именем закона Джоуля – Ленца:
где Q – количество теплоты в Джоулях;
U – напряжение в вольтах;
t – время в секундах;
S – площадь поперечного сечения проводника в квадратных миллиметрах;
l – длина проводника в метрах;
р – удельное сопротивление материала проводника в Ом × мм2/м.
Все исходные данные вводятся в текстовые поля формы. По итогам вычисления результат в виде объяснительной записки выводится в документ, а численный результат – в специальное окно формы.
Технология выполнения
Создайте форму по приведенному рис. 65.
Рис. 65. Разработанная форма примера 30 в рабочем состоянии и вывод результирующих сведений в документ word
При создании формы установите необходимые свойства элементов. Установите свойство Locked элемента TextBox6 как True, чтобы не допустить случайного ввода пользователем в него текста.
Описание процедур
Private Sub CommandButton1_Click()
If Documents.Count = 0 Then Documents.Add
Selection.Text = "Припрохождениитоканапряжениемв " + TextBox1.Text + "вольтпопроводникудлиной " + TextBox4.Text + " метров, сечением " + TextBox3.Text + "кв. ммиудельнымсопротивлением " + TextBox5.Text + " Ом*мм2/мза " + TextBox2.Text + " секундвыделится " + TextBox6.Text + « джоулейтеплоты»
Selection.Collapse direction:=wdCollapseEnd
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub TextBox1_Change()
scet
End Sub
Private Sub TextBox2_Change()
scet
End Sub
Private Sub TextBox3_Change()
scet
End Sub
Private Sub TextBox4_Change()
scet
End Sub
Private Sub TextBox5_Change()
scet
End Sub
Private Sub scet()
If IsNumeric(TextBox1.Text) = True And
IsNumeric(TextBox2.Text) = True And
IsNumeric(TextBox3.Text) = True And
IsNumeric(TextBox4.Text) = True And
IsNumeric(TextBox5.Text) = True And Not Val(TextBox4.Text)
= 0 And Not Val(TextBox5.Text) = 0 Then
rez = ((Val(TextBox1.Text) ^ 2) * Val(TextBox2.Text) *
Val(TextBox3.Text)) / (Val(TextBox4.Text) *
Val(TextBox5.Text))
TextBox6.Text = Str$(rez)
CommandButton1.Enabled = True
Else
TextBox6.Text = ""
CommandButton1.Enabled = False
End If
End Sub
Примечание. При работе данного приложения все значения полей ввода должны быть числовыми. В VBA есть специальная функция для проверки того, является или нет введенная строка записью числа – IsNumeric. Для проверки отличия от нуля значений в последних двух полях ввода используется функция Val, которая переводит строковое выражение в числовое, если это строковое выражение содержит в своем начале цифры (или все состоит из них).
Функция Str делает преобразование, обратное тому, что производит Val, – конвертирует числовое значение выражения в строковое, что позволяет этому значению в дальнейшем обрабатываться как строке.
Таким образом, функции Val и Str преобразуют типы данных обрабатываемых ими переменных, соответственно, из строкового в числовой и из числового в строковый (см. главу 3).
Создание кнопки или панели в Word
Назначить форме кнопку или пункт меню для непосредственного вызова приложения из Word нельзя – это можно сделать только для модулей. Поэтому нужно применить следующий способ. Создайте макрос (Меню + Insert + Module) в открытом проекте:
Sub counter()
userForm1.Show
End Sub
Переименуйте этот макрос по своему усмотрению, например Teplo. И выполните следующие действия.
1. Щелкните правой кнопкой мыши в любом месте панели инструментов.
2. В этом меню выберите команду Настройка (или Сервис + Настройка).
3. В диалоговом окне Настройка щелкните на ярлыке вкладки Команды.
4. Прокрутите список Категории вниз и найдите пункт Макросы. Выберите этот пункт. В списке «Сохранить в» выберите имя вашего документа, в котором создан макрос (рис. 66).
Рис. 66. Поиск макроса для создания кнопки
5. В правом окне найдите необходимый макрос (либо VBA-программу).
6. Перетащите имя этого макроса или программы на панель инструментов.
7. Создайте соответствующую надпись кнопки и, если нужно, рисунок (при помощи правой кнопки мыши).
8. Закройте диалоговое окно Настройка, чтобы завершить работу.
По выполнении всех перечисленных пунктов будет создана кнопка запуска приложения.
Задачи на закрепление материала
Пример 31. Создать программу, позволяющую заполнять стандартные заявления студентов учебного заведения, если все необходимые данные заполняются в соответсвующих текстовых полях формы, а причина пропусков занятий выбирается из раскрывающегося списка (рис. 67, 68).
Рис. 67. Разработанная форма примера 31 в рабочем состоянии
Пример 32. Создать программу, позволяющую рассчитать сумму денег, затрачиваемых на бензин при поездке на дачу.
При этом учесть следующее: условия поездки могут быть: в одну сторону, туда и обратно, можно сесть на чужую машину (данные условия учитываются в раскрывающемся списке «условия поездки» на создаваемой форме).
Классному руководителю
группы АС-42
Сидорову О.И.
от студента(ки)
Петренко Олега Ивановича
Заявление
Прошу считать пропуск за 15.05.2007 уважительным по причине: по семейным обстоятельствам.
Петренко Олег Иванович
18.05.2007 |
Рис. 68. Примерный формат вывода заявления в документ word
Полученный результат вычисляется по формуле:
Результат = расстояние * (потребление бензина на 100 км) / 100*цену бензина за литр.
Учесть, что если выбрали условие поездки «на чужой машине», то цена бензина равняется 0 руб.
Рис. 69. Разработанная форма примера 32 в рабочем состоянии
Также учесть, что если при вычислении результат превысит 400 руб., то выдать сообщение «Может, пойдем на рынок?».
При создании формы придерживаться рис. 69, при выводе текста в документ Word – рис. 70.
При поездке на дачу, находящуюся на расстоянии 55 км, при цене бензина за литр 18,50 руб., потребление бензина составит 101,75 руб. |
Рис. 70. Примерный формат вывода расчетов в документ word
Пример 33. Разработать программу, которая выдает Отчет о доходе вкладчика на настоящий момент. При этом учесть, что в интерфейсе формы процентная ставка выбирается из раскрывающегося списка (предусмотреть два вида процентов).
Рис. 71. Разработанная форма примера 33 в рабочем состоянии
При вычислении придерживаться следующих формул:
если схема вычисления простая, то
Доход = внесенная сумма + внесенная сумма * процентную ставку/100*срок/360;
если схема вычисления сложная, то
Доход = внесенная сумма + внесенная сумма * процентную ставку/100*срок/360 +0,01*(внесенная сумма * процентную ставку/100*срок/360).
При разработке интерфейса формы опираться на приведенный рис. 71, а при выводе расчетов в документ Word – рис. 72.
Отчет о доходе
На настоящий момент гражданин(ка) Евсеева Ольга Константиновна имеет на своем счету по простым процентам при начальной сумме вложения 1000 руб. за 150 дней при 2 %-ной ставке 1008,33 руб. |
Рис. 72. Примерный формат вывода расчетов в документ word
Результат вычислений с соответствующими пояснениями выводится в документ Word, а в поле формы выдается числовой результат произведенных расчетов.
Пример 34. Разработать программу, позволяющую заполнять заявление на восстановление студенческого билета при его порче (украли, потерял, постирал и т. д.). Причину порчи предусмотреть в раскрывающемся списке создаваемой формы.
При работе придерживаться приведенных рис. 73 и 74.
Курсивом выделены выражения, вставляемые программой после того, как будут заполнены соответствующие текстовые поля разрабатываемой формы.
Рис. 73. Разработанная форма примера 34 в рабочем состоянии
Рис. 74. Примерный формат вывода заявления в документ word
|