Данный макрос открывает диалоговое окно
' Данный макрос открывает диалоговое окно и выводит сообщение
Sub Stupid_Greeting
MsgBox "Hello World!"
End Sub
Процедуры-функции (также называемые просто функциями) возвраща-
ют значение, которое может быть передано в качестве параметра другой
процедуре. Их синтаксис:
Function <Имя_Функции>(Аргументы)
-> Инструкции <-
'Комментарий
End Function
'Суммирует параметры а и b и возвращает
'результат в переменную "AddAB"
Function AddAB(a.b)
AddAB=a+b
End Function
Конечно, в документ можно вставить столько макросов, сколько нужно
(или сколько хочется), ограничений на их количество нет. Набор мак-
росов (процедур-подпрограмм и процедур-функций), составляющих до-
кумент, называется модулем VBA.
Язык VBA работает также с объектами (внутри модулей VBA можно
делать ссылки на документы, графику). Объекты обладают свойствами.
Например, свойством (или атрибутом) объекта является его цвет.
VBA также позволяет работать с переменными. Как любой язык струк-
турного типа, VBA имеет типичные конструкции:
цикл "For-next":
Sub Counter "Процедура
lnfect_Num=0
For Count=1 to 10 'Цикл от 1 до 10
lnfect_Num=lnfect_Num+Count
Next Count
MsgBox "Достигли максимального количества заражений"
End Sub
4-1436
условие "If-then":
Sub lnfect_Check
If lnfect_Num=0 Then MsgBox "Файл не заражен"
End Sub
конструкция "With-end with" (используется для работы с несколькими
свойствами конкретного объекта):
Sub ChangeProperties
With Selection
.Font.Bold=True
.Font.Colorlndex=3 'красный цвет
End With
End Sub
селектор "Select case-end case":
Sub CheckJnfection
Select Case lnfect_Num
Case 0
MsgBox "Файл не заражен"
Case is > О
MsgBox "Файл заражен"
Case is < О
lnfect_Num=0
End Case
End Sub
Полезным инструментом для работы с VBA является окно отладки.
В нем можно трассировать код, вносить в него изменения и делать мно-
гое другое. В процессе отладки для остановки на некоторое время ис-
полнения кода используются флаги. Чтобы можно было анализировать
содержимое конкретных переменных и/или инструкций, после каждой
команды выводятся сообщения (в отладчике VBA для прерывания ис-
полнения кода можно ставить также контрольные точки).
Нужно обратить внимание на разнообразные аргументы функций.
Как уже говорилось, структура их следующая:
Function <Имя>(Аргументы)
[.]
End Function
Аргументами могут быть константы, переменные или выражения.
Процедуры могут быть и без аргументов.
Function Get_Name()
Name=Application.UserName
End Function
Некоторые функции всегда требуют фиксированное число аргументов
(до 60). Другие функции имеют несколько обязательных аргументов,
а остальные могут отсутствовать.
После того, как основы VBA стали понятны, идем дальше. Итак, виру-
сы и "троянцы" на VBA.
Язык VBA универсален, и тому есть две причины. Во-первых, этот язык
прост в изучении и использовании, поскольку он является языком ви-
зуального программирования, он ориентирован на события, а не на
объекты. С его помощью без особых затрат времени очень легко созда-
вать сложные модули. Во вторых, можно использовать большое количе-
ство предопределенных функций, облегчающих работу. В третьих, име-
ются функции (или макросы) автоматического выполнения, что
позволяет упростить написание процедур автокопирования, занесения
в память и прочих используемых стандартными DOS-вирусами.
Помимо этого, преимуществом VBA является свойство переносимости.
VBA работает под Win З.х, Win95, WinNT, MacOS и так далее, то есть
в любой операционной системе, где можно запустить приложения его
поддерживающие.
VBA представляет собой язык, адаптированный к языку приложения,
из-под которого он запущен. Это означает, что если на компьютере ус-
тановлена, например, испанская версия WinWord, то имена предопреде-
ленных функций будут также на испанском. Так что два следующих
макроса - вовсе не одно и то же.