Главная страница

Несколько лет назад автору сертифицированному преподавателю Micro soft поступил заказ подготовить курс по программированию в Office


Скачать 5,68 Mb.
НазваниеНесколько лет назад автору сертифицированному преподавателю Micro soft поступил заказ подготовить курс по программированию в Office
АнкорMiheev_VBA_i_programmirovanie_v_MS_Office.pdf
Дата04.10.2019
Размер5,68 Mb.
Формат файлаpdf
Имя файлаMiheev_VBA_i_programmirovanie_v_MS_Office.pdf
ТипЗадача
#13279
страница1 из 32
  1   2   3   4   5   6   7   8   9   ...   32

Предисловие
Несколько лет назад автору — сертифицированному преподавателю Micro- soft — поступил заказ подготовить курс по программированию в Office. Задача была простая существует группа из нескольких десятков человек, достаточно продвинутых пользователей, которые не имеют никакого опыта программирования. Одни пользователи занимались анализом трафика базовых станций в сети (заказчик был оператором сотовой связи российского масштаба, другие — проектами по развертыванию тех же базовых станций, третьи все это планировали и прогнозировали и т. п. И многие пользователи обращались к подразделению с просьбой автоматизировать выполнение определенных задач, например загрузку в Excel информации из базы данных SQL Server, дальнейший анализ (например, выявление тенденций) и представление результатов в стандартном виде автоматическое создание сводных таблиц и графиков в Excel; проход по всем проектам (300—400 единиц) на Project Central (программное средство для корпоративной работы с проектами Microsoft Project) и замена в них каких-то элементов создание стандартных документов Word, в которые бы подставлялись данные из базы данных. И, конечно, список задач этим не ограничивался. На этом предприятии были очень квалифицированные, но постоянно занятые программисты. Конечно, они отзывались на просьбы пользователей, но фактически намного больше времени уходило на постановку задачи, чем на ее решение. А через некоторое время задача вполне могла слегка измениться например, нужно было ввести дополнительную ось на графике вили поменять пару строк в шаблоне Word), и сотрудникам приходилось снова обращаться к разработчикам.
Предисловие В результате мудрое руководство предприятия пришло к выводу, что проще научить пользователей автоматизировать свою работу самостоятельно, и поэтому был заказан этот курс. Подготовка любого учебного курса — дело очень трудоемкое, и поэтому автору которого к тому времени был опыт преподавания более чем
30 официальных курсов Microsoft) постарался подобрать что-нибудь подходящее из официальных курсов Microsoft Official Curriculum (MOC). Однако его ждала неудача убыли предусмотрены только курсы по Access различных версий плюс мини-курсы по очень специфическим вопросам приложения коллективного использования (курс 2381), решения управления знаниями (курс 1904) и т. п. Сами курсы были скорее обзорными и предназначались для того, чтобы познакомить опытных разработчиков с новыми технологиями. Тогда автор обратился к книжным полкам. Был куплен десяток книг, которые имели отношение к теме "Программирование в Office", но ни по одной из них сделать учебный курс было нельзя. Некоторые книги под программированием в Office понимали использование математических и финансовых функций в Excel, другие ограничивались рассмотрением элементарных программных конструкций VBA, в-третьих полкниги отводилось на объяснение основ объ- ектно-ориентированного программирования (при этом в реальной работе на
VBA определять пользовательские классы приходится достаточно редко. И ни одна из книг не давала возможность "увидеть за деревьями лес" — получить целостное представление об объектных моделях Word, Excel, Access,
PowerPoint, Outlook и Project, чтобы дать возможность пользователю самостоятельно находить в них нужные объекты и создавать свои приложения. Автору пришлось подготавливать этот курс самостоятельно. Был собран и прочитан весь возможный материал, скачано из Интернета и проанализировано несколько сотен приложений VBA, законспектирована официальная документация. Вместе с сотрудниками предприятий решались их проблемы, которые возникали на практике. Уже первый вариант курса был признан заказчиком (и его сотрудниками) очень удачным, а постепенно курс совершенствовался. Вместе с пользователями с разных предприятий на него иногда попадали (из любопытства) опытные разработчики, которые сами рассказывали немало интересного. Постепенно собирался новый материал. За счет общения с большим количеством слушателей удалось отобрать те моменты, которые наиболее важны в практической работе. Результат — перед вами. Эта книга отличается от многих других следующим она "отлажена" на десятках слушателей с самых разных предприятий. Каждое замечание учитывалось и отражалось в курсе (а потомив книге,
Предисловие внимание акцентировалось на тех моментах, которые действительно важны для практической работы учесть все многообразие ситуаций, которые возникают на предприятиях, невозможно. Поэтому в данной книге был сделан акцент не на рассмотрение отдельных случаев (как вставить диаграмму в листа на том, как самостоятельно найти решение в подобной ситуации для каждого приложения Office дается общая картина того, как устроена его объектная модель и из каких важнейших объектов она состоит (например, в Word это
Application

Document

Selection
,
Range ив. Знание этих программных объектов на 80% покрывает потребности при создании реальных приложений VBA; поскольку изначально эта книга была учебным курсом, было бы жаль не использовать некоторые преимущества, которые это дает. Для большинства глав предусмотрены задания для самостоятельной работы. Можно попытаться решить их самостоятельно, а можно использовать их просто как дополнительные примеры. После каждого задания приводится подробное решение с комментариями. Несколько слово технических моментах. Все примеры в книге приведены для приложений Microsoft Office 2003 в русскоязычной версии. Практически весь материал применим и к программированию в Office XP. Значительно больше отличий в Office 97 ив, хотя основные моменты остаются неизменными во всех версиях. Несмотря на то, что в книге рассмотрены все встроенные функции текущей версии VBA и все главные объекты приложений текущей версии, сделан акцент на том, чтобы читатель понял, как можно самостоятельно найти необходимую информацию. Поэтому автор надеется, что книга пригодится и для работы с будущими версиями Microsoft
Office, и с программными продуктами других фирм, в которых реализована поддержка языка VBA. Автор совершенно не возражает против использования этой книги в качестве учебного пособия при проведении курсов в других учебных центрах или при организации обучения на предприятиях. Пользуйтесь на здоровье И, если понравится, обращайтесь в нашу Академию за другими курсами. Наш адрес электронной почты — info@askit.ru, адрес сайта — www.askit.ru. Мыс удовольствием проведем для вас курс из числа уже готовых или создадим новый учебный курс (в особенности по нестандартной тематике. И, может быть, из такого заказа возникнет новая книга — подобно тому, как появилась эта.
Course page: http://www.askit.ru/custom/vba_office/vba_office_info.htm
ГЛАВА Основы программирования в Microsoft Office
1.1. Зачем программировать в Microsoft Ответ на этот вопрос прост чтобы не делать лишней работы. Программирование в Office — это, прежде всего, уменьшение количества повторяющихся действий (и ручной работы, которая для этого требуется. Вот примеры некоторых типичных ситуаций, когда использование программирования просто напрашивается вам с определенной периодичностью приходится изготавливать документы, очень похожие друг на друга приказы, распоряжения в бухгалтерию, договоры, отчеты и т. п. Часто информацию можно взять из базы данных, тогда использование программирования может дать очень большой выигрыш во времени. Иногда данные приходится вводить вручную, но и тогда автоматизация дает выигрыш во времени ив снижении количества ошибок разновидность такой же ситуации одни и те же данные нужно использовать несколько раз. Например, вы заключаете договор с заказчиком. Одни и те же данные (наименование, адрес, расчетный счет, номер договора, дата заключения, сумма и т. п) могут потребоваться во многих документах самом договоре, счете, счете-фактуре, акте сдачи выполненных работ и т. д. Логично один раз ввести эту информацию (скорее всего, в базу данных, а затем автоматически формировать (например, в Word) требуемые документы когда нужно сделать так, чтобы вводимые пользователем данные автоматически проверялись. Вероятность ошибки при ручном вводе данных зависит от многих факторов, но, согласно результатам некоторых исследо-
Основы программирования в Microsoft Office
13
ваний, она в среднем составляет около 2%. "Вылавливать" потом такие ошибки в уже введенных данных — очень тяжелый труд, поэтому лучше сразу сделать так, чтобы они не возникали. В общем, любое действие, которое вам приходится повторять несколько раз, — это возможный кандидат на автоматизацию. Например, занесение сотен контактов вили замена ресурса в десятках проектов Project, или анализ информации из базы данных заразные периоды в таблице Excel — это те ситуации, когда знание объектных моделей приложений Office спасет вас от нескольких часов или даже дней скучного труда. Конечно, есть еще практиканты и аналогичный бесплатный трудовой ресурс, но хочется ли вам потом заниматься еще и поиском ошибок за ними Кроме того, программирование несет и другие преимущества для сотрудника, который использует его в работе повышается авторитет сотрудника в глазах руководства и других коллег если программы этого сотрудника активно используются на предприятии им самим или другими работниками, то этим самым он защищает себя от сокращений, снижения зарплаты и т. п, ведь поддерживать и изменять программы в случае необходимости будет некому.
1.2. Что такое язык Поскольку эта книга предназначена для обычных пользователей, то без объяснения этого вопроса не обойтись. Формальное определение такое.
VBA (Visual Basic for Applications) — это диалект языка Visual Basic, расширяющий его возможности и предназначенный для работы с приложениями
Microsoft Office и другими приложениями от Microsoft и третьих фирм. В принципе, при программировании в Office можно вполне обойтись и без языка VBA. Подойдет любой совместимый язык, например обычный
Visual Basic, VBScript, Java, JScript, C++, Delphi и т. п. Можно использовать и совместимые языки программирования VB.NET, C# и т. п. Вам будут доступны все возможности объектных моделей приложений Office. Например, если сохранить следующий код в файле с расширением vbs и запустить его на выполнение, то будет запущен Word, в котором откроется новый документ и будет впечатан текст
Dim oWord
Set oWord = CreateObject("Word.Application") oWord.Visible = true oWord.Documents.Add oWord.Selection.TypeText (Привет от VBScript")
Глава 1
14 Тем не менее, VBA — это обычно самый удобный язык для работы с приложениями. Главная причина проста — язык VBA встроен в приложения
Office, и код на языке VBA можно хранить внутри документов приложений
Office: в документах Word, книгах Excel, презентациях PowerPoint и т. п. Конечно же, этот код можно запускать из документов на выполнение, поскольку среда выполнения кода VBA (на программистском сленге — хост) встроена внутрь этих приложений. В настоящее время VBA встроен вовсе главные приложения Microsoft Office — Word, Excel, Access,
PowerPoint, Outlook, FrontPage, InfoPath; в другие приложения Microsoft, такие как Visio ив более 100 приложений третьих фирм, например, в CorelDRAW и
CorelWordPerfect Office 2000, AutoCAD и т. п. Но есть также и множество других преимуществ.
VBA — универсальный язык. Освоив его, вы не только получите ключ ко всем возможностям приложений Office и других, перечисленных ранее, но и будете готовы к тому, чтобы
• создавать полноценные приложения на Visual Basic (поскольку эти языки — близкие родственники
• использовать все возможности языка VBScript (это вообще урезанный. В результате в вашем распоряжении будут универсальные средства для создания скриптов администрирования Windows, Web- страниц (VBScript в Internet Explorer), приложений ASP, для применения в пакетах DTS и заданиях на SQL Server, а также для создания серверных скриптов Exchange Server и многое-многое другое.
VBA изначально был ориентированна пользователей, а не на профессиональных программистов (хотя профессионалы пользуются им очень активно, поэтому создавать программы на нем можно быстро и легко. Кроме того, в Office встроены мощные средства, облегчающие работу пользователя подсказки по объектами по синтаксису, макрорекордер и т. п. При создании приложений на VBA вам, скорее всего, не придется заботиться об установке и настройке специальной среды программирования и наличии нужных библиотек на компьютере пользователя — Microsoft
Office есть практически на любом компьютере. Несмотря на то, что часто приложения VBA выполняются медленнее, чем бы вам хотелось, они нересурсоемки и очень хорошо работают, например, на сервере терминалов. Но, как правило, для программ на VBA особых требований на производительность и не ставят для написания игр, драй
Основы программирования в Microsoft Office
15
веров, серверных продуктов он не используется. По моему опыту, возникающие проблемы с производительностью приложений — это чаще всего не проблемы VBA, а проблемы баз данных, к которым они обращаются. Если проблемы действительно в VBA (обычно тогда, когда вам требуется сложная математика, то всегда есть возможность написать важный код на C++ и обращаться к нему как к обычной библиотеке DLL или встраиваемому приложению (Add-In) для Word, Excel, Access и т. п. Программы на VBA по умолчанию не компилируются, поэтому вносить в них исправления очень удобно. Ненужно разыскивать исходные коды и перекомпилировать программы. В среде программистов-профессионалов считается, что быстрее всего научиться создавать профессиональные приложения можно именно при помощи и объектов приложений Office. Другие языки программирования
(C++, Java, Delphi) придется осваивать намного дольше, а их возможности во многом избыточны для большинства повседневных задач, которые встречаются на любом предприятии. Кроме того, использование возможностей объектов (графического интерфейса, средств работы с текстом, математических функций и т. п) позволит резко снизить трудоемкость при создании приложений.
1.3. Макрорекордер: быстрое создание макросов
В большинство программ Microsoft Office (исключая Access и FrontPage) встроено замечательное средство, которое позволит вам создавать программы, вообще ничего не зная о программировании. Это средство называется макрорекордером.
Макрорекордер, как понятно из его названия, — это средство для записи макросов. Макрос — всего лишь еще одно название для программы, а мак- рорекордер — средство для его автоматического создания. Приложения Microsoft Office 2003 по умолчанию настроены так, что не позволяют запускать макросы. Поэтому перед тем, как приступать к созданию макросов, вменю Сервис |
Макрос |
Безопасность переставьте переключатель Уровень безопасности в положение Средняя или Низкая, а потом закройте и снова откройте данное приложение. Это потребуется сделать только один разв начале работы. Принцип работы макрорекордера больше всего похож на принцип работы магнитофона мы нажимаем на кнопку — начинается запись тех действий,
Глава 1
16 которые мы выполняем. Мы нажимаем на вторую кнопку — запись останавливается, и мы можем ее проиграть (те. повторно выполнить туже последовательность действий. Конечно, макрорекордер позволяет написать только самые простые VBA- программы. Однако ион может принести много пользы. Например, можно "положить" на горячие клавиши те слова, словосочетания, варианты оформления и т. п, которые вам часто приходится вводить (должность, название фирмы, продукт, ФИО директора и ответственного исполнителя и т. д, этим вы сэкономите много времени. Как показывает опыт, подавляющее большинство обычных пользователей и не подозревает о существовании макрорекордера, несмотря на то, что его применение позволило бы сэкономить им массу времени. Перед созданием макроса в макрорекордере: необходимо очень тщательно спланировать макрос, хорошо продумав, что выбудете делать ив какой последовательности. Если есть возможность, определите подготовительные действия. Например, если нужно вставить текущую дату в начало документа, может быть, имеет смысл первой командой макроса сделать переход на начало документа (+
  1   2   3   4   5   6   7   8   9   ...   32


написать администратору сайта