Инструменты для автоматизации экселя. Автоматизация Excel: автоматизация рутинных операций в Excel без макросов. Запуск Microsoft Excel, создание и открытие рабочих книг

Последнее десятилетие компьютер в бухгалтерии стал просто незаменимым инструментом. При этом его применение разнопланово. В первую очередь это, конечно, использование бухгалтерской программы. На сегодняшний день разработано довольно много программных средств, как специализированных («1С», «Инфо-Бухгалтер», «БЭСТ» и т. д.), так и универсальных, подобно Microsoft Office. На работе, да и в быту часто приходится делать массу различных расчётов, вести многострочные таблицы с числовой и текстовой информацией, проделывая с данными всяческие вычисления, выводя на печать варианты. Для решения ряда экономических и финансовых задач целесообразно использовать многочисленные возможности электронных таблиц. Рассмотрим в этой связи вычислительные функции MS Excel.
Владимир СЕРОВ, к. п. н., Ольга ТИТОВА

Источник: Журнал "Бухгалтер и Компьютер" №4 2004г.

Как и любая другая электронная таблица, MS Excel предназначен прежде всего для автоматизации расчётов, которые обычно производят на листке бумаги или с помощью калькулятора. На практике в профессиональной деятельности встречаются довольно сложные расчёты. Именно поэтому мы подробнее поговорим о том, как Excel помогает нам автоматизировать их выполнение.

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

Все операторы делятся на несколько групп (см. таблицу).

ОПЕРАТОР ЗНАЧЕНИЕ ПРИМЕР


АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ

+ (знак плюс) Сложение =А1+В2
- (знак минус) Вычитание Унарный минус =А1-В2 =-В2
/(косая черта) Деление =А1/В2
*(звёздочка) Умножение = А1*В2
% (знак процента) Процент =20%
^ (крышка) Возведение в степень = 5^3 (5 в 3-й степени)


ОПЕРАТОРЫ СРАВНЕНИЯ

= Равно =ЕСЛИ(А1=В2;"Да";"Нет")
> Больше =ЕСЛИ(А1>В2;А1;В2)
< Меньше =ЕСЛИ(АКВ2;В2;А1)
>= <= Больше или равно Меньше или равно =ЕСЛИ(А1>=В2;А1;В2) =ЕСЛИ(АК=В2;В2;А1)
<> Не равно =ЕСЛИ(А1 <>В2;"Не равны")


ТЕКСТОВЫЙ ОПЕРАТОР

&(амперсанд) Объединение последовательностей символов в одну последовательность символов = "Значение ячейки В2 равняется: "&В2


АДРЕСНЫЕ ОПЕРАТОРЫ

Диапазон(двоеточие) Ссылка на все ячейки между границами диапазона включительно =СУММ(А1:В2)
Объединение (точка с запятой) Ссылка на объединение ячеек диапазонов =СУММ(А1:В2;СЗ;D4:Е5)
Пересечение(пробел) Ссылка на общие ячейки диапазонов =CУMM(A1:B2C3D4:E5)

Арифметические операторы используются для обозначения основных математических операций над числами. Результатом выполнения арифметической операции всегда является число. Операторы сравнения используются для обозначения операций сравнения двух чисел. Результатом выполнения операции сравнения является логическое значение ИСТИНА или ЛОЖЬ.

Для выполнения вычислений в программе Excel используются формулы. С помощью формул можно, например, складывать, умножать и сравнивать данные таблиц, т. е. формулами следует пользоваться, когда необходимо ввести в ячейку листа (автоматически рассчитать) вычисляемое значение. Ввод формулы начинается с символа “=” (знак равенства). Именно этим знаком отличается ввод формул от ввода текста или простого числового значения.

При вводе формул можно применять обычные числовые и текстовые значения. Напомним, что числовые значения могут содержать только цифры от 0 до 9 и специальные символы: (плюс, минус, косая черта, круглые скобки, точка, запятая, знаки процента и доллара). Текстовые значения могут содержать любые символы. Необходимо отметить, что используемые в формулах текстовые выражения должны заключаться в двойные кавычки, например “константа1”. Кроме того, в формулах можно использовать ссылки на ячейки (в том числе в виде имён) и многочисленные функции, которые соединяются между собой операторами.

Ссылки представляют собой включаемые в формулу адреса ячеек или диапазоны ячеек. Ссылки на ячейки задаются обычным образом, т. е. в виде A1, B1, C1. Например, для того, чтобы получить в ячейке A3 сумму ячеек A1 и A2, в неё достаточно ввести формулу =A1+A2 (рис. 1).

При вводе формулы ссылки на ячейки могут символ за символом непосредственно набираться с клавиатуры на латинице, но чаще намного проще указывать их с помощью мыши. Например, чтобы ввести формулу =A1+B2, нужно выполнить следующие действия:

Выделить ячейку, в которую нужно ввести формулу;

Начать ввод формулы, нажав клавишу “=” (равно);

Щёлкнуть мышью на ячейке A1;

Ввести символ “+”;

Щёлкнуть мышью на ячейке B2;

Закончить ввод формулы, нажав клавишу Enter.

Диапазон ячеек представляет собой некоторую прямоугольную область рабочего листа и однозначно определяется адресами ячеек, расположенными в противоположных углах диапазона. Разделённые символом “:” (двоеточие), эти две координаты составляют адрес диапазона. Например, чтобы получить сумму значений ячеек диапазона C3:D7, используйте формулу =СУММ(C3:D7).

В частном случае, когда диапазон состоит целиком из нескольких столбцов, например от В до D, его адрес записывается в виде В:D. Аналогично если диапазон целиком состоит из строк с 6-й по 15-ю, то он имеет адрес 6:15. Кроме того, при записи формул можно использовать объединение нескольких диапазонов или ячеек, разделяя их символом “;” (точка с запятой), например C3:D7; E5;F3:G7.

Редактирование уже введённой формулы можно сделать несколькими способами:

Двойным щелчком левой кнопки мыши на ячейке, чтобы корректировать формулу непосредственно в этой ячейке;

Выбрать ячейку и нажать клавишу F2 (рис. 2);

Выбрать ячейку, переместив курсор в строку формул, щёлкнуть левой кнопки мыши.

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

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

Напомним, как правильно осуществить режим копирования. Здесь могут быть различные варианты (и проблемы тоже).

Необходимо иметь в виду, что при копировании происходит транспонирование адресов. При копировании формулы из одной ячейки в другую Excel по-разному реагирует на формулы с относительными и абсолютными ссылками. Для относительных Excel по умолчанию производит транспонирование адресов, в зависимости от позиции ячейки, в которую копируется формула.

Например, вам нужно складывать построчно значения столбцов А и В (рис. 8) и поместить результат в столбец С. Если вы копируете формулу =А2+В2 из ячейки С2 в ячейку С3* (и далее вниз по С), то Excel сам преобразует адреса формулы соответственно как =А3+В3 (и т. д.). Но если вам нужно поместить формулу, скажем, из С2 в ячейку D4, то формула уже будет выглядеть как =В4+С4 (вместо нужной =А4+В4), и соответственно результат вычислений будет неправильным! Иными словами, обратите особое внимание на процесс копирования и при необходимости вручную корректируйте формулы. Кстати, само копирование из С2 в С3 делается следующим образом:

1) выбираем ячейку С2, из которой нужно скопировать формулу;

2) нажимаем кнопку “Копировать” на панели инструментов, или клавиши Ctrl+C, или выбираем в меню “Правка ® Копировать”;

3) выбираем ячейку С3, в которую будем копировать формулу;

4) нажимаем кнопку “Вставить” на панели инструментов, или клавиши Ctrl+V, или через меню “Правка ® Вставить” с нажатием Enter.

Рассмотрим режим автозаполнения. Если необходимо перенести (скопировать) формулу в несколько ячеек (например, в С3:С5) вниз по столбцу, то это удобнее и проще сделать так: повторить предыдущую последовательность действий до пункта 3 выбора ячейки С3, далее курсор мыши подвести к начальной ячейке диапазона (С3), нажать левую кнопку мыши и, не отпуская её, протащить ниже до требуемой последней ячейки диапазона. В нашем случае это ячейка С5. Затем отпускаем левую кнопку мыши, переводим курсор на кнопку “Вставить” панели инструментов и нажимаем её, а потом Enter. Excel сам преобразует адреса формул в выделенном нами диапазоне по соответствующим адресам строк.

Иногда возникает необходимость скопировать только числовое значение ячейки (диапазона ячеек). Для этого нужно проделать следующее:

1) выбрать ячейку (диапазон), из которой нужно скопировать данные;

2) нажать кнопку “Копировать” на панели инструментов или выбрать в меню “Правка ® Копировать”;

3) выбрать ячейку (левую верхнюю нового диапазона), в которую будут копироваться данные;

4) выбрать в меню “Правка ® Специальная вставка” и нажать Enter.

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

:: Функции в Excel

Функции в Excel в значительной степени облегчают проведение расчётов и взаимодействие с электронными таблицами. Наиболее часто применяется функция суммирования значений ячеек. Напомним, что она имеет название СУММ, а в качестве аргументов служат диапазоны суммируемых чисел.

В таблице часто требуется вычислить итоговую сумму по столбцу или строке. Для этого Excel предлагает функцию автоматической суммы, выполняемой нажатием кнопки (“Автосумма”) на панели инструментов.

Если мы введём ряд чисел, установим курсор под ними и выполним двойной щелчок мышью по значку автосуммирования, то произойдёт сложение чисел (рис. 3).

В последней версии программы справа от значка автосуммирования имеется кнопка списка, позволяющая произвести вместо суммирования ряд часто используемых операций (рис. 4).

:: Автоматические вычисления

Некоторые вычисления можно производить вообще без ввода формул. Сделаем небольшое лирическое отступление, которое, возможно, окажется полезным для многих пользователей. Как известно, электронная таблица благодаря своему удобному интерфейсу и вычислительным возможностям может вполне заменить расчёты с использованием калькулятора. Однако практика показывает, что значительная часть людей, активно использующих Excel в своей деятельности, держат калькулятор на своём рабочем столе для выполнения промежуточных вычислений.

Действительно, чтобы произвести в Excel операцию суммирования двух или более ячеек для получения временного результата, необходимо выполнить как минимум две лишние операции — найти место в текущей таблице, где будет расположена итоговая сумма, и активизировать операцию автосуммирования. И лишь после этого можно выбрать те ячейки, значения которых необходимо просуммировать.

Именно поэтому начиная с версии Excel 7.0 в электронную таблицу была встроена функция автовычисления. Теперь в электронных таблицах Excel имеется возможность быстрого выполнения некоторых математических операций в автоматическом режиме.

Чтобы увидеть результат промежуточного суммирования, достаточно просто выделить необходимые ячейки. Этот результат отражается и в строке состояния в нижней части экрана. Если сумма там не появилась, подведите курсор к строке состояния на нижней части рамки, щёлкните правой кнопкой мыши и в выпавшем меню у строки Сумма нажмите левую кнопку мыши. Более того, в этом меню на строке состояния вы можете выбрать различные варианты рассчитываемых результатов: сумму, среднее арифметическое значение, количество элементов или минимальное значение в выделенном диапазоне.

Для примера рассчитаем с помощью этой функции сумму значений для диапазона В3:В9. Выделите числа в диапазоне ячеек В3:В9. Обратите внимание, что в строке состояния, расположенной внизу рабочего окна, появилась надпись Сумма=X, где X — число, равное сумме выделенных чисел диапазона (рис. 5).

Как видим, результаты обычного расчёта по формуле в ячейке В10 и автовычисления совпадают.

:: Мастер функций

Помимо функции суммирования Excel позволяет обрабатывать данные с помощью других функций. Любую из них можно ввести непосредственно в строке формул с помощью клавиатуры, однако для упрощения ввода и снижения количества ошибок в Excel имеется “Мастер функций” (рис. 6).

Вызвать окно диалога “Мастера” можно с помощью команды “Вставка ® Функция”, комбинацией клавиш Shift+F3 или кнопкой на стандартной панели инструментов.

Первый диалог “Мастера функций” организован по тематическому принципу. Выбрав категорию, в нижнем окне мы увидим список имён функций, содержащихся в данной группе. Например, функцию СУММ () вы сможете отыскать в группе “Математические”, а в группе “Дата и время” находятся функции ЧИСЛО(), МЕСЯЦ(), ГОД(), СЕГОДНЯ().

Кроме того, для ускорения выбора функций Excel “помнит” имена 10 недавно использованных функций в соответствующей группе. Обратите внимание, что в нижней части окна отображается краткая справка о назначении функции и её аргументах. Если вы нажмёте кнопку “Справка” в нижней части диалогового окна, то Excel откроет соответствующий раздел справочной системы.

Предположим, что необходимо произвести расчёт амортизации имущества. В этом случае следует в зоне поиска функции ввести слово “амортизация”. Программа подберёт все функции по амортизации (рис. 7).

После заполнения соответствующих полей функции будет произведён расчёт амортизации имущества.

Нередко нужно произвести сложение чисел, удовлетворяющих какому-либо условию. В этом случае следует использовать функцию СУММЕСЛИ. Рассмотрим конкретный пример. Допустим необходимо подсчитать сумму комиссионных, если стоимость имущества превышает 75 000 руб. Для этого используем данные таблицы зависимости комиссионных от стоимости имущества (рис. 8).

Наши действия в этом случае таковы. Устанавливаем курсор в ячейку В6, кнопкой запускаем “Мастера функций”, в категории “Математические” выбираем функцию СУММЕСЛИ, задаём параметры, как на рис. 9.

Обратите внимание, что в качестве диапазона для проверки условия мы выбираем интервал ячеек А2:А6 (стоимость имущества), а в качестве диапазона суммирования — В2:В6 (комиссионные), при этом условие имеет вид (>75000). Результат нашего расчёта составит 27 000 руб.

:: Дадим имя ячейке

Для удобства работы в Excel имеется возможность присваивания имён отдельным ячейкам или диапазонам, которые затем можно использовать в формулах наравне с обычными адресами. Чтобы быстро присвоить имя ячейке, выделите её, установите указатель на поле имени в левой части строки формул, нажмите кнопку мыши и введите название.

Присваивая имена, необходимо помнить, что они могут состоять из букв (в том числе русского алфавита), цифр, точек и символов подчёркивания. Первый знак в имени должен быть буквой или знаком подчёркивания. Имена не могут иметь такой же вид, как и ссылки на ячейки, например Z$100 или R1C1. В имени может быть больше одного слова, но пробелы недопустимы. В качестве разделителей слов могут быть использованы знаки подчёркивания и точки, например Налог_на_продажи или Первый.Квартал. Имя может содержать до 255 знаков. При этом прописные и строчные буквы воспринимаются одинаково.

Чтобы вставить имя в формулу, можно воспользоваться командой “Вставка ® Имя ® Вставить”, выбрав нужное имя в списке имён.

Полезно помнить, что имена в Excel используются как абсолютные ссылки, т. е. являются разновидностью абсолютной адресации, что удобно при копировании формул.

Имена в Excel можно определять не только для отдельных ячеек, но и для диапазонов (в том числе несмежных). Для присвоения имени достаточно выделить диапазон, а затем ввести название в поле имени. Кроме того, для задания имён диапазонов, содержащих заголовки, удобно использовать специальную команду “Создать” в меню “Вставка ® Имя”.

Чтобы удалить имя, выберите его в списке и нажмите кнопку “Удалить”.

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

то для подсчёта общей суммы для столбца “Комиссионные” используется формула =СУММ(Комиссионные) (рис. 11).

:: Дополнительные возможности Excel — шаблоны

В состав MS Excel входит набор шаблонов — таблицы Excel, которые предназначены для анализа хозяйственной деятельности предприятия, составления счёта, наряда и даже для учёта личного бюджета. Они могут быть использованы для автоматизации решения часто встречающихся задач. Так, можно создавать документы на основе шаблонов “Авансовый отчёт”, “Счёт”, “Заказ”, которые содержат бланки используемых в хозяйственной деятельности документов. Эти бланки по своему внешнему виду и при печати не отличаются от стандартных, и единственное, что нужно сделать для получения документа, — заполнить его поля.

Для создания документа на основе шаблона выполните команду “Создать” из меню “Файл”, затем выберите необходимый шаблон на вкладке “Решения” (рис. 12).

Шаблоны копируются на диск при обычной установке Excel. Если шаблоны не отображаются в окне диалога “Создание документа”, запустите программу установки Excel и установите шаблоны. Чтобы получить подробные сведения об установке шаблонов, посмотрите раздел “Установка компонентов Microsoft Office” в справке Excel.

Например, для создания ряда финансовых документов выберите шаблон “Финансовые шаблоны” (рис. 13).

Эта группа шаблонов содержит формы следующих документов:

Командировочное удостоверение;
. авансовый отчёт;
. платёжное поручение;
. счёт-фактура;
. накладная;
. доверенность;
. приходный и расходный ордера;
. платёжки за телефон и электроэнергию.

Выберите нужный бланк для заполнения, а затем введите в него все необходимые реквизиты и распечатайте его. При желании документ можно сохранить как обычную Excel-таблицу.

Excel позволяет пользователю самому создавать шаблоны документов, а также редактировать уже имеющиеся.

Однако бланки документов со временем могут измениться, и тогда существующий шаблон станет непригодным. Кроме того, в шаблоны, которые имеются в поставке Excel, было бы неплохо заранее внести такие постоянные сведения, как данные о вашей организации, руководителе. Наконец, может возникнуть необходимость создать собственный шаблон: например, в плановом отделе скорее всего потребуются шаблоны для оформления смет и калькуляций, а в бухгалтерии — бланк счёта с фирменной эмблемой вашей организации.

Для таких случаев в Excel, как и во многих других программах, которые работают с электронными документами, предусмотрена возможность создания и редактирования шаблонов для часто используемых документов. Шаблон Excel — это специальная рабочая книга, которую можно применять как образец при создании других рабочих книг того же типа. В отличие от обычной книги Excel, имеющей расширение *.xls, файл шаблона имеет расширение *.xlt.

При создании документа на основе шаблона программа Excel автоматически создаёт его рабочую копию с расширением *.xls, добавляя в конец имени документа порядковый номер. Шаблон-оригинал при этом остаётся нетронутым и может быть впоследствии использован повторно.

Для автоматического ввода даты можно воспользоваться следующим способом: в ячейку даты введите функцию СЕГОДНЯ, после этого в ней отобразится текущий день месяца, месяц и год соответственно.

Разумеется, все рассмотренные действия над шаблонами вы можете использовать и при работе с обычными книгами Excel.

Создание программного кода для автоматизации определенных процедур открывает практически безграничные возможности по развитию и применению приложений на основе Excel.

Запись макроса

Первое средство автоматизации, с которым сталкивается пользователь – это, так называемая, запись макроса. После включения этой записи Excel автоматически создает программный код с последовательностью производимых пользователем операций.

Оценивая оригинальность решения, практическая польза данной функции, с нашей точки зрения, весьма сомнительна. Дело в том, что повторное использование записанного макроса без внесения изменений за редким исключением невозможно. Неподготовленный пользователь обычно видит просто набор команд, но не получает ожидаемый результат от записанного макроса. К тому же у пользователя складывается ошибочное мнение о простоте написания программ на VBA.

Реальное программирование не имеет с записью макросов ничего общего. Требуется знать как основы языка программирования, так и изучить объектную модель Excel. Кстати, как раз для последнего случая функция «запись макроса» несет определенную пользу в качестве дополнения к справочной системе. В автоматически записанном коде можно быстро найти нужные свойства или методы того или иного объекта Excel.

Макросы Excel 4.0

С этим мало, кто сталкивался на практике, но, в версии Excel 4.0 имелась возможность создавать макрокоманды и выполнять их последовательности. Для этого предназначен специальный тип листа рабочей книги. Макросы Excel 4.0 (XLM) поддерживаются во всех версиях до настоящего времени.

Попробуйте вставить «международный лист макросов» и написать в нем 2 команды (см. картинку). Затем запустить этот макрос через указание ячейки (проще всего запуск макросов вызывается через сочетание клавиш Alt+F8 ):

«Международный лист макросов» необходим для записи команд на английском языке, имеются также аналоги русских команд.

Макросы XLM позволяют выполнять любые команды Excel, реализованные на тот момент, а также формировать и открывать диалоговые окна. С конца 90х годов Microsoft настоятельно рекомендует переписать XLM-макросы в Excel-приложениях на программы VBA. Тем не менее, функциональность старых макросов полностью поддерживается до сих пор.

Visual Basic for Applications 5.0

Первая версия Excel, поддерживающая язык программирования Visual Basic for Applications появилась в 1993м году – Excel 5.0. Первоначально редактор кода представлял собой специальный тип листа рабочей книги.

Поддерживалась полная объектная модель Excel, пользователь мог разделять код на программные модули. Впервые появилась возможность визуального создания и изменения диалоговых форм - коллекция DialogSheets . Для данных форм существуют элементы управления с собственными обработчиками событий, сами формы могут быть открыты только в модальном режиме. С помощью DialogSheets уже можно было создавать достаточно сложные варианты пользовательского интерфейса. В дальнейшем функциональность DialogSheets была заменена на пользовательские формы UserForms . Старые диалоговые формы в версиях, начиная с Excel 2000, поддерживаются только в целях обратной совместимости – на них даже отсутствует описание в справочной системе.

VBA 6

Excel 2000 (порядковый номер версии 9.0) включает в себя новую версию языка Visual Basic for Applications. В нем появилась поддержка пользовательских классов, форм и процедур обработчиков событий. Синтаксис языка VBA унифицирован с основными приложениями Microsoft Office (Excel, Word, Access, PowerPoint). Несколько выделяется, пожалуй, Microsoft Access, который поддерживает собственный редактор форм.

Основные новшества VBA6:

  • Пользовательские классы.
  • Доступ к стандартным обработчикам событий листов и рабочей книги.
  • Возможность обработки событий с использованием ключевого слова WithEvents .
  • Пользовательские формы UserForms с новыми элементами управления.
  • Возможность использования внешних ActiveX-контролов и библиотек кода.
  • Несколько новых полезных функций (например, Join и Split ).

Кроме того, на основе новой версии VBA существовали специальные версии Excel для разработчиков, поддерживающие создание COM DLL. Подробнее см.статью Надстройки .

Использование внешних библиотек

Внешние библиотеки формата COM DLL (ActiveX DLL) подключаются через использование ссылок в проекте VBA (меню Tools\References ). Визуальные элементы управления (.ocx-файлы) подключаются аналогичным способом при выборе пункта меню Tools \ Additional Controls . При использовании ссылок на внешние файлы может потребоваться уделить особое внимание целостности проекта при его распространении на другие компьютеры. Стандартные библиотеки (например, MSCOMCTL.OCX) обычно корректно переподключаются на клиентских компьютерах, автоматически подбирая ссылку на последнюю версию. С нестандартными библиотеками и собственными ActiveX-контролами могут возникнуть проблемы. Для проверки подключения внешних COM DLL теоретически можно использовать коллекцию Application.VBE.ActiveVBProject.References . Но на практике объект VBE лучше не использовать в приложениях, так как доступ к нему может быть ограничен настройками Excel (начиная с версии 2007).

Технология COM позволяет обеспечить доступ к внешним библиотекам и приложениям без использования жестких ссылок. Для этого используется, так называемое, позднее связывание объектов. В качестве интерфейса IUnknown в VBA выступает тип Object ; для создания экземпляра объекта используется стандартная процедура CreateObject , а для получения имеющегося экземпляра – GetObject .

Dim oWord As Object Set oWord = CreateObject("Word.Document") oWord.Application.Visible = True

Для вызова функций и процедур динамических библиотек Windows (Win32 DLL) в любой версии VBA поддерживается конструкция Declare . Например:

Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal sBuf As String, ByRef iSize As Long) As Boolean

После подобного объявления функцию можно вызывать обычным способом как любую функцию VBA.

Кроме стандартных Win API процедур и функций, можно разрабатывать собственные DLL и подключать их в проекты VBA аналогичным способом.

VSTO

Microsoft предоставляет средства автоматизации Excel в других своих продуктах для разработчиков. Так, существует, например, шаблон проекта ActiveX DLL Visual Basic 6.0, адаптированный для Microsoft Office. В настоящее время Microsoft поддерживает направление разработки приложений, основанное на технологии.NET - Visual Studio Tools for Office (VSTO). VSTO представляет из себя набор шаблонов проектов и средств поддержки выполнения Visual Studio .NET, предназначенных для разработки библиотек и надстроек различных приложений Microsoft Office.

Пример исходного кода проекта.NET для Excel можно найти в разделе Прочее .

Автоматизация Excel для внешних приложений

Подобно вызову внешних COM DLL, Excel сам может являться объектом автоматизации для других программ. Например, вы можете вызывать и управлять рабочей книгой с помощью vbs-скриптов. Например, создайте текстовый файл следующего содержания:

Set oExcelApp = CreateObject("Excel.Application") oExcelApp.Visible = True Set oWorkbook = oExcelApp.Workbooks.Add Set oWorksheet = oWorkbook.Worksheets.Add oWorksheet.Cells(1,1)="Hello"

Сохраните этот файл с расширением vbs, а затем откройте. При успешном запуске будет открыт Excel, создана рабочая книга и лист, на котором появится текст «Hello» в верхней левой ячейке. Аналогичным образом можно создавать очень сложные программы, управляющие Excel-файлами. При переносе кода в vbs-скрипт (или другое приложение) первоначально удобнее его создавать и отлаживать код в редакторе VBA самого Excel – в нем имеется полная информация о синтаксисе методов и свойств встроенных объектов. В связи с этим хорошей практикой при программировании на VBA является использование полных путей доступа к объектам: например, вместо ActiveWorkbook прописывать Application.ActiveWorkbook . Такой стиль программирования избавит вас от скрытых ошибок при переносе кода в любые другие приложения.

Безопасность файлов

Microsoft, проявляя заботу о пользователях, всячески пытается предотвратить случайное распространение компьютерных вирусов, написанных на VBA. Основываясь на собственном опыте, можем предположить, что такая «забота» зачастую приносит больше проблем пользователям, чем повышает безопасность их работы. В нашей практике работы с файлами Excel (начиная с 1995го года) нам ни разу не встречались макро-вирусы , написанные специально для приложений Excel. При этом мы не исключаем потенциальную возможность написания таких вирусов (даже можем попытаться что-то подобное создать), только непонятно зачем это кому-нибудь нужно. Использование тех же скриптовых языков гораздо более серьезная угроза для операционной системы. Не говоря уже о том, что Visual Basic – это не самое подходящее средство для написания компьютерных вирусов.

Но плохо даже не то, что Microsoft перестраховывается в поиске потенциальных угроз. Огорчает непоследовательность и постоянное усложнение процедуры управления безопасностью проектов Excel-VBA. Кроме того, явно прослеживается тенденция, направленная на использование цифровой подписи надежных издателей. При этом получение права подписи является платной услугой, а сама технология имеет ошибки в реализации с Excel-файлами (подробнее см.следующий раздел).

Вот как исторически изменялись характеристики безопасности:

  • Excel 4.0-7.0 – нет полной уверенности, но похоже, что не было защиты от макровирусов, макросы запускались без дополнительных предупреждений.
  • Excel 97 (8.0 ) – появился флажок защиты в общих параметрах.
  • Excel 2000 (9.0) – появился специальный диалог в меню Сервис \ Макросы с выбором одного из трех уровней безопасности и списком надежных сертификатов. По умолчанию установлен средний уровень безопасности. То есть при открытии файлов с макросами пользователю самому предлагается решить, насколько это безопасно. Надстройки Excel по умолчанию активизируются без дополнительных предупреждений.
  • Excel 2002 (10.0) – добавился еще один «самый высокий» уровень безопасности, разрешающий запуск макросов, подписанных надежным издателем, и только из надежных источников. По умолчанию установлен средний уровень безопасности.
  • Excel 2003 (11.0) – то же, что в предыдущей версии, но по умолчанию устанавливается высокий уровень безопасности. То есть макросы отключаются без предупреждений.
  • Excel 2007 (12.0) – переписан интерфейс параметров, появился так называемый «Центр управления безопасностью». Уровни безопасности изменились по поведению, хотя их также осталось четыре. По умолчанию при открытии файла с макросами под лентой появляется окошко с возможностью активизировать макросы. Условно говоря, это тот же диалог подключения макросов, но открывается он немодально. Решение с одной стороны кажется привлекательным по интерфейсу, но может привести к несовместимости со старым версиями: например, пользователь может поработать некоторое время без макросов, а затем их подключить. Появилась отдельная опция возможности управления объектом VBE на уровне кода, которая по умолчанию отключена. Также отдельно настраивается безопасность надстроек Excel, которые по умолчанию пока все-таки подключаются без дополнительных вопросов.

Учитывайте эти различия в настройках при разработке и распространении собственных приложений для Excel.

С нашей точки зрения слабым моментом в настройке безопасности является то, что все параметры хранятся в системном реестре Windows в открытом виде, и теоретически не составляет особого труда изменять их при работе других приложений. Зачастую этим занимаются инсталляционные программы для приложений Excel.

Сертификаты VBA

Начиная с Microsoft Office 2000 стала доступна технология Microsoft Authenticode, позволяющая подписывать исполняемый код VBA в макросах и надстройках. Для разработчика решений это означает возможность запуска программ с установленным уровнем безопасности Высокий и Очень высокий .

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

Существует несколько вариантов получения сертификатов:

  • Самоподписанный сертификат
  • Сертификат из локального центра сертификации
  • Коммерческий сертификат

Возможности использования самоподписанного сертификата ограничиваются в основном персональным применением. Для того, чтобы не возникало постоянного предупреждения об ошибке сертификата, необходимо добавить его в список надежных источников.

В случае наличия локального центра сертификации (в рамках организации, например), возможно создание сертификатов, выданных этим центром. При наличии Active Directory возможно распространение корневого сертификата на компьютеры пользователей, которое позволит определять подписанный код как доверенный. Для создания локального центра сертификации можно использовать службы сертификации Windows Server (Certificate Services), либо использовать решения на базе пакета OpenSSL.

При необходимости наиболее широкого распространения решений на базе Microsoft Office, рекомендуется приобрести коммерческий сертификат для подписывания кода (Code Signing). Использование широкоизвестных центров сертификации позволит пользователям быть уверенным, что они получают продукт от вполне определенного поставщика и в неизменённом виде.

Однако, есть несколько моментов в работе с сертификатами, о которых необходимо упомянуть:

  • Сертификат необходимо иметь на компьютерах всех разработчиков, вносящих изменения в проект VBA.
  • Иногда возникают ситуации, когда даже без изменения кода подписанный проект считается измененным. В данном случае работа с макросами невозможна, и единственным выходом из этой ситуации является снятие подписи в настройках проекта.

Шаблоны - вещь удобная и полезная! Они позволяют сэкономить время при составлении «шаблонных» документов, которых в повседневной работе добрая половина.

Возможно, в вашей деятельности нужны документы или таблицы, в которых основная часть неизменна, а некоторые фрагменты могут принимать одно из нескольких заранее известных значений. Хорошие примеры - доверенность, договор на оказание услуг, протокол рентгеновского или ультразвукового исследования. В докомпьютерную эпоху заготавливали типографские бланки, в которых оставалось «нужное подчеркнуть, ненужное зачеркнуть» и совсем немного вписать.

В документах Word такую роль играют поля со списком. Идея: щелкнуть мышью на определенном месте в документе, в ответ раскроется список с несколькими вариантами, выбираете мышью нужный - он появился в этом месте. Создавать подобные элементы логично в шаблонах документов. Допустим, вы занимаетесь ультразвуковой диагностикой и решили запастись шаблонами для заключений по основным исследованиям. Их не так уж много, и в каждом стереотипно используются одни и те же фразы.

Инструменты для работы с полями сосредоточены на вкладке Разработчик . По умолчанию она скрыта. Чтобы вкладка отображалась, щелкните правой кнопкой мыши на ленте и в контекстном меню выберите команду Настройка ленты . Откроется диалоговое окно Параметры Word , в котором в группе Основные вкладки нужно установить флажок напротив элемента Разработчик . Нажмите кнопку OK, и на ленте добавится названная вкладка.

  1. Установите курсор туда, где нужно вставить элемент управления. Перейдите на ленте на вкладку Разработчик и нажмите кнопку Элемент управления «раскрывающийся список». В указанное место будет вставлен этот элемент управления.
  2. На вкладке Разработчик нажмите кнопку Свойства элемента управления. Откроется диалоговое окно .
  3. В диалоговом окне Свойства элемента управления содержимым нажмите кнопку Добавить . Откроется дочернее окно Добавить вариант .
  4. В диалоговом окне Добавить вариант в поле Краткое имя введите тот текст, который вы хотите видеть как первый из вариантов выбора в списке. Нажмите кнопку OK . Значение будет добавлено в список.
  5. Таким же образом внесите в список остальные варианты. В качестве последнего из них введите просто один пробел - дальше поясню, зачем.
  6. Добавив в список все варианты, нажмите в диалоговом окне Свойства элемента управления содержимым кнопку OK. Диалоговое окно закроется. Раскрывающийся список готов!

Как он работает? Когда в документе вы щелкаете кнопкой мыши на таком элементе, раскрывается список. Вы выбираете из него подходящий вариант, и это значение отображается на месте поля. Выбирать готовые варианты на порядок быстрее, чем что-то вписывать или даже стирать. Если вдруг вы обнаружили совсем казуистическую картину, и среди заготовок подходящего описания нет, выберите «пустой» вариант (пробел). Правее поля вписывайте, что хотите - вот для этого и нужен вариант, состоящий из одного пробела.

Элемент управления Поле со списком работает почти так же, но с одним отличием - элементы списка могут редактироваться прямо внутри поля. Какой из двух элементов управления лучше подходит к вашей задаче, смотрите по ситуации.

В электронных таблицах Excel тоже предусмотрено нечто подобное. Только там ячейки с выбором одного из возможных значений проще создавать с помощью проверки данных - необходимые инструменты расположены на вкладке Данные в группе Работа с данными . Используя в шаблоне документа элементы управления, мы создаем простейшую форму. Однако можно пойти дальше. Кроме приведенных в качестве примера полей, в документах и таблицах Microsoft Office предусмотрены и другие элементы управления: кнопки, флажки, переключатели, полосы прокрутки. Мы привыкли видеть их в диалоговых окнах, но такие элементы можно встраивать непосредственно в документ.

Смысл работы с формой в том, что флажки устанавливаются, кнопки нажимаются, что-то, возможно, вписывается в поля ввода, а в результате формируются текст документа или содержимое таблицы. В таких «автоматизированных документах» обработкой действий пользователя занимаются макросы (макрокоманды).

Макрос - короткая простая программа, написанная на языке Visual Basic for Applications (VBA). В приложениях Microsoft Office поддержка этого языка заложена изначально, и есть все необходимые инструменты. Например, для начала макрос можно просто записать, не вникая в его внутреннее устройство. Схематично:

  1. На вкладке Разработчик в группе Код нажмите кнопку Записать макрос . Ваши действия с таблицей или документом начинают отслеживаться.
  2. Сразу же в открывшемся диалоговом окне предлагается дать имя макросу и назначить сочетание клавиш, которое в дальнейшем будет запускать этот макрос на выполнение.
  3. Последовательно выполняйте действия, которые вы хотите включить в макрос. Приложение Office запоминает их в виде последовательности команд, ведь в VBA любой операции с текстом или таблицами соответствует определенный код.
  4. Выполнив все необходимые операции, снова нажмите кнопку Записать макрос .

Макрокоманда будет сохранена в шаблоне или документе. Теперь, если вы нажмете сочетание клавиш, заданное на втором шаге, Excel или Word выполнят эту макрокоманду. Все записанные в ней действия программа повторит автоматически.

При необходимости содержимое макрокоманд можно просмотреть, отредактировать и дополнить в редакторе Visual Basic. Он является обязательной частью пакета Microsoft Office. Обычно только что записанный макрос - линейная последовательность команд. При редактировании в макрокоманды часто вставляют логические функции вида «если… то», «и», «или» и т. д. Выполняя их, макрокоманда проверяет и сравнивает значения разных ячеек, положение элементов управления, и в зависимости от этого строит дальнейшее поведение.

Любой макрос легко связать с элементами управления формы, например, с нажатием кнопки или выбором определенного значения в списке. Например, при создании элемента Кнопка сразу же предлагается назначить ему макрокоманду. Многим нужно бывает вставлять в документы «сумму прописью» или «число прописью». Среди стандартных инструментов Office такая функция отсутствует, однако задача легко решается с помощью макроса. Это одно из любимых упражнений для тех, кто начинает осваивать Visual Basic. В Интернете вы найдете тысячи примеров готовых макрокоманд, а также подробные разборы того, как написать подобный макрос самостоятельно.

Благодаря формам и макросам электронную таблицу удается превратить в довольно «умное» и изящное «мини-приложение». Работать оно будет на любом компьютере, на котором установлена программа Excel. Например, так делаются прайс-листы, которые клиент превращает в заказ, отмечая нужные позиции. Или, допустим, форма для расчета пластиковых окон. Исходные данные (перечень деталей и цены) содержатся на одном из листов книги Excel. На другом листе - форма. Вводим размеры, выбираем число и тип створок, производителя фурнитуры, отмечаем флажками и переключателями нужные опции. В результате на третьем листе отобразится полная спецификация для заказа, уже с ценами. Человек, освоивший работу с VBA, потратит на создание такой формы всего несколько часов.

Средства VBA с самого начала задуманы как «программирование для простых пользователей». Много интересных примеров и приемов работы с Word и Excel приводится на сайтах ladyoffice.ru, www.excel2010.ru, excelexpert.ru и др. И, разумеется, в первую очередь полезно обратиться к справочной системе Microsoft Office и разделам официального сайта Microsoft, посвященным работе с этим пакетом.

Зная о том, на что в принципе способны Word и Excel, вы можете поставить задачу тому, кто разработает «умные» шаблоны легко и с удовольствием. Желающие заняться подобным программированием есть везде. За разработку «малой автоматизации» охотно берутся студенты, любые люди, для которых программирование является хобби. Удачное решение - озадачить знакомых школьников! Им - интересные, притом реальные, темы для рефератов по информатике, а вам - полезные инструменты для работы.

Для автоматизации работы приложений часто используются макросы. Любой макрос — это последовательность действий, записанная под определенным именем. Если при работе с Microsoft Excel возникает необходимость несколько раз выполнить одну и ту же последовательность операций (например, сложное форматирование текущей ячейки или добавление новой строки с заполнением некоторых ее ячеек формулами), то можно записать эти действия, а затем воспроизводить их столько раз, сколько потребуется.

Записанный макрос можно вызывать для выполнения с помощью специального диалогового окна или при помощи комбинации клавиш. Кроме того, макрос можно назначить кнопке на панели быстрого доступа. В общем случае, для того чтобы записать макрос, не нужно быть программистом — достаточно просто знать, как выполнить команды, приводящие к нужному результату.

Вкладка Разработчик , позволяющая записывать макросы, по умолчанию скрыта. Для того чтобы ее показать, необходимо выбрать Office → Параметры Excel → Основные и использовать опцию Показывать вкладку «Разработчик» на ленте . После установки этого флажка на ленте появится вкладка Разработчик .

Запись макросов

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

  1. Детально представить ту последовательность действий, которую нужно выполнять (во избежание возможных ошибок, лишних или неправильных действий).
  2. Выбрать элемент, к которому будут применяться действия, записываемые в макрос (установить курсор в пределах ячейки и пр.).
  3. Вызвать диалоговое окно Запись макроса одним из двух способов:
    • нажать кнопку Запись макроса на панели Код вкладки Разработчик;
    • нажать кнопку Запись макроса в левой части строки состояния Excel.
  4. Ввести в поле Имя макроса название создаваемого макроса. При этом первым символом имени макроса должна быть буква. Остальные символы могут быть как буквами, так и цифрами или знаком подчеркивания. В имени не допускаются пробелы; в качестве разделителей слов рекомендуется использовать знаки подчеркивания.
  5. В выпадающем списке Сохранить в указать, где будет сохранен данный макрос. Возможные варианты:
    • Личная книга макросов — макрос сохраняется в специальный файл, который будет доступен для всех документов сразу после загрузки Excel;
    • Новая книга — будет создана новая книга, и макрос будет сохранен в ней. Этот макрос будет доступен только в том случае, если содержащая его книга будет открыта;
    • Эта книга — макрос будет сохранен в текущей книге. Обычно такие макросы необходимы, когда их использование ограничено мелкой автоматизацией в текущей книге. Тем не менее, макрос будет доступен из других документов, если они будут открыты параллельно.
  6. Если необходимо, чтобы макрос вызывался комбинацией клавиш, ввести букву или цифру в поле Сочетание клавиш .
  7. Если вводится буква, то важен как регистр, так и раскладка. Например, если вводится буква д (малая русская), то комбинация клавиш для этого макроса будет Ctrl+д , но не Ctrl+I (малая английская L, которая находится на той же клавише).

  8. Нажать кнопку OK , затем кнопку Запись макроса на панели Код вкладки Разработчик , которая в строке состояния превратится в кнопку Остановить запись , останавливающую запись макроса.
  9. Выполнить последовательность действий, которые будут записаны в макрос.
  10. Все значимые действия пользователя (щелчки по кнопкам, редактирование данных, перемещение по листу и т.д.) будут записаны. Сделать паузу в записи невозможно.

  11. Завершить запись макроса нажатием кнопки Остановить запись . По окончании записи макроса он появляется в списке макросов иод своим именем.

Выполнение макросов

Для выполнения макроса можно воспользоваться диалоговым окном Макрос . Чтобы отобразить это окно, можно нажать комбинацию клавиш Alt+F8 либо воспользоваться кнопкой Макросы на панели Код . Далее в этом окне необходимо выбрать требуемый макрос и нажать кнопку Выполнить . Второй возможностью выполнить макрос является комбинация клавиш, выбранная на этапе создания макроса. Кроме того, в Excel предусмотрена возможность вызова макроса при помощи кнопки па панели быстрого доступа.

Создание кнопки макроса на панели быстрого доступа

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

  1. Вызвать диалоговое окно Параметры Excel и перейти на вкладку Настройка .
  2. В выпадающем списке Выбрать команды из выбрать пункт Макросы .
  3. Выбрать нужный макрос из списка макросов и нажать кнопку Добавить — он скопируется в правое окно и станет доступен в виде кнопки на панели быстрого доступа.
  4. Чтобы для созданной кнопки изменить рисунок и отображаемое имя, следует воспользоваться командой Изменить .
  5. Нажать кнопку ОК в диалоговом окне Параметры Excel.

В результате кнопка добавится на панель быстрого доступа. Отображаемое имя будет появляться в виде всплывающей подсказки при наведении на кнопку указателя мыши.

Удаление макроса

Для удаления макроса следует нажать кнопку Макросы на панели Код или комбинацию клавиш Alt+F8 — появится диалоговое окно Макрос , содержащее список макросов, доступных в открытых книгах. В данном окне необходимо выбрать удаляемый макрос и нажать кнопку Удалить.

При удалении макроса его кнопка в панели быстрого доступа не удаляется автоматически, поэтому ее нужно удалить вручную на вкладке Настройки диалогового окна Параметры Excel .

Редактирование макроса

Созданный макрос на самом деле представляет собой процедуру, записанную на языке программирования VBA. Ее легко можно увидеть в окне редактора Visual Basic Editor. Подробно о VBA и редакторе Visual Basic Editor рассказано в других наших статьях. Сейчас важно отметить то, что макрос записывается в виде обычного текста, а это значит, что при необходимости его легко можно редактировать.

Для входа в режим редактирования макроса нужно:

  1. В диалоговом окне Макрос выбрать подлежащий редактированию макрос.
  2. Нажать кнопку Изменить — откроется окно Microsoft Visual Basic.

Для примера создадим в текущей книге Excel простейший макрос, который должен применяться к выделенной ячейке и изменять ее форматирование (цвет фона - красный, цвет шрифта — светло-коричневый, Фон 2). Чтобы создать этот макрос, необходимо:

  1. Выделить любую ячейку на листе и ввести в нее какой-нибудь текст (чтобы можно было посмотреть на результат работы).
  2. Включить запись макроса с помощью кнопки Запись макроса в строке состояния.
  3. В диалоговом окне Запись макроса все параметры оставить выбранными по умолчанию и нажать кнопку ОК .
  4. На вкладке Главная (панель Шрифт) выбрать нужные параметры цвета.
  5. Остановить запись макроса при помощи кнопки Остановить запись в строке состояния.

Теперь для того чтобы просмотреть код созданного макроса, необходимо вызвать редактор Visual Basic способом, описанным выше, — откроется окно кода для созданного макроса, в котором будет записан следующий код:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // Макрос форматирования ячейки Макрос1 Sub Макрос1() "Макрос! Макрос With Selection.Interior .Pattern = xlSolid .PatternColorlndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark2 .TintAndShade = 0 End With End Sub

// Макрос форматирования ячейки Макрос1 Sub Макрос1() "Макрос! Макрос With Selection.Interior .Pattern = xlSolid .PatternColorlndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark2 .TintAndShade = 0 End With End Sub

Чтобы при последовательном обращении к нескольким свойствам одного объекта каждый раз не указывать длинную цепочку типа Selection.Interior.Pattern = xlSolid , используется специальная конструкция языка VBA: With…End With — внутри нес имя объекта можно опустить, указывая лишь точку перед именем свойства.

Для тех, кто знает английский язык, назначение и принцип работы команд в данном коде достаточно очевидны: для объекта Selection.Interior (т.е. для внутренней области выделенной ячейки) выполняется задание значений различным параметрам фона. Основные параметры — Pattern (способ заливки, в данном случае задан xlSolid , т.е. сплошным) и Color (Цвет). Аналогичным образом происходит изменение цвета шрифта (начиная со строки With Selection.Font ).

Такой легкий доступ к тексту макроса дает возможность корректировать неверно введенные команды, объединять несколько макросов, написанных разными людьми, изменять когда-то написанные макросы, задавая им новые параметры для работы, чтобы не переписывать их заново.

Цели полностью удалить код макроса в редакторе Visual Basic, то макрос также будет полностью удален (это аналогично действию кнопки Удалить диалогового окна Макрос ).

Для переименования макроса достаточно войти в режим его редактирования и в тексте программы исправить заголовок в строке Sub Макрос1() — новое имя автоматически заменит старое в списках макросов. Заметим, что не все замены происходят автоматически. Если с макросом были связаны графические объекты или кнопки, то необходимо сделать для них переназначения.

Высокий уровень производства и дохода, являющийся результатом применения передовой технологии и крупных масштабов производства, приводит к тому, что на весьма значительную часть населения перестает давить бремя забот, связанных с удовлетворением элементарных физических потребностей. Ни одного голодного человека, если только он трезв, невозможно убедить в том, чтобы он истратил свой последний доллар на что-либо, кроме еды. Но человека, который хорошо питается, хорошо одет, имеет хорошие жилищные условия и хорошо обеспечен во всех остальных отношениях, можно убедить в том, чтобы он решил купить электробритву или электрическую зубную тетку. Не только цены и издержки производства, но и потребительский спрос становится объектом управления. Таков еще один важный дополнительный элемент в системе регулирования экономической среды…

При работе с Excel иногда приходиться налаживать взаимодействие программного кода с другими приложениями офисного пакета или вне него, например с Internet Explorer. Так сказать связывать. Для примера возьмем Word, хотя и IE вставим немного.

Начнем с понятия о позднем и раннем связывании (привязке).


Управлять Word из других приложений позволяет сервер автоматизации Word. Такой же сервер есть и у других офисных приложений (и не только офисных). В данном случае, сервером будет считаться Word, а клиентом Excel. Из него будут посылаться запросы на выполнение некоторого кода, а сервер автоматизации Word будет обрабатывать эти запросы. Это теоретически означает возможность написания программного кода в Excel, который будет выполняться в Word и использовать встроенные функции Word. Для использования такой возможности необходимо указать ссылку на библиотеку, функционал которой собираемся использовать. В данном случае Word. Это можно сделать двумя путями: указать библиотеку явно, до исполнения программного кода и во время исполнения программного кода.


Первый способ называется раннее связывание . В меню Tools-References редактора vba выберите Microsoft Word 12.0 Object Library . В других версиях офисных пакетов, как вы понимаете, .

При раннем связывании новый экземпляр класса Word будет создаваться так:

Dim WApp As Word.Application Set WApp = New Word.Application

Второй способ называется позднее связывание . При этом нет необходимости указывать ссылку на библиотеку. Создается экземпляр класса (объект) и возвращается ссылка на него используя функцию CreateObject .


Синтаксис CreateObject:
CreateObject(класс,[имясервера])

класс - обязательный параметр. Тип данных Variant(String) . Имя приложения и класс, на основе которого создается объект. Имеет синтаксис имяприложения.названиекласса
имясервера - необязательный параметр. Имя компьютера в сети, где объект будет создан. Если параметр не указан (пустая строка), объект будет создан на локальной машине.

Примеры создания объекта при позднем связывании:

Создает новый объект Word.Application

Dim WApp As Object Set WApp = CreateObject("Word.Application")

Создает новый объект Word.Application и делает его видимым.
Dim WApp As Object Set WApp = CreateObject("Word.Application") WApp.Visible = True

Создает объект на удаленной машине. Для этой операции необходимо иметь соответствующие права доступа.
Dim WApp As Object Set WApp = CreateObject("Word.Application", "192.168.1.4")

При наличии нескольких установленных офисных продуктов различных версий в системе, можно указать, на основе какой версии создать объект. Однако если указанной версии на компьютере не окажется, произойдет ошибка.

Dim WApp As Object Set WApp = CreateObject("Word.Application.12")

Замечания: создаваемый объект Word.Application невидимый. Это ускоряет работу с ним, но в случае возникновения ошибки, он остается в памяти. Используйте WApp.Visible = True в обработчике ошибок. Каждый раз при использовании функции CreateObject будет создан новый объект.

Если объект приложения уже создан, то использовать функцию CreateObject не стоит. Вместо нее целесообразно применять функции GetObject, которая просто возвращает ссылку на объект.


Синтаксис GetObject:
GetObject([путь][,класс])

путь - необязательный параметр. Тип данных Variant(String) . Полный путь к файлу, связанному с объектом.
класс - Не обязательный параметр. Тип данных Variant(String) . Строка, указывающая, на какой тип объекта будет сделана ссылка. Если параметр путь не указан, тот параметр обязателен.

Dim WApp As Object Set WApp = GetObject(, "Word.Application") Debug.Print WApp.Documents.Count

Dim WDoc As Object Set WDoc = GetObject(ThisWorkbook.Path & "\Pacienti.txt") Debug.Print WDoc.Sentences.Count

Вот пример с перехватом ошибки отсутствия открытого файла:
Dim WDoc As Object On Error GoTo cvv_Error Set WDoc = GetObject(ThisWorkbook.Path & "\Pacienti.txt") Debug.Print WDoc.Sentences.Count On Error GoTo 0 Exit Sub cvv_Error: If Err.Number = 432 Then MsgBox "Файл " & ThisWorkbook.Path & "\Pacienti.txt" & " не открыт..."

Вот пример позднего связывания с Internet Explorer:
Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True

Ну а для раннего связывания с этим браузером, необходимо дать ссылку на библиотеку Microsoft Internet Controls . Ну а если планируется работать с интернет страницами (разбор структуры и данных), то и Microsoft HTML Object Library .

У позднего связывания только одно преимущество: ссылка на библиотеку не слетит никогда (если приложение зарегистрировано в системе). Используйте этот способ, если не уверены, что у конечного пользователя версия офисного пакета совпадет с вашей. В любом другом случае лучше использовать раннее связывание, и на это две причины:
1. Объектная модель приложения доступна в браузере объектов Excel.
2. Быстродействие не страдает, и работают все функции.

Вместо послесловия:
В этой маленькой статье я рассказал о способах подключения к объектной модели приложения. Как ее использовать – огромная, требующая отдельных статей тема. Конечно, использовать приложения не зная их объектной модели не получится. Используйте автоматизацию с умом, без лишних выдумок. Видел я как-то приложение в Excel, которое, чтобы вставить данные из таблицы Access на лист, создавало экземпляр Access, открывало файл базы данных, затем из этого экземпляра копировало таблицу на лист, затем закрывало экземпляр. Хотя проще и быстрее было использовать доступ к данным при помощи ADO или даже DAO…