Разработка приложения средствами VBA

Федеральное агентство по образованию и науки

Кузнецкий институт информационных и управленческих технологий

(филиал ПГУ)

Курсовая работа

По дисциплине: Вычислительная техника и программирование

Тема: Разработка приложения средствами VBA

Кузнецк 2008 г.

Содержание

Введение 1. Анализ задания 2. Разработка интерфейса программы 3. Разработка процедур 3.1 Функциональное назначение процедур 3.2 Описание процедур

4. Тестирование и отладка программы

Заключение

Список литературы

Введение VisualBasicforApplication (VBA) – объектно-ориентированный язык программирования (ООП), который позволяет создавать приложения (проекты) с развитым визуальным интерфейсом. ООП можно описать как методику анализа, проектирования и написания приложений, манипулируя объектами.

Язык был разработан в середине 1960-х годов профессорами Дартмутского колледжа Джоном Кемени и Томасом Курцом. Бейсик сравнительно несложен для изучения и подходит для разработки коротких и простых программ. В 1970-х годах он завоевал всеобщее признание вследствие своей компактности и пригодности для первых персональных компьютеров с их ограниченным объемом памяти.

Приложение (проект) может включать модули, формы и связанные с приложением объекты, относящиеся к некоторому документу. Причем проект сохраняется вместе с самим документом. Модуль VBA содержит исходный код макроса, или программы, создаваемой пользователем.

Каждый документ Word (или шаблон документа) может содержать один или несколько модулей, одну или несколько пользовательских форм, а может и не содержать никаких модулей и форм.

В VBA создание, редактирование, отладка и запуск на выполнение программ и макросов осуществляется средствами интегрированной среды разработки (средствами редактора VB). Чтобы перейти в интегрированную среду разработки из любого приложения MSOffice, достаточно нажать комбинацию клавиш Alt+F11или выполнить команду

Сервис/Макрос/Редактор Visual Basic (Tools/ Macros /Visual Basic Editor).

1. Анализ задания

Создаем проект, состоящий из нескольких частей:

– Документа ThisDocument. В нем будет прописан код для создания панели инструментов;

– программного модуля Module 1, содержащего код процедур;

– пользовательской формы UserForm 1, содержащей сообщение о разработчике проекта;

– пользовательской формы UserForm 2, содержащей задание, выполняемое программой в UserForm 3 ;

– пользовательской формы UserForm 3, позволяющей решить задачу.

По заданию необходимо разработать приложение для создания следующих функций:

1. Автоматизировать работу с текстом:

2. Составить алгоритм решения задачи: сколько амеб будет через 3, 6, 9, 12,… 24 часа, если каждые 3 часа амеба делится на 2 клетки.

3. Вывести справку о разработчике программы.

Для работы с текстом необходимо создать модуль, где будет прописано:

– Открытие текстового документа;

– Выделение первого абзаца;

– Вырезание первого абзаца;

– Вставка вырезанного абзаца в конец документа;

– Форматирование вставленного абзаца;

– Добавление границы к вставленному абзацу;

– Вывод формы “Задание”;

– Вывод формы “Справка о разработчике”.

Для вывода сведений о разработчике программы будет создана форма.

Курсовая работа будет организована с помощью самостоятельно разработанной панели инструментов, при помощи которой будет происходить вызов всех процедур программы и форм.

2. Разработка интерфейса программы

Курсовая работа реализована при помощи самостоятельно разработанной панели инструментов. В данном проекте панель инструментов имеет 6 кнопок (см. Приложение А, рисунок 1 ).

Кнопка “Открыть” – служит для открытия документа с текстом по заданному пути.

Кнопка со списком “Перемещение”:

– Кнопка “Выделить” – при ее нажатии выделяется первый абзац документа.

– Кнопка “Вырезать” – вырезает выделенный абзац в Буфер обмена.

– Кнопка “Вставить” – вставляет абзац из Буфера обмена в конец документа с текстом.

Кнопка “Форматирование” – при нажатии этой кнопки к абзацу применяется прописанное в модуле форматирование.

Кнопка “Граница” – добавляет верхнюю, нижнюю, правую и левую границы к абзацу.

Кнопка “Задание” – вызывает форму для реализации решения задачи.

Кнопка с рисунком – при ее нажатии выводится сообщение о разработчике.

Базисом для создания графического интерфейса разрабатываемого проекта является форма. Новая форма добавляется в проект командой Insert – UserForm. На форме размещаются необходимые элементы управления. Основные элементы управления, доступные разработчику, размещены на панели инструментов “ToolBox”, которая появляется, если нажата кнопка на панели инструментов редактора. Управляющие элементы имеют различное назначение:

– Label – надпись, используется для вывода данных

– TextBox – текстовое поле ввода

– ComboBox – поле со списком

– ListBox- окно списка

– CheckBox – флажок

– OptionsButton – переключатель

– Frame – рамка

– CommandButton -кнопка

– Image – рисунок и т. д.

Интерфейс данного проекта включает в себя форму для вывода справки о разработчике проекта форму для вывода текста задания. Первая форма имеет имя “Справка о разработчике”, вторая – “Задача”. Форма “Справка о разработчике” содержит четыре поля Label (см. Приложение В, рисунок 2 ). Форма “Задача” имеет одно поле Label (см. Приложение В, рисунок 3 ). Для каждого элемента изменили свойство Caption(Заголовок) – Справка о разработчике и Picture (Картинка) – выбрали из коллекции картинок, хранящейся на жестком диске. В окне свойств Font для элементов изменили шрифт (Font) – на CourierNew, размер – на 12 или 15 и тип шрифта – полужирный.

Для выполнения второго задания работы добавляем в проект третью пользовательскую форму. Поместили на форму:

O надпись, у которой изменили свойства: Caption – Label1 на “Введите начальное количество амеб”, BackColor, Font – на Courier 12пт.;

O три текстовых поля TextBox; у них изменили свойство BackColor на оранжевый, Font на Tahoma;

O кнопку CommandButton, при этом в окне свойств изменили: свойство Caption: CommandButton1 на “Результат”, цвет (BackColor) на темно-оранжевый, свойство Fontна Courier, полужирный, размер – 10пт.).

O кнопку CommandButton, при этом в окне свойств изменили: свойство Caption: CommandButton2 на “Справка о разработчике”, цвет (BackColor) на темно-оранжевый, свойство Font на Courier, полужирный, размер – 10пт.).

O кнопку CommandButton, при этом в окне свойств изменили: свойство Caption: CommandButton1 на “Задача”, цвет (BackColor) на темно-оранжевый, свойство Font на Courier, полужирный, размер – 10пт.).

В окне свойства Picture поменяли фон всей формы на рисунок (см. Приложение В, рисунок 1 ).

3. Разработка процедур 3.1 Функциональное назначение процедур

Проект состоит из: 1) документа ThisDocument ;

2) программного модуля Module 1 ;

3) пользовательских форм UserForm 1 ,UserForm 2 и Деление_амебы.

Программа открывающегося документа ThisDocument содержит процедуру Document_Open() – процедура, которая выполняется при открытии документа, и в которой прописан код для создания панели инструментов (Application. CommandBars. Add(Name:=”Работа с текстом”, Position:=msoBarTop, menubar:=False, temporary:=True)). Также в ThisDocument прописаны коды для создания кнопок панели инструментов “Работа с текстом”.

Программный модуль Module 1 содержит процедуры:

– Кнопка1() – открытие документа по имени файла (Set WorkDoc = Documents. Open(FileName:=”A:\Моя курсовая работа\ Землетрясения. doc”)

Кнопка со списком, включающая в себя: – Кнопку2() – выделение первого абзаца после заголовка (ActiveDocument. Paragraphs(2).Range. Select) – Кнопку3() – вырезание первого абзаца (ActiveDocument. Paragraphs (2).Range. Cut) – Кнопку4() – вставка вырезанного абзаца (ActiveDocument. Paragraphs(4).Range. Paste)

– Кнопка5() – форматирование вставленного абзаца (Selection. Font)

– Кнопка6() – добавление границы к последнему абзацу (ActiveDocument. Paragraphs(4).Borders(wdBorderBottom))

– Кнопка7() – процедура вывода формы “Деление амебы” для выполнения задания (Деление_амебы. Show)

– Кнопка8() – процедура вызова формы “Справка о разработчике” (см. Приложение С, Листинг 2 ).

3.2 Описание процедур

ThisDocument ( Листинг программы см. Приложение С, Листинг 1 ):

Для создания новой панели инструментов скрыли следующие панели инструментов: Стандартная (Standard), Форматирование (Formatting) и Рисование (Drawing) с помощью свойства Visible (=False).

Добавили новую панель при помощи функции Add, устанавливая при этом некоторые свойства: Name: = “Работа с текстом”, Position:=msoBarTop, menubar:=False, temporary:=True). Visible = True.

Добавили Кнопку1 с помощью функции Add, установили ее тип (Type:=msoControlButton, ID:=1) и прописали свойства (.Caption ‘заголовок’ = “Открыть”; .Style ‘стиль’= msoButtonCaption; .TooltipText ‘текст подсказки’= “Открытие текстового документа”; .OnAction = “Кнопка1”).

Добавили кнопку с раскрывающимся списком с помощью функции Add, установили ее тип (Type:=msoControlPopup), свойство Caption = “Перемещение” и функцию Controls. В список добавили: – Кнопку2 с помощью функции Add, установили ее тип (Type:=msoControlButton, ID:=1) и прописали свойства (.Caption = “Выделить”; .Style = msoButtonCaption; .OnAction = “Кнопка2”). – Кнопку3 с помощью функции Add, установили ее тип (Type:=msoControlButton, ID:=1) и прописали свойства (.Caption = “Вырезать”; .Style = msoButtonCaption; .OnAction = “Кнопка3”). – Кнопку4 с помощью функции Add, установили ее тип (Type:=msoControlButton, ID:=1) и прописали свойства (.Caption = “Вставить”; .Style = msoButtonCaption; .OnAction = “Кнопка4”).

Добавили Кнопку5 с помощью функции Add, установили ее тип (Type:=msoControlButton, ID:=1) и прописали свойства (.Caption = “Форматирование”; .Style = msoButtonCaption; .TooltipText = “Форматирование последнего абзаца”; .OnAction = “Кнопка5”).

Добавили Кнопку6 с помощью функции Add, установили ее тип (Type:=msoControlButton, ID:=1) и прописали свойства (.Caption = “Граница”; .Style = msoButtonCaption; .TooltipText = “Добавление границы”; .OnAction = “Кнопка6”).

Добавили Кнопку7 с помощью функции Add, установили ее тип (Type:=msoControlButton, ID:=1) и прописали свойства (.Caption = “Задание”; .Style = msoButtonCaption; .TooltipText = “Выполнение задачи”; .OnAction = “Кнопка7”).

Добавили Кнопку8 с помощью функции Add, установили ее тип (Type:=msoControlButton, ID:=1) и прописали свойства (.Caption = “Справка”; .Style = msoButtonCaption; .TooltipText = “Справка”; .OnAction = “Кнопка8”).

Модуль ( Листинг программы см. Приложение С, рисунок 2):

Для Кнопки1 с помощью оператора описания Dim обозначили тип переменной WorkDoc – Document и прописали путь документа для открытия:

‘Открытие документа по имени файла

Dim WorkDoc As Document

Set WorkDoc = Documents. Open(FileName:=”A:\Моя курсовая работа\Землетрясения. doc”).

Для Кнопки2 описали процедуру для выделения первого абзаца после заголовка:

ActiveDocument. Paragraphs(2).Range. Select

With Selection. Font

.Name = “Times New Roman”

.Size = 14

End With

Для Кнопки3 описали процедуру для вырезания первого абзаца документа:

ActiveDocument. Paragraphs(2).Range. Cut

Для Кнопки4 описали процедуру для вставки из Буфера обмена вырезанного фрагмента:

ActiveDocument. Paragraphs(4).Range. Paste

Кнопка5 содержит в себе процедуру форматирования вставленного в конец документа абзаца:

ActiveDocument. Paragraphs(4).Range. Select

With Selection. Font

.Name = “Courier New”

.Italic = wdBold ‘полужирный’

.Size = 16

.Color = wdColorLightBlue ‘голубой’

End With

Для Кнопки6 описали процедуру для добавления границы к вставленному абзацу:

ActiveDocument. Paragraphs(4).Range. Select

WithActiveDocument. Paragraphs(4).Borders(wdBorderBottom) ‘нижняя’ .LineStyle = wdLineStyleDouble ‘двойная линия’ .LineWidth = wdLineWidth025pt ‘толщина линии’ EndWith

With ActiveDocument. Paragraphs(4).Borders(wdBorderLeft) ‘левая’ .LineStyle = wdLineStyleDouble. LineWidth = wdLineWidth025pt

End With

With ActiveDocument. Paragraphs(4).Borders(wdBorderRight) ‘правая’ .LineStyle = wdLineStyleDouble. LineWidth = wdLineWidth025pt

End With

With ActiveDocument. Paragraphs(4).Borders(wdBorderTop) ‘верхняя’ .LineStyle = wdLineStyleDouble. LineWidth = wdLineWidth025pt

End With

Кнопка 7 – это кнопка вызова формы “Задание”:

Деление_амебы. Show.

Кнопка8 – это кнопка вывода формы “Справка о разработчике”

UserForm1.Show.

Пользовательская форма Деление_амебы ( Листинг программы см. Приложение С, Листинг 3 ):

Задача проекта решается заданием цикла с параметром (цикл со счетчиком), который служит для организации циклов с заранее известным числом повторений.

С помощью оператора описания Dim объявляем тип переменной Х -Integer, result – Double, str и str1 – String.

В поле ввода TextBox1.Text вводится первоначальное количество амеб.

При нажатии кнопки “Результат” появляются надписи Label2 “Время в часах” и Label3 “Количество амеб”, в поле ввода TextBox2 выводится заданная строка со значениями времени, в поле ввода TextBox3 выводятся результаты вычислений.

Если в текстовое поле TextBox1 не введено значение количества амеб, то в поле TextBox1 ставится нулевое значение, а в поле TextBox2 выводится сообщение “амебы не введены”, а в поле TextBox3 выводится “введите начальное кол-во амеб” (см. Приложение B, Рисунок 6 ).

4. Тестирование и отладка программы

При запуске программы “Деление_амебы” в активном документе отображается созданная для выполнения задачи форма (см. Приложение B, Рисунок 4 ).

В первое поле ввода вводится значение первоначального количества амеб и при нажатии кнопки “Результат” во втором поле ввода отображается заданная строка со значениями времени, а в третьем поле отображаются результаты вычисления деления введенного количества амеб по прошествии этих значений времени (см. Приложение B, Рисунок 5 ).

При нажатии кнопки “Задача” открывается форма UserForm2 с текстом задания (см. Приложение B, Рисунок 3 ).

При нажатии кнопки “Справка о разработчике” выводится форма со сведениями о разработчике проекта (см. Приложение B, Рисунок 2 ).

Заключение

В результате работы над курсовым проектом были разработаны:

– новая панель управления с именем “Работа с текстом”;

– модуль программы;

– пользовательская форма для решения задачи;

– пользовательская форма “Задача”;

– пользовательская форма “Справка о разработчике”.

Была автоматизирована работа с текстом:

– открытие документа с текстом;

– перемещение первого абзаца в конец документа;

– форматирование перемещенного абзаца;

– добавление границы к абзацу.

Составили алгоритм решения задачи: одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько амеб будет через 3, 6, 9, 12, … 24 часа.

Вывели справку о разработчике проекта.

Список литературы

1. Горных Е. Н. – Учебное пособие “Программирование на VBA” 2003.

2. Кузьменко В. Г. – “Программирование на VBA” 2003.

3. Лабораторные работы по дисциплине “ВТ и программирование” (методические указания к лабораторным работам).


1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...
Разработка приложения средствами VBA