2 Курс Информатика VBA(ЗО) / Книги / В.Д.Хорев - Самоучитель программирования на VBA в Microsoft Office
.pdf
Оглавление |
11 |
|
|
Свойство EntireColumn ................................................................................... |
178 |
Свойство EntireRow ........................................................................................ |
178 |
Свойство UsedRange ...................................................................................... |
179 |
Удаление диапазона со сдвигом оставшихся ячеек влево ............................. |
179 |
Метод Insert: пример вставки диапазона со сдвигом оставшихся ячеек |
|
вправо ............................................................................................................ |
179 |
Доступ к содержимому ячеек и диапазонов ................................................... |
179 |
Запись в ячееку значения......................................................................................... |
179 |
Свойство Formula ........................................................................................... |
179 |
Свойство FormulaLocal.................................................................................... |
179 |
Стиль ссылок R1C1......................................................................................... |
180 |
Свойство FormulaHidden................................................................................. |
180 |
Свойство Value ............................................................................................... |
180 |
Метод AutoFill: автозаполнение диапазона..................................................... |
180 |
Форматирование ячеек .................................................................................. |
180 |
Свойство ColumnWidth.................................................................................... |
180 |
Свойство RowHeight ....................................................................................... |
180 |
Свойство Font................................................................................................. |
180 |
Свойства Bold, Shadow, Name и Size......................................................................... |
181 |
Объект Interior ................................................................................................ |
181 |
Свойство Locked............................................................................................. |
181 |
Свойство Style ................................................................................................ |
181 |
Очистка диапазона ......................................................................................... |
181 |
Объект Characters........................................................................................... |
181 |
ÐАБОТА С ОБЪЕКТАМИ MS ACCESS ................................................................ |
182 |
Работа со структурой базы данных Access.......................................... |
182 |
Объекты Database (база данных), TableDef (определение таблицы) и |
|
семейство Field (поля таблицы) ......................................................................... |
182 |
Объявление переменных типа база данных, определение таблицы и поле |
|
таблицы .......................................................................................................... |
182 |
Метод OpenDatabase: открытие базы данных................................................. |
182 |
Метод CreateField объекта TableDef: добавление текстового поля ................ |
182 |
Метод Append................................................................................................. |
183 |
Метод Close: закрытие базы данных .............................................................. |
183 |
Метод CreateTable: создание таблицы ........................................................... |
183 |
Свойства полей.................................................................................................. |
184 |
Ввод в поле таблицы значения по умолчанию (DefaultValue) ........................ |
184 |
Свойство Required: проверка допустимых значений вводимых в поле........... |
184 |
Свойство Type: тип данных............................................................................. |
184 |
Свойство FieldSize: размер поля .................................................................... |
184 |
Константы типа данных поля .......................................................................... |
184 |
Работа с содержимым базы данных Access......................................... |
184 |
Объект DoCmd ................................................................................................... |
185 |
Метод OpenTable: открытие таблицы ............................................................. |
185 |
Метод OutputTo: вывод таблицы .................................................................... |
185 |
Метод PrintOut: печать таблицы ..................................................................... |
185 |
Метод OpenForm: открытие формы ................................................................ |
185 |
Метод Maximize: развернуть форму .......................................................................... |
185 |
Метод Maximize: свернуть форму до значка .............................................................. |
185 |
Метод GoToRecord: навигация формы ........................................................... |
185 |
Метод GoToControl: передача фокуса элементу управления формы.............. |
185 |
Свойство AllowDeletions: запрет удаления записей пользователем ............... |
186 |
Свойство AllowEdits: запрет изменения записей ............................................ |
186 |
Свойства формы............................................................................................. |
186 |
Семейство Controls .................................................................................................. |
186 |
Свойство CurrentRecord ........................................................................................... |
186 |
Свойство Dirty .......................................................................................................... |
186 |
Свойства FilterOn и Filter........................................................................................... |
187 |
Свойство NavigationButtons....................................................................................... |
187 |
Семейство Forms............................................................................................ |
187 |
Метод Quit: закрытие базы данных ................................................................ |
188 |
ГЛАВА 8
12 Оглавление
VBA-ПРОГРАММИРОВАНИЕ: ПРИМЕРЫ И ИЛЛЮСТРАЦИИ....................... |
190 |
ÏРОГРАММИРОВАНИЕ ОБЪЕКТОВ ИНТЕГРИРОВАННОЙ СРЕДЫ MS OFFICE .................. |
191 |
Панели инструментов и меню в приложениях MS Office....................... |
191 |
Объекты типа CommandBar ............................................................................... |
191 |
Объекты типа CommandBarControl ................................................................. |
191 |
Метод FindControl: поиск элемента управления ............................................. |
191 |
Свойство FaceId: изменение значка на элементе управления........................ |
192 |
Создание пользовательской панели инструментов ........................................... |
192 |
Метод Add ...................................................................................................... |
192 |
Свойство Visible .............................................................................................. |
192 |
Создание новой кнопки ..................................................................................... |
193 |
Создание пользовательского меню ................................................................... |
194 |
Добавление пользовательской команды в стандартное меню приложения |
|
MS Office............................................................................................................ |
196 |
Программирование помощника Office................................................. |
197 |
Объект Assistant ................................................................................................. |
198 |
Обработка ошибок с использованием оператора On Error GoTo....................... |
198 |
Создание пользовательской Справки ................................................................ |
198 |
Переменная типа Balloon................................................................................ |
199 |
Свойство Visible .............................................................................................. |
199 |
Свойство Animation......................................................................................... |
199 |
Метод NewBalloon .......................................................................................... |
199 |
Свойства Heading и Text ................................................................................. |
199 |
Свойство Button.............................................................................................. |
199 |
Свойство Labels.............................................................................................. |
200 |
Метод Show .................................................................................................... |
200 |
Реакция помощника на выбор пользователя .................................................. |
201 |
ÔОРМАТИРОВАНИЕ ОБЪЕКТОВ ПРИЛОЖЕНИЙ MS OFFICE ..................................... |
202 |
Пример форматирования документа Word .......................................... |
203 |
Форматирование абзаца.................................................................................... |
203 |
Использование константы vbCr ...................................................................... |
203 |
Использование метода InsertBefore................................................................ |
204 |
Свойство Content............................................................................................ |
204 |
Свойство Style ................................................................................................ |
204 |
Заголовок сообщения .............................................................................................. |
204 |
Простой текст .......................................................................................................... |
205 |
Списки..................................................................................................................... |
205 |
Подпись ................................................................................................................... |
205 |
Изменение размера шрифта .......................................................................... |
205 |
Общий вид документа: пример изменения границ документа (раздела) ....... |
206 |
Свойство ArtStyle: художественный стиль границы.................................................... |
207 |
Свойством ArtWidth: ширина границы ....................................................................... |
207 |
Границы абзаца.............................................................................................. |
207 |
Свойство SpaceAfter: отступ снизу ................................................................. |
208 |
Свойство Alignment: пример выравнивания абзаца слева.............................. |
208 |
Форматирование графических объектов (семейство Shapes) ........................... |
208 |
Метод AddShape............................................................................................. |
208 |
Надпись на автофигуре .................................................................................. |
209 |
Форматирование документа посредством тем .................................................. |
209 |
Метод ApplyTheme.......................................................................................... |
210 |
ÏРЕДСТАВЛЕНИЕ ДАННЫХ В MS OFFICE ........................................................... |
210 |
Подготовка табличных данных ............................................................ |
210 |
Условные форматы ............................................................................ |
211 |
Постановка задачи............................................................................................. |
211 |
Определение диапазона условного форматирования........................................ |
211 |
Объект FormatCondition...................................................................................... |
211 |
Метод Add: добавление условного формата .................................................. |
212 |
Форматирование данных удовлетворяющих условию........................................ |
212 |
Добавление второго условного формата........................................................... |
212 |
Изменение границ таблицы................................................................ |
214 |
|
Оглавление |
13 |
|
|
|
Диаграммы ........................................................................................ |
214 |
|
|
Объект ChartObject: вставка диаграммы на лист Excel ...................................... |
214 |
|
Метод SetSourceData: создание обычной гистограммы ................................. |
215 |
|
Свойство HasLegend....................................................................................... |
216 |
|
Свойство ChartType: задание типа диаграммы............................................... |
216 |
|
Метод ApplyCustomType: создание пользовательского типа диаграмм ......... |
217 |
|
Свойство HasTitle: создание заголовка диаграммы........................................ |
218 |
|
Свойство ChartTitle................................................................................................... |
218 |
|
Семейство Axes: форматирование осей диаграммы ...................................... |
219 |
|
Примеры форматирования диаграмм ................................................................ |
219 |
|
Свойства HasTitle и AxisTitle: создание заголовков осей диаграммы ............. |
219 |
|
Свойства Elevation, Rotation и Perspective: поворот диаграммы вокруг осей 220 |
|
Изменение заливки области диаграммы ........................................................ |
221 |
|
ГЛАВА 9 |
|
|
|
ПРОГРАММИРОВАНИЕ В OUTLOOK: ДОКУМЕНТООБОРОТ И ЭЛЕКТРОННАЯ |
|
ПОЧТА .............................................................................................. |
223 |
|
ÝЛЕКТРОННАЯ ПОЧТА В СОВРЕМЕННОМ ОФИСЕ .................................................. |
223 |
|
ÏОСТАНОВКА ЗАДАЧИ ................................................................................. |
223 |
|
|
ÎБЪЕКТНАЯ МОДЕЛЬ OUTLOOK 2000.............................................................. |
224 |
Классы и объекты .............................................................................. |
225 |
|
Библиотеки типов .............................................................................. |
225 |
|
|
Как подключить к Excel библиотеку типов Outlook............................................. |
225 |
|
Назначение и основные свойства некоторых классов Outlook.............. |
227 |
|
Класс Application ................................................................................................ |
228 |
|
Класс NameSpace .............................................................................................. |
228 |
|
Класс SyncObject ............................................................................................... |
229 |
|
Класс Explorer .................................................................................................... |
229 |
|
Класс MAPIFolder ............................................................................................... |
230 |
|
Класс MailItem.................................................................................................... |
230 |
ÑОЗДАНИЕ УЧЕТНЫХ ЗАПИСЕЙ....................................................................... |
231 |
|
|
ÑОЗДАНИЕ ПРИЛОЖЕНИЯ REGISTRATOR ........................................................... |
234 |
|
Создание заготовки приложения ........................................................ |
235 |
Изменение имени листа .................................................................................... |
235 |
|
|
Создание элемента управления Кнопка............................................................. |
235 |
|
Создание заготовки макроса, связанного с кнопкой ......................................... |
235 |
Создание модулей, классов и форм, и изменение их свойств .......................... |
235 |
|
|
Изменение свойств кнопки на рабочем листе Excel .......................................... |
237 |
|
Определение программных элементов ............................................... |
237 |
|
Анализ объявленных программных элементов .................................................. |
239 |
|
Разработка схемы приложения........................................................... |
239 |
|
Компиляция проекта и запуск его на выполнение ............................................. |
242 |
Написание программного кода ........................................................... |
243 |
|
|
Инициализация и деинициализация .................................................................. |
243 |
|
Синхронизация .................................................................................................. |
243 |
Определение нужного интервала и создание нового листа .............................. |
247 |
|
|
Ключевая процедура приложения — выборка входящих и исходящих писем .... |
250 |
|
Доводка приложения Registration до профессионального уровня ..................... |
254 |
|
Доводка и совершенствование приложения........................................ |
259 |
ПРИЛОЖЕНИЕ |
|
|
|
|
|
|
VBA, КАК ЯЗЫК ПРОГРАММИРОВАНИЯ: ДАННЫЕ, СИНТАКСИС И ФУНКЦИИ |
|
|
........................................................................................................ |
262 |
|
ÄАННЫЕ VBA: ТИПЫ ДАННЫХ, ПЕРЕМЕННЫЕ И КОНСТАНТЫ ................................... |
262 |
Переменные и константы ................................................................... |
263 |
|
Константы .......................................................................................................... |
263 |
Объявление констант ..................................................................................... |
263 |
14 Оглавление
Переменные....................................................................................................... |
264 |
Объявление переменных ................................................................................ |
264 |
Инициализация переменных........................................................................... |
264 |
Зачем объявлять переменные? ...................................................................... |
264 |
Директива Option Explicit ................................................................................ |
265 |
Область видимости и время жизни переменных ............................................ |
266 |
Массивы ............................................................................................................ |
267 |
Динамические массивы .................................................................................. |
267 |
Объектные переменные ..................................................................................... |
268 |
Типы данных ...................................................................................... |
269 |
Зачем нужно объявлять тип? ............................................................................. |
269 |
Простые типы данных ........................................................................................ |
270 |
Boolean ........................................................................................................... |
270 |
Integer............................................................................................................. |
270 |
Long................................................................................................................ |
270 |
Single .............................................................................................................. |
271 |
Double............................................................................................................. |
271 |
Currency.......................................................................................................... |
271 |
Date ................................................................................................................ |
272 |
String .............................................................................................................. |
272 |
Variant ............................................................................................................. |
273 |
Типы данных, определяемые пользователем..................................................... |
273 |
ÑИНТАКСИЧЕСКИЕ КОНСТРУКЦИИ ЯЗЫКА VBA ................................................... |
274 |
Выражения и операции ...................................................................... |
274 |
Арифметические операции ................................................................................ |
274 |
Логические операции ........................................................................................ |
275 |
Операции сравнения.......................................................................................... |
275 |
Операция Is .................................................................................................... |
275 |
Операция Like................................................................................................. |
276 |
Директивы Option Compare Binary и Option Compare Text .......................................... |
276 |
Примеры использования операции Like .................................................................... |
276 |
Операции со строками....................................................................................... |
277 |
Управляющие конструкции языка........................................................ |
277 |
Переход по метке .............................................................................................. |
277 |
Оператор GoTo ............................................................................................... |
277 |
Оператор GoSub…Return ................................................................................ |
278 |
Операторы цикла ............................................................................................... |
278 |
Öèêë While … Wend......................................................................................... |
278 |
Öèêë Do … Loop.............................................................................................. |
279 |
Öèêë For … Next.............................................................................................. |
279 |
Öèêë For Each … Next ..................................................................................... |
280 |
Принятие решений: операторы ветвления (условные конструкции) .................. |
280 |
Функция Switch ............................................................................................... |
280 |
Функция Choose ............................................................................................. |
281 |
Функция IIf ...................................................................................................... |
281 |
Конструкция If … Then … Else … End If ........................................................... |
281 |
Конструкция Select Case … End Select ........................................................... |
282 |
ÎПЕРАТОРЫ И ВСТРОЕННЫЕ ФУНКЦИИ ЯЗЫКА VBA ............................................. |
282 |
Интерфейс с пользователем............................................................... |
283 |
Вывод сообщений (функция MsgBox) ................................................................ |
283 |
Ввод данных (функция InputBox)........................................................................ |
284 |
Взаимодействие с операционной системой ........................................ |
285 |
Запуск приложений (функция Shell)................................................................... |
285 |
Как сделать запущенное приложение активным (оператор AppActivate) ........... |
286 |
Управление другим приложением при помощи имитации ввода с клавиатуры |
|
(оператор SendKeys).......................................................................................... |
286 |
Вычисление факториала при помощи калькулятор Windows из VBA-кода...... |
286 |
Файловые операции .......................................................................................... |
287 |
Какие бывают файлы...................................................................................... |
288 |
Файлы последовательного доступа .......................................................................... |
288 |
Файлы произвольного доступа ................................................................................. |
288 |
Оглавление |
15 |
|
|
Бинарные (двоичные) файлы .................................................................................... |
288 |
Операции с каталогами и дисками................................................................. |
288 |
Оператор ChDrive ..................................................................................................... |
288 |
Оператор MkDir........................................................................................................ |
288 |
Оператор ChDir ........................................................................................................ |
288 |
Оператор RmDir ....................................................................................................... |
289 |
Функция CurDir......................................................................................................... |
289 |
Функция Dir.............................................................................................................. |
289 |
Переименование файла или каталога (оператор Name) ................................ |
290 |
Копирование файлов (оператор FileCopy) ...................................................... |
290 |
Удаления файлов (оператор Kill) .................................................................... |
290 |
Как открыть файл (оператор Open) ................................................................ |
291 |
Особенности режима произвольного доступа к файлу .............................................. |
291 |
Ввод данных из открытого файла (операторы Input, Line Input) ..................... |
292 |
Вывод данных в открытый файл (операторы Write, Print) ............................... |
293 |
Вывод строк в текстовый файл ...................................................................... |
293 |
Оператор Width ........................................................................................................ |
293 |
Функция Spc ............................................................................................................ |
293 |
Функция Tab ............................................................................................................ |
294 |
Закрытие файлов (операторы Reset, Close) ................................................... |
294 |
Операции с файлами, открытыми в режиме произвольного доступа............. |
294 |
Оператор Seek ......................................................................................................... |
294 |
Функция Loc............................................................................................................. |
294 |
Оператор Put ........................................................................................................... |
295 |
Оператор Get ........................................................................................................... |
295 |
Функция EOF............................................................................................................ |
295 |
Оператор Lock ......................................................................................................... |
295 |
Оператор Unlock ...................................................................................................... |
295 |
Работа с системным реестром Windows ............................................................ |
296 |
Оператор SaveSetting ............................................................................................... |
296 |
Функция GetSetting................................................................................................... |
296 |
Оператор DeleteSetting............................................................................................. |
297 |
Работа со значениями даты и времени ............................................................. |
297 |
Представление значений даты и времени в MS Office и VBA......................... |
297 |
Представление значений времени............................................................................ |
297 |
Представление значений даты.................................................................................. |
297 |
Функция DateSerial ......................................................................................... |
297 |
Преобразование строк в значения даты (функция DateValue) ........................ |
298 |
Функция TimeSerial ......................................................................................... |
298 |
Преобразование строк в значения времени (функция TimeValue).................. |
299 |
Системная дата и системное время ............................................................... |
299 |
Функция Date ........................................................................................................... |
299 |
Функция Time ........................................................................................................... |
299 |
Функция Now............................................................................................................ |
300 |
Календарные вычисления............................................................................... |
300 |
Функция DateAdd...................................................................................................... |
300 |
Функция DateDiff ...................................................................................................... |
301 |
Функция DatePart ..................................................................................................... |
301 |
Функция Year ........................................................................................................... |
302 |
Функция Month......................................................................................................... |
302 |
Функция Day ............................................................................................................ |
302 |
Функция Weekday..................................................................................................... |
302 |
Вычисления со значениями времени.............................................................. |
303 |
Функция Hour ........................................................................................................... |
303 |
Функция Minute ........................................................................................................ |
303 |
Функция Second....................................................................................................... |
303 |
Функция Timer.......................................................................................................... |
303 |
Работа со строками ........................................................................................... |
303 |
Сравнение строк (функция StrComp).............................................................. |
303 |
Выделение подстроки .................................................................................... |
304 |
Функции Left и LeftB................................................................................................. |
304 |
Функции Right и RightB............................................................................................. |
304 |
Функции Mid и MidB ................................................................................................. |
304 |
Поиск в строке (функции InStr, InStrB) ........................................................... |
305 |
Преобразования регистра (функции LCase, UCase) ....................................... |
305 |
Форматирование строки................................................................................. |
306 |
Функция Space......................................................................................................... |
306 |
16 Оглавление
Функция String ......................................................................................................... |
306 |
Функция Len............................................................................................................. |
306 |
Примеры форматирования строк.............................................................................. |
306 |
Функции удаления пробелов (LTrim, RTrim, Trim) ...................................................... |
307 |
Функция Format........................................................................................................ |
307 |
Преобразование строковых и символьных значений...................................... |
309 |
Функции Asc, AscB и AscW ....................................................................................... |
309 |
Функции Chr, Chr B и Chr W ..................................................................................... |
309 |
Примеры использования строковых функций................................................. |
309 |
Шифрование/дешифрование строки ........................................................................ |
309 |
Разбор строки.......................................................................................................... |
311 |
Предисловие
Зачем эта книга
Современный офис, будь то государственное или коммунальное учреждение, торговая фирма или заводоуправление, немыслим без пакета программ MS Office. Повсюду, где ведется деловая переписка, и работают с текстовыми документами любого рода, можно увидеть вездесущий Word. На листах рабочих книг Excel ведется множество видов учета и отчетности — эта программа распространена почти так же широко, как и Word. Практически говоря, MS Word и MS Excel стали стандартом “де-факто” в офисной деятельности. Такие приложения пакета Office, как MS Access и MS PowerPoint, используются не столь повсеместно, но все же распространены достаточно широко.
И столь же широко, как сам пакет MS Office, распространено его незнание. Тысячи и тысячи пользователей могли бы несказанно облегчить и усовершенствовать свою работу, использовав лишь маленькую толику возможностей MS Office, но… не делают этого. Такой пользователь готов часами выполнять утомительные, рутинные операции. Идея автоматизировать свою работу ему в голову не приходит, — нет, не потому, что он не хотел бы облегчить себе жизнь. И не потому, что мощь MS Office ему неведома, — он слышал такие слова, как “макрос”, “VBA”, “OLE” и т.п. Но эти слова его слегка пугают. “Это, пожалуй, сложновато для меня”. “Это для программистов”.
Но немногие отдают себе отчет в том, что MS Office — это не система программирования и не платформа для разработки программного обеспечения. MS Office — это пользовательский пакет и большинство имеющихся в нем средств предназначено для самых что ни на есть обыкновенных пользователей-непрофессионалов.
В этой книге будет показано, как можно решать типичные задачи современного офиса, используя, если не все, то многие из возможностей пакета MS Office, которые обычно остаются “за кадром”. Здесь будет показано, каким образом даже не слишком продвинутый пользователь в состоянии значительно облегчить себе жизнь и усовершенствовать свою работу при помощи инструментальных средств пакета MS Office.
Старинный способ: “Делай, как я!”
В стародавние времена, на военном флоте для связи между кораблями использовали специальные сигналы — наборы вымпелов. Когда флагманский фрегат, в разгаре сражения, не мог или не успевал сообщить своим кораблям детальные инструкции по предстоящему маневрированию, он поднимал сигнал “Делай, как я!”. И начинал маневр, показывая собственным примером, что и как следует делать остальным кораблям эскадры.
Этот старинный способ “сверхбыстрого обучения” представляется наиболее подходящим для того, чтобы ввести читателя-непрофессионала во внутренний мир Office. В этой книге решаются типичные задачи современного офиса, не вдаваясь в слишком подробные объяснения. Поначалу, неподготовленному читателю будет непонятным абсолютно все — он должен будет просто выполнять детальные инструкции и наблюдать, что получается в результате. Выполняемые действия будут снабжены некоторыми объяснениями, из которых, по мере продвижения вперед по материалу книги, картина будет становиться все яснее. Сначала будет понятным только кое-что из выполняемых действий, затем станет понятным многое. Наконец, в последней главе будут суммированы и систематизированы те основы макроязыка VBA, которыми на практике к тому моменту уже овладеет читатель.
18 Предисловие
О чем эта книга
Среди великого многообразия “офисных” задач были выбраны некоторые, наиболее типичные и более всего, на наш взгляд, нуждающиеся в автоматизации.
Вообще говоря, задачи автоматизации можно разделить на два больших класса. К первому из них относятся операции, которые, в принципе, можно без большого напряжения выполнить и вручную — просто придется много раз нажимать на клавиши или “до одурения” щелкать мышью. При автоматизации таких операций все сводится к тому, чтобы заменить много щелчков мышью или нажатий на клавиши одним щелчком или одним нажатием.
Задачи второго класса сложнее. Есть операции, которые, даже запасясь бесконечным терпением, вручную не выполнишь. Решать такие задачи труднее, но и результат решения более ценен. Этот результат — новое качество, новые функциональные возможности, которые ранее были недоступны. Понятно, что ради решения в первую очередь именно таких задач стоит браться за изучение инструментальных средств Office.
Что потребуется для работы с этой книгой
Прежде всего, — желание. Желание работать в современном офисе на современном уровне. Этому не так трудно научиться, как некоторые думают, но определенных усилий это все же потребует.
Конечно же, нам потребуется пакет MS Office, установленный на компьютере. Должен ли это быть именно MS Office 2000? Не обязательно (хотя, разумеется, желательно). Большинство средств, которые будут использованы, имеются и в предыдущих версиях пакета. Если, например, говорить о пакете MS Office 97, то практически все, о чем пойдет речь в этой книге, совместимо с ним.
Существует несколько вариантов установки MS Office. Может встретиться вариант, в котором отсутствуют некоторые из инструментальных средств. Например, возможна установка пакета MS Office без VBA — системы поддержки языка программирования Visual Basic для приложений. В каких-то случаях, возможно, необходимо будет доустановить недостающие компоненты пакета.
Îмакросах и макровирусах
Впакете MS Office 2000 (в отличие от предыдущих версий) предусмотрена многоуровневая защита от макровирусов. Что такое макровирус? Чтобы понять это, необходимо вначале иметь представление о “нормальных макропрограммах” — макросах, как их принято называть. Макроязык VBA — Visual Basic для приложений — является, фактически, одним из основных связующих звеньев, благодаря которым различные программы пакета MS Office связаны воедино, и благодаря которым вообще можно говорить о таких вещах, как рабочая среда MS Office или объекты
Office.
Опасны ли макросы?
Опасны ли макросы сами по себе? Нет, конечно. Не более чем опасны обычные программы, такие, например, как MS Word или MS Excel. Подобно тому, как существуют программные вирусы, способные “заразить” программный файл (например, исполняемый файл MS Word) точно так же существуют и макровирусы, способные “заразить” макропрограмму.
Где они находятся?
Макропрограммы — макросы — пакета MS Office “живут” в документах Word, шаблонах, листах рабочих книг Excel и других файлах данных Office. Если макрос базы данных Access может физически находиться только в файле базы данных, то макросы Word обитают как в собственно документах (при этом, передав кому-то файл документа, одновременно будет передан содержащиеся в нем макросы), так и файлах шаблонов — в первую очередь в общем шаблоне Normal
Предисловие 19
(Обычный). Содержащиеся в шаблоне Normal макросы никуда не передаются при пересылке документов и всегда “под рукой”, то есть они связаны с данным конкретным компьютером. В среде Excel макросы могут содержаться как в рабочих книгах (и тогда они передаются вместе с файлом рабочей книги), так и в шаблонах Excel.
Надо ли бояться макросов?
Если будет открыт документ Word, присланный, например, по электронной почте, то риск поражения макровирусами лежит полностью на пользователе, сделавшем это. Если используются собственные макросы, записанные в общем шаблоне Normal, и не открываются чужие документы с макросами, то макровирусы документов Word гарантированно не страшны. Отношение к макровирусам напоминает отношение к автомобильным авариям. Несомненным фактом является то, что в дорожных происшествиях гибнут ежегодно тысячи и десятки тысяч людей. Но никому не приходит при этом в голову отказаться от автомобилей, как от средства передвижения. И случающиеся в жилых зданиях пожары не заставили еще человечество вернуться в пещеры. Слишком многое дают людям автомобильный транспорт и жилые здания — достаточно много, чтобы человечество было согласно идти на риск несчастных случаев. Точно так же, макросы рабочей среды MS Office слишком многое дают пользователю, чтобы избегать угрозы макровирусов ценой отказа от услуг “добропорядочных” макросов. Как и в примерах с автомобилями и пожарами, здесь, чтобы спать спокойно, достаточно соблюдать свои “правила дорожного движения” и “правила пожарной безопасности”.
Уровни безопасности в Office 2000
Диалоговое окно Безопасность (рис. 1) позволяет задать реакцию приложения на наличие макросов в открываемом документе — новация версии 2000 —
команду Сервис | Макрос | Безопасность). Ва-
рианты “Высокая” и “Низкая” соответствуют крайним степеням, нас же интересует “золотая середина” — этот уровень безопасности предполагает, что приложение не будет открывать содержащий макросы документ без подтверждения со стороны пользователя.
Если открываемый документ (например, рабочая книга Excel) содержит макросы и если, при этом, в данном приложении Office выбран “средний” уровень безопасности, на экране появится диалоговое окно с предупреждением.
Если это документ неизвестного вам происхождения, полученный из источника, вирусная чистота которого с вашей точки зрения не гарантирована, то разумней всего будет, конечно, отключить макросы. Но если речь идет о собственном документе пользователя или рабочей книге, которую он сам снабдил макросами VBA, то нет причин отказываться от полезных (а порою — просто необходи-
мых) функциональных возможностей, которые связаны с применением макросов VBA.
В. Д. Хорев
