Учебная работа. Научная работа: Создание программного продукта на языке программирования Visual Basic for Applications
Объяснительная записка: 23 с., 2 рис., 4 источника, 5 таблиц
Целью работы является создание программного продукта на языке программирования Visual Basic for Applications согласно заданию, выданному на учебную практику. Данный программный продукт дозволяет расположить в Microsoft Word начальный текст, введенный юзером, на страничке, любая строчка которой имеет хотимое юзером количество знаков (при этом слова не разрываются на две строчки) и в Microsoft Excel отыскать сумму 2-ух разреженных полиномов, данных ненулевыми коэффициентами и их номерами. Программный продукт должен обеспечивать удобство и простоту использования, быть многофункциональным и надежным, действенным в эксплуатации.
Программный продукт может привлечь юзеров, которые желают выяснить доп информацию о Visual Basic for Applications, изучить основную информацию и проследить за разработкой программ на данном языке программирования.
ПЕРЕЧЕНЬ ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Гарнаев А.Ю. Самоучитель VBA – 2-е изд., перераб. и доп. — СПб.: БВХ- Петербург 2004, 560с.
2. Гарнаев А.Ю. «Excel 2002: разработка приложений» — СПб.: БВХ-Петербург 2002, 450с.
3. С.Браун «VB 6» — СПб.: Москва – Харьков – Минск 2002, 573с.
4. С.Каммингс «VBA для Чайников» — СПб.: Москва – Санкт-Петербург – Киев 2003, 440с.
ВЫВОДЫ
В процессе работы над заданием по учебной практике была разработана информационная система. В данной системе реализованы последующие способности:
— вывод справочной инфы по языку программирования Visual Basic for Applications;
— нахождение в данной строке слов, которые начинаются и завершаются одной и той же буковкой; вывод слов на экран в Microsoft Word;
— при помощи определенных преобразований в начальной матрице поменять элементы четных сток, вывести конечную матрицу на экран в Microsoft Exel.
Потом в ПП может быть прирастить размер теоретического материала по VBA, усовершенствовать интерфейс. Недочетов данной системы разрабом не найдено.
ВВЕДЕНИЕ
Visual Basic for Applications (VBA) – очень пользующаяся популярностью в крайние годы среда разработки приложений, которая, являясь массивным программным средством, дозволяет воплотить широкий диапазон практических задач. Основное её достоинство состоит в рациональном сочетании простоты использования, доступности и огромного набора различных способностей, позволяющих охватить все главные направления деятель разраба прикладных программ.
способности VBA совершенно не уступают иным системам программирования Windows и повсевременно вырастают. К тому же почти все системы программирования в Windows и употребляют общие библиотеки объектов, посреди которых – объекты Word и Excel. К главным способностям VBA можно отнести реализацию очень гибкого и комфортного интерфейса для приложения, создание самых различных многоуровневых и всплывающих меню, обработку событий мыши и клавиатуры, работу с графикой. Разраб может употреблять в программке как обычные, так и интегрированные диалоги, применяющиеся для организации оборотной связи с юзером. приложение может производить работу с таймером, обрабатывать файлы и сборники на твердом диске, также предоставлять доступ к базам данных. В VBA имеется возможность внедрения в приложение разных объектов, которые поддерживаются иными программками. Кроме этого, разраб может воплотить связь 1-го либо нескольких компов, на которых установлено сделанное приложение, с сетью Internet.
Также язык программирования VBA – есть реализация объектно-ориентированного написания программ в системе MS Office, а а именно в процессе практики исследовалось внедрение VBA для MS Word и MS Excel. Синтаксис языка – давно проложенные правила языка Basic – один из самых ранешних языков программирования. процесс написания программки на VBA – последовательное наполнение характеристик разных объектов. язык VBA, является массивным программным средством, осуществлена возможность обработки файловой инфы. Но самым броским достоинством языка является возможность занесения результатов вычисления и всех данных в Office приложения, в MS Word и Ms Excel.
Другими словами можно отметить, что в истинное время огромное внимание уделяется программированию на Visual Basic for Applications. Конкретно потому задание, выданное на учебную практику, разрабатывается на данном языке программирования.
1 ПОСТАНОВКА задачки
1.1
Формулировка задачки
Для MS Word:
Начальный текст (слова, пробелы, знаки) задан одной строчкой. Нахождение в ней слов, которые начинаются и завершаются схожей буковкой.
Для MS EXCEL:
В матрице отыскать сумму частей, которые размещены по главной диагонали. Элементы всех чётных строк поделить на эту сумму.
1.2 Начальные данные
Для Word:
S1 : строчка ; { строчка, введенная юзером }
Для EXCEL:
a : двумерный массив [5,5 ] вещ ; { массив коэффициентов первого полинома }
1.3
Ограничения на начальные данные
Для EXCEL:
0 < = i < 5
0 < = j < 5
1.4
Промежные данные
Для Word:
S3: строчка ; {содержит слово, необходимое по условию}
k : цел ; { счетчик, определяющий количество знаков в любом слове }
start : цел ; { счетчик перебора знаков в строке }
i : цел ; { счетчик, показывающий начиная с какого знака будет
осуществляться чтение слова }
Для EXCEL:
B: массив [10] вещественных чисел; {содержит элементы главной диагонали}
1.5
Результаты
Для Word:
S3 : строчка ; { содержит разыскиваемые слова}
Для EXCEL:
a : массив [5,5 ] вещ ; { конечная матрица чисел}
2 ОПИСАНИЕ ЯЗЫКА
VBA
И системы ПРОГРАММИРОВАНИЯ В
OFFICE
Операционная система Windows компании Microsoft владеет удивительно комфортным интерфейсом и обилием умственных средств, которые высвобождают юзера от рутинной работы, присущей иным операционным системам. Естественным и неподменным дополнением данной операционной системы являются программные продукты Microsoft Office, которые даже начинающему юзеру разрешают с легкостью создавать безупречную по собственному оформлению документацию, создавать денежные, инженерные и остальные расчеты, создавать и работать с базами данных, конструировать презентации и слайды. совместно, операционная система Windows и программные продукты Microsoft Office, сразили весь мир. Компания Microsoft интегрировала в свои офисные продукты, в саму операционную среду замечательный по простоте и необыкновенный по собственной эффективности язык программирования Visual Basic for Applications либо сокращенно VBA. При помощи этого языка сейчас любой юзер может заавтоматизировать работу приложения и очень приспособить его работу для решения текущих задач, не только лишь добавив интерфейсу новейшую функциональность, да и удалив из него ненадобные для данного приложения элементы, тем обеспечив ему доп стабильность.
способности VBA совершенно не уступают иным системам программирования Windows и повсевременно вырастают. К тому же почти все системы программирования в Windows и VBA употребляют общие библиотеки объектов, посреди которых – объекты Excel, Word и т.д.
2.1
Типы данных
Типы данных относятся к базовым понятиям хоть какого языка. Тип данных описывает огромное количество допустимых значений, которое может принимать обозначенная переменная. В VBA имеются последующие типы данных:
— Byte (байтовый);
— Boolean (логический);
— Integer (целый);
— Long (длиннющий целый);
— Single (с плавающей точкой обыкновенной точности);
— Double (с плавающей точкой двойной точности);
— Currency (валютный);
— Decimal (масштабируемый целый);
— Date (даты и время);
— Object (объектный);
— String (строковый);
— Variant (случайный);
— тип данных, определяемый юзером;
— специальные типы объектов.
Для хранения целочисленных данных предусмотрены типы Integer (спектр значений от –32768 до 32767, в оперативки занимает два б) и Long (спектр значений от –2147483648 до 21447483648 и в оперативки занимает четыре б). Аналогично, для хранения десятичных чисел с плавающей точкой представлены типы данных Single (спектр от –3,4Е38 до –1,4Е-45 для отрицательных чисел и от 1,4Е-45 до 3,4Е38 для положительных чисел, в оперативки занимает четыре б) и Double (спектр от –1,7Е-308 до –4,9Е-324 для отрицательных чисел и от 4,9Е-324 до 1,7Е308 для положительных чисел, в оперативки занимает 8 байтов). Для хранения чисел с фиксированной точкой служит тип Currency. Переменная данного типа занимает в оперативки 8 б. Целая часть числа может содержать до 15 цифр, а дробная – до 4.
Используя переменные строкового типа, можно хранить строчки как фиксированной, так и переменной длины. Для переменной, имеющей тип строчки с фиксированной длинноватой, указывается наибольшая длина строчки. Если длина строчки, присваиваемая данной переменной, меньше данной длины строчки, то оставшиеся вольные места заполняются пробелами. При присвоении переменной строчки, количество знаков которой превосходит наибольшее значение, все излишние знаки отбрасываются. количество знаков, хранящихся в строке с переменной длиной, определяется длинноватой присваиваемых ей данных. При использовании ASCCII шифровки для всякого знака строчки выделяется один б, а при использовании шифровки Unicode – два б. Не считая этого выделяется 10 б для строчки в целом.
Для хранения двоичных данных рекомендуется употреблять массив переменных типа Byte. Любой элемент массива данного типа занимает один б оперативки.
Логический тип данных Boolean употребляется для хранения данных, принимающих одно из 2-ух значений: True либо False. По дефлоту переменной данного типа присваивается
Тип данных Date употребляется для хранения даты и времени. Переменная этого типа просит 8 б в оперативки.
Тип данных Variant является всепригодным. Переменная этого типа может хранить хоть какой из выше перечисленных типов данных. Все нужные преобразования производятся при присвоении переменной значения. Выделяемый переменной размер оперативки зависит от типа присвоенного значения, но не быть может наименее 16 б.
Для хранения ссылок на объекты употребляется тип данных Object. Любая переменная данного типа просит 4 б.
При разработке программ в среде VBA зависимо от типа данных переменных рекомендуется употреблять префиксы, приведенные в таблице 2.1
Таблица 2.1 – Префиксы, применяемые в наименованиях переменных
Тип данных
Префикс
Пример
Boolean
bin
binSuc
Byte
byt
bytImege
Currency
cur
curPrn
Date
dtm
dtmFinish
Double
dbl
dblSum
Integer
int
intKol
Long
Ing
IngLoop
Single
sng
sngTotal
String
str
strLast
Variant
vnt
vntValui
2.2
Описание переменных
определения время жизни и область видимости переменной означают пространство использования переменной в приложении, также время существования переменной опосля ее сотворения.
Область видимости переменной описывает часть кода, которая «понимает» о существовании данной переменной. При определении переменной в процедуре получить либо поменять ее к примеру, переменную, значения которой доступны для всех процедур модуля либо проекта. Есть три типа области видимости переменной:
— переменные уровня процедуры распознаются лишь в процедуре, в какой они описаны. Они описываются с помощью инструкций Dim либо Static. Такие переменные именуются локальными;
— переменные уровня модуля употребляются лишь в модуле, в каком они описаны, но не в остальных модулях данного проекта. Описываются с помощью оператора Dim либо Private в области описания модуля, т.е. перед описанием процедур;
— переменные уровня модуля, описанные с помощью аннотации Public, являются доступными для всех процедур проекта. Такие переменные именуются открытыми.
Закрытая (Private) переменная сохраняет свое программка.
Для неотклонимого объявления всех переменных сначала модуля, в так именуемой области модуля General Declarations, нужно поместить директиву Option Explicit. Внедрение данной директивы не допускает способности неверного ввода имени переменной, которая применяется в одной либо не — скольких процедурах модуля. к примеру, если переменная была объявлена как Ставка, а в коде при наборе заместо российской буковкы с была применена латинская буковка с, то это приведет к ошибке. В отсутствие директивы Option Explicit схожую ошибку было бы тяжело отследить.
2.3
Описание массивов
Как и в остальных языках программирования, в VBA можно употреблять массивы. Массив, как и всякую переменную, нужно объявлять, используя операторы Dim, Static, Private и Public, которые также задают область видимости переменной. В массиве допускается описание до 60 размерностей. При определении размерности нужно указывать верхнюю, также нижнюю границу. Если нижний индекс не задан очевидно, нижняя граница массива определяется директивой Option Base. Если отсутствует директива Option Base, нижняя граница массива приравнивается нулю. к примеру, в последующем операторе объявляется одномерный массив (вектор) из 12 целых чисел, при этом по дефлоту 1-ый элемент массива – А (0), а крайний – А (11). В этом случае говоря, что 0 – базисный индекс.
Dim А (11) As Integer
Данный же оператор заявляет двухмерный массив 3´3 (матрицу), состоящий из реальных чисел.
Dim B (2, 2) As Single
Можно поменять базисный индекс, написав в области объявлений модуля директиву Option Base 1. Опосля этого индексы массивов А и В будут начинаться с единицы. к примеру, в последующем операторе объявляется вектор, состоящий из 11 частей.
Option Base 1
Dim A (11) As Integer
Иным методом конфигурации базисного индекса является внедрение главного слова То при объявлении массива.
Dim B (1 To 3, 1 To 3) As Single
Dim A (1 To 12) As Integer
Инициализацию частей массива можно создавать по-разному:
— последовательностью операторов:
Dim B (1, 1) As Single
B (0, 0) = 2 : B (0, 1) = 4
B (1, 0) = 1 : B (1, 1) = 6
— оператором цикла:
Dim M (1 To 9, 1 To 9) As Integer
Dim i As Integer
Dim j As Integer
For i = 1 To 9
For j = 1 To 9
M (i, j) = i * j
Next
Next
время от времени в процессе выполнения программки требуется изменять размер массива. В этом случае сначало массив объявляют как динамический. Для этого при объявлении массива не нужно указывать размерность, к примеру:
Dim R () As Single
Потом в программке следует вычислить нужный размер массива в некой переменной, к примеру n, и поменять размер динамического массива при помощи оператора ReDim. В последующем примере поначалу объявляется динамический массив, а потом инсталлируются границы его индекса.
Dim R () As Double
ReDim R (1 To 10)
2.4
Операторы языка и управляющие конструкции
Математические операторы разрешают делать в программке деяния над числами. В таблице 2.2 приведены арифметические операторы и выполняемые ими функции.
Таблица 2.1 – Префиксы, применяемые в наименованиях переменных
Операция
символ
Запись
Типы данных
действие
Сложение
+
a + b
Byte, Short, Integer, Long, Single, Double, Decimal
Складывает два числа
Вычитание
—
a — b
Byte, Short, Integer, Long, Single, Double, Decimal
Вычитает из 1-го
числа другое
Деление
/
a/b
Byte, Short, Integer, Long, Single, Double, Decimal
Разделяет два числа и
возвращает итог
с плавающей точкой
Деление
нацело
ab
Byte, Short, Integer, Long, Single, Double, Decimal
Разделяет два числа и
возвращает целый итог (остаток отбрасывается)
Остаток
Mod
a Mod b
Byte, Short, Integer, Long, Single, Double, Decimal
Рассчитывается остаток
от деления 1-го числа на другое
Умножение
*
а * b
Byte, Short, Integer, Long, Single, Double, Decimal
Множит два числа
Возведение
в степень
^
a ^ b
Byte, Short, Integer, Long, Single, Double, Decimal
Возводит число в степень
Математические операторы предусмотрены для сотворения выражений. Выражения могут содержать переменные, константы, функции, связанные наиболее чем одним оператором. Если в выражении отсутствуют скобки, то операторы производятся в последующем порядке:
— возведение в степень;
— умножение и деление;
— деление нацело;
— взятие остатка от деления;
— сложение и вычитание.
Можно поменять порядок вычисления в выражении, используя круглые скобки.
В VBA, как и во всех языках программирования, есть управляющие конструкции, созданные для управления порядком выполнения установок. Различают два главных типа управляющих операторов:
— If
— Select..Case
Система If употребляется в том случае, когда нужно, чтоб группа операторов производилась при соблюдении определенных критерий. Система Select..Case дозволяет на основании анализа значения данного выражения делать те либо другие деяния.
В свою очередь, управляющие операторы if бывают 2-ух видов:
— If…Then
— If…Then…Else
Система If…Then применяется, когда нужно выполнить определенные деяния зависимо от некого условия. Управляющая система If…Then…Else употребляется в том случае, когда нужно выполнить различные деяния зависимо от условия. Система If.. .Then.. .Else подобна конструкции If…Then, но дозволяет задать деяния, исполняемые как при выполнении критерий, так и в случае их невыполнения.
Основанием для принятия решений в управляющих системах являются условные выражения, потому за ранее нужно сказать несколько слов о этих выражениях и работе с ними.
Условные выражения – это такие выражения, которые возвращают одно из 2-ух значений: правдалибо Ересь. В условных выражениях употребляют операторы сопоставления, приведенные в таблице 2.3.
Таблица 2.3 – Операторы сопоставления для условных выражений
Операция
символ
Меньше
<
Меньше либо равно
<=
больше
>
Операция
символ
Больше либо равно
>=
Равно
=
Не равно
<>
Над условными выражениями можно делать деяния логической арифметики (логические операции). К логическим побитовым операциям относятся операции And, Or, And Also, Or Else, Xor, Not.Операция Not имеет один операнд, другие – по два операнда.
Главные слова IF и End If имеют этот же смысл, что и в конструкции If…Then. Если данное в конструкции условие не производится (итог проверки равен False), и система содержит ключевое слово Else, Visual Basic выполнит последовательность конструкций, расположенных следом за Else. Опосля что управление перейдет к конструкции, последующей опосля End If.
2.5
Обычные функции работы с файлами, строчками, диалоговыми окнами
В VBA имеется ряд функций и операторов по работе с файлами и каталогами. Одним из удобств будет то, что не требуется устанавливать ссылку на применяемую библиотеку. В таблице 2.4 эти функции и представлены.
Таблица 2.4 – Функции и операторы для работы с файлами
Функция, оператор
Предназначение
Open
Открывает файл
Close
Закрывает все файлы
Close #
Закрывает файл по идентификатору
Reset
Закрывает все открытые файлы, записывает содержимое буферов.
Print tt
Записывает данные в файл
FileCopy
Копирует файл
EOF
Описывает метку конца файла
FileAttr
Возвращает режим доступа открытого файла
FileDateTime
Возвращает дату и время сотворения файла
FileLen
Возвращает размер файла в б
FreeFile
Возвращает номер вольного идентификатора
GetAttr
Получает атрибуты файла
SetAttr
Устанавливает атрибуты файла
Loc
Возвращает номер текущей позиции в файле
LOF
Возвращает размер открытого файла в б
Seek
Устанавливает на заданную номером позицию либо запись в файле
Dir
Возвращает содержимое текущей папки
Kill
Удаляет файл
Lock
Перекрывает файл при работе в многопользовательской среде
Unlock
Снимает блокировку файла в многопользовательской среде
Name
Задает имя файла
Get #
Читает данные из файла
Input
Читает данные из файла
Input #
Читает данные из файла
Line Input #
Читает строчку из файла
Put #
Записывает данные в файл
Write #
Записывает данные в файл
В таблице 2.5 представлены функции обработки строковых выражений, которые разрешают произвести широкий диапазон операций: от нахождения длины строчки, до подмены в строке подстрок.
Таблица 2.5 – Функции для работы со строчками
Функция
Предназначение
Asc
Возвращает ASCII— код знака
Chr
Преобразовывает ASCII-код в знак
InStr, InStrRev
Производит поиск одной строчки в иной
Lcase
Изменяет регистр букв начальной строчки на нижний
Left
Возвращает обозначенное количество знаков с начала строчки
Len
Возвращает количество знаков в строке
Ltrim, RTrim, Trim
Убирают пробелы, расположенные соответственно сначала, в конце и с обеих сторон символьной строчки
Функция
Предназначение
Mid
Возвращает данное количество знаков из случайного места строчки
Right
Возвращает обозначенное количество знаков с конца строчки
Str, CStr
Преобразовывают числовое выражение в строчку
StrReverse
Изменяет порядок следования знаков в строке на оборотный
StrConv
Изменяет регистр букв символьной строчки
Продолжение таблицы 2.5
Val
Преобразовывают строчку в числовое выражение
UCase
Изменяет регистр букв начальной строчки на нижний
В проектах VBA нередко встречаются две разновидности диалоговых окон: окна сообщений и окна ввода. Они интегрированы в VBA, и если их способностей довольно, то возможно обойтись без проектирования диалоговых окон. Окно сообщений выводит простые сообщения для юзера, а окно ввода обеспечивает ввод инфы.
Функция InputBox выводит на экран диалоговое окно, содержащее сообщение, поле ввода, и две клавиши OK и Cancel. Она устанавливает режим ожидания ввода текста юзером и нажатия клавиши, а потом, при нажатии на клавишу OK, возвращает
Процедура MsgBox выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия клавиши юзером, а потом возвращает
3 АЛГОРИТМ РЕШЕНИЯ ПОСТАВЛЕННОЙ задачки В
MS
Word
S1
Для i=1 до len(s1)-1
Если mid(s1, i,1)=” ”
Если mid(s2,1,1)=mid(s2,len(s2),1)
S3=s3+s2+” ”
s2 = «»
По другому
s2 = s2 + Mid(s1, i, 1)
s3
4 АЛГОРИТМ РЕШЕНИЯ ПОСТАВЛЕННОЙ задачки В
MS
EXCEL
Для i=1 до 5
Для j= 1 до 5
a(i,j)
sum = 0
Для i=1 до 5
b[i]=a[i,i]
sum=sum+b[i]
Для i=1 до 5
Для j=1 до 5
i=i+2
a[i,j]=a[i,j]/sum
Для i=1 до 5
Для j=1 до 5
a(i,j)
5 ТЕСТОВЫЕ ПРИМЕРЫ
MS Word
№1
Дед Мороз — красноватый нос, ты подарки нам принёс?
Дед
№2
Трактат о злосчастной любви.
Трактат
MS EXCEL
№1
1
2
3
4
5
6
7
8
9
10
7
9
11
13
15
2
4
4
6
7
3
6
4
0
8
Итог
1
2
3
4
5
0,18
0,21
0,24
0,27
0,3
7
9
11
13
15
0,06
0,121
0,121
0,18
0,21
3
6
4
0
8
приложение А
ЭКРАННЫЕ ФОРМЫ
Набросок А.1 – Работа программки в MS Word
Набросок А.2 – Пример работы программки в MS Word
Приложение
Б
ЛИСТИНГ ПРОГРАММЫ В MS EXCEL
Sub Laba1()
Dim m, i, j, k As Integer
Dim sum As Double
Dim a(5, 5), b(10) As Long
For i = 1 To 5
For j = 1 To 5
a(i, j) = Cells(i, j)
Next j
Next i
sum = 0
For i = 1 To 5
k = i
j = i
b(k) = a(i, j)
sum = sum + b(k)
Next i
For i = 2 To 5 Step 2
For j = 1 To 5
a(i, j) = a(i, j) / sum
Next j
Next i
Cells(7, 1) = «Конечная»
Cells(7, 2) = «матрица:»
For i = 1 To 5
For j = 1 To 5
Cells(i + 8, j) = a(i, j)
Next j
Next i
End Sub
приложение В
ЛИСТИНГ ПРОГРАММЫ В MS WORD
Sub Laba2()
Dim s1, s2, s3 As String
Dim i, j As Integer
Selection.WholeStory
s1 = Selection.Text
For i = 1 To Len(s1) — 1
If Mid(s1, i, 1) = » » Then
If Mid(s2, 1, 1) = Mid(s2, Len(s2), 1) Then
s3 = s3 + s2 + » «
End If
s2 = «»
Else
s2 = s2 + Mid(s1, i, 1)
End If
Next i
Selection.Text = s1 + s3
End Sub
]]>