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

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: VBA для чайников - Стив Каммингс на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

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

Представьте, например, что вы работаете в Microsoft Word. Скажем, требуется, чтобы макрос вставлял текущую дату в начало каждого документа. Можно, конечно, предположить, что текстовый курсор при этом уже находится в самом начале документа. Но не следует быть столь самоуверенным. Даже если курсор находится в нужном месте, когда вы начинаете записывать макрос, все равно первой записываемой командой должна быть команда перемещения курсора в начало документа. Только тогда макрос будет работать правильно, независимо от того, где окажется текстовый курсор.

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

К счастью, записывать макросы так же просто, как ложиться в постель. Тем более, что я собираюсь разложить здесь вам все по полочкам.

Запуск средства записи макросов

Запустить средство записи макросов можно одним из следующих способов.

* Выбрать из меню Сервис=Макрос=Начать запись. В последних версиях Office меню Макрос может не появляться до тех пор, пока вы не щелкнете на кнопке с направленной вниз стрелкой внизу в меню Сервис.

* В панели инструментов щелкнуть на кнопке Начать запись макроса, если у вашего t; приложения таковая есть. Например, в Microsoft Office кнопка Начать запись макроса расположена в панели инструментов Visual Basic.

В результате любого из этих действий появится диалоговое окно Запись макроса.

На рис. 2.1 показано диалоговое окно Запись макроса из Microsoft Excel (это окно в разных приложениях выглядит по-разному).

Как выбрать имя для малютки

Стараясь быть полезным, диалоговое окно Запись макроса предложит самое оригинальное из подходящих имен для вашего нового макроса- Макрос1 (или Макрос2, или МакросЗ). Вежливо поблагодарив, быстренько удалите предлагаемое имя и впечатайте вместо него нечто более вам подходящее.

Рис. 2.1. Диалоговое окно Запись макроса в Excel

Имена макросов должны, конечно, ассоциироваться с выполняемыми ими задачами.

Однако при этом следует придерживаться определенных правил. Ну-ка, повторяйте все хором за мной.

* Имя макроса должно начинаться с буквы, а не с цифры. А вот после первой буквы уже могут идти и цифры.

* Имя макроса не должно содержать пробелов. Для выделения начала слов в имени макроса следует использовать прописные буквы, например, как здесь:

ОчисткаВсегоЖесткогоДиска

* Знаки пунктуации тоже не допускаются. Здесь есть исключения, но вполне разумно в именах макросов знаки пунктуации не использовать вообще. Если в именах присутствуют знаки пунктуации. VBA выводит сообщение Invalid procedure name (Недопустимое имя процедуры).

Детальное обсуждение правил выбора имен в VBA приводится в главе 6.

Другие опции диалогового окна Запись макроса

В зависимости от приложения, диалоговое окно Запись макроса может содержать различные опции. Вот несколько примеров.

* Возможно, там будет место для ввода более подробного описания макроса.

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

* Возможно, вам предложат приписать макрос кнопке в панели инструментов либо назначить ему комбинацию клавиш. Если ваше приложение предусматривает такую опцию, используйте ее без сомнений! Подробности вы найдете в следующем разделе.

Кнопка, кнопка, ты чья?

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

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

Если приложение позволяет такой трюк, вы увидите в диалоговом окне Запись макроса соответствующее поле. Так, в Excel в диалоговом окне Запись макроса есть поле Сочетание клавиш, где вы можете указать комбинацию клавиш (например, CtrI+M), которая должна будет запускать макрос (см. рис. 2.1). В Word диалоговое окно Запись макроса содержит кнопки, которые позволят вам либо приписать макрос кнопке в панели инструментов, либо назначить ему комбинацию клавиш (рис. 2.2). Щелкнув на одной из этих кнопок, вы тем самым откроете новое диалоговое окно, в котором и должны будете сделать соответствующие назначения.

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

Рис. 2.2. Диалоговое окно Запись макроса в Word

Начало записи

Командой для начала записи макроса будет щелчок на кнопке ОК в диалоговом окне Запись макроса. О том, что запись началась, вы узнаете по появившейся с этого момента панели инструментов Остановить запись (рис. 2.3). Изменится также и указатель мыши, превратившись в небольшое изображение магнитофонной компакт-кассеты.

Рис. 2.3. Панель инструментов Остановить запись

Запись команд

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

Ах, да! Все допущенные во время записи ошибки тоже будут добросовестно записаны и помещены в макрос. Чтобы их исправить, вы можете либо записать макрос вновь, либо отредактировать программный код макроса в редакторе Visual Basic (читайте ниже раздел Редактирование программного кода макроса в редакторе Visual Basic).

Паузы во время записи и ее завершение

Чтобы остановить запись после выполнения всех команд, которые вы хотели записать, щелкните на кнопке Остановить запись в панели инструментов с тем же названием (см. рис. 2.3). Запись прекратится, а все записанные команды будут сохранены в виде VBA-программы. (Если вы мне не верите, взгляните на полученный в результате программный код, - подробности ниже, в разделе 'Редактирование программного кода макроса в редакторе Visual Basic.)

Находясь в Word, вы можете сделать паузу в процессе записи макроса. Если вам необходимо выполнить команду, которая не должна быть частью макроса, щелкните на кнопке

Пауза (тоже находится в панели инструментов Остановить запись). Процесс записи впадет в летаргический сон, с этого момента игнорируя все используемые вами команды.

Во время паузы в записи кнопка Пауза будет выглядеть нажатой (рис. 2.4). Официально теперь это будет кнопка Возобновить запись. Щелкните на этой кнопке, когда снова будете готовы продолжить запись временно покинутого вами макроса.

Рис. 2.4. Использование панели инструментов Остановить запись в Word

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

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

Ввиду того, что макросы являются VBA-программами, все приемы, которые используются при запуске созданных вручную VBA-программ, применимы и для автоматически записанных макросов. Всегда можно сначала открыть диалоговое окно Макрос (Alt+F8), выбрать в нем нужный макрос, а затем щелкнуть на кнопке Выполнить (в PowerPoint это кнопка Запуск; рис. 2,5). Подробно о технике выполнения VBA-программ говорится в главе 4.

Рис. 2.5. Диалоговое окно Макрос (во многих VBA-приложениях оно называется именно так)

Автоматически записанный макрос не проявляет никакого интеллекта - макрос не может изменять свое поведение в зависимости от изменившихся условий. Будучи запущенным для выполнения, он пытается выполнить записанные команды, даже если в сложившейся ситуации в приложении эти команды вообще неприменимы. Например, если макрос предполагает, что вы находитесь в начале документа, а вы вызвали его, находясь в конце документа, вполне вероятно, что он не сделает ничего вообще. Если вызвать макрос, созданный для манипуляций с текстом, в то время, когда вы редактируете созданный вами рисунок, то такой макрос может свести на нет все ваши многочасовые сверхчеловеческие усилия по созданию шедевра, просто уничтожив последний. Мой вам совет: независимо от сложности макроса, сохраните документ перед тем, как выполнять этот макрос, и будьте всегда готовы воспользоваться командой Отменить (Ctrl+Z).

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

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

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

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

Редактирование программного кода макроса в редакторе Visual Basic

После того как макрос записан, полученную VBA-программу вы можете отредактировать (или, по крайней мере, просто взглянуть на строки ее программного кода). Вот как это сделать.

1. Выберите Сервис=Макрос=Макросы или нажмите Alt+F8, чтобы открыть диалоговое окно Макрос (см. рис. 2.5).

2. Выберите нужный вам макрос из списка ниже поля Имя.

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

3. Щелкните на кнопке Изменить.

Перед вами немедленно возникнет окно редактора Visual Basic с помещенным в него программным кодом выбранного макроса, готовым для редактирования. Пример показан на рис. 2.6.

Простейшие усовершенствования макросов

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

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

Рис.2.6. Запись макроса завершена, и перед вами - его программный код, созданный генератором средства записи макросов

Организуйте повторение команд в макросе. Возможно, вам известно наперед, что придется выполнить целую последовательность команд (или какую-то одну команду) ровно 11 раз. В этом случае все, что вам нужно, - это добавить в свой программный код цикл For. . .Next. Вы спрашиваете, что такое цикл For . . . Next? Это один из элементов языка программирования VBA, обсуждать которые я собираюсь в главе 8.

Организуйте повторение команд в макросе с выяснением количества необходимых повторений непосредственно во время работы макроса. Если вы достаточно амбициозны, добавьте в свой макрос сразу и цикл For. . .Next, и функцию InputBox. Последняя выводит на экран диалоговое окно, предлагающее ответить на некоторый вопрос, в данном случае - о количестве повторений. Использование InputBox обсуждается в главе 11.

Добавьте при вызове возможность выбора текста для использования макросом.

Макрос, который всегда вставляет в документ один и тот же текст, не слишком гибок.

Добавив в записанный макрос функцию InputBox, вы сможете сообщать при каждом запуске макроса, какой текст нужно вставить. Снова напомню, что подробности об использовании InputBox вы найдете в главе 11.

Добавьте возможность выбора перед запуском макроса. Довольно часто для правильной работы макроса требуется выбрать текстовый, графический или какой-то другой объект. Структура If. . . End If языка VBA позволяет проверить, выбран ли объект подходящего типа, чтобы иметь возможность отменить работу макроса в случае невыполнения каких-либо условий. Все тонкости использования оператора If... End If обсуждаются в главе 8.

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

Глава 3. Основы программирования на VBA.

В этой главе ...

~ Запуск редактора Visual Basic

~ Использование справочной системы VBA

~ Программирование в VBA - краткое и нестрогое руководство

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

Вызов редактора Visual Basic

Редактор Visual Basic служит командным центром для работы в VBA. В нем вы должны находиться при разработке VBA-форм, создании VBA-кода, тестировании и отладке VBA программ. Экспертом по использованию редактора Visual Basic вы станете после прочтения главы 5, а пока вам нужно только знать, как вытянуть этот редактор на экран.

Если вы делали кое-что из того, о чем так много говорилось в предыдущей главе при обсуждении программного кода, создаваемого средством записи макросов, вы должны уже знать один из способов вызова редактора Visual Basic- выбор макроса в диалоговом окне

Макрос с последующим щелчком на кнопке Изменить. Но, конечно же, можно запустить редактор Visual Basic и непосредственно. В большинстве VBA-приложений можно воспользоваться одним из следующих методов.

* Выбрать из меню Сервис=Макрос=Редактор Visual Basic.

* Нажать Alt+Fll. Вы услышите, как затараторит жесткий диск, и через несколько мгновений на экране появится редактор Visual Basic. Он должен хотя бы отдаленно напоминать то, что изображено на рис. 3.1.

В некоторых приложениях вам понадобится проделать другой маршрут, чтобы добраться до редактора Visual Basic. Однако вы в любом случае найдете необходимую команду где-нибудь в меню Tools (Сервис).

Вызов редактора Visual Basic одним щелчком

Если в вашем приложении есть кнопка в панели инструментов для вызова редактора Visual Basic. используйте се. В VBА-приложениях из пакета Microsoft Office (Word. Excel и PowerPoint) эта кнопка помещена в панель инструментов Visual Basic (рис. 3.2). Наборы кнопок в этой панели инструментов у разных приложений могут немного отличаться.

Рис. 3.1. Редактор Visual Basic

Рис, 3.2. Вид панели инструментов Visual Basic в приложении Word

Кнопки в этой панели инструментов, как правило, соответствуют пунктам подменю Макрос из меню Сервис. Вот для чего предназначены некоторые из этих кнопок (слева направо, см. рис. 3.2).

* Первые две кнопки предназначены соответственно для выполнения и записи макросов.

* Кнопка справа от кнопки Безопасность вызывает редактор Visual Basic. Если вы часто используете редактор Visual Basic, а другие кнопки в этой панели инструментов вам не нужны, скопируйте кнопку вызова редактора в другую панель. Чтобы скопировать кнопку в любом из приложений Office, перетащите ее на новое место, удерживая при этом нажатой клавишу Alt.

* Кнопка с изображенными на ней молотком и гаечным ключом открывает панель элементов управления, очень похожую на панель элементов управления VBA. В Office вы можете поместить элементы управления VBA в сам документ, а не только в VBA-форму.

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



Поделиться книгой:

На главную
Назад