Реферат по предмету "Информатика, программирование"


Организация документооборота с помощью "Visual Basic for Application"

СОДЕРЖАНИЕ
 
АНОТАЦИЯ
ВВЕДЕНИЕ
1. ТЕОРЕТИЧЕСКИЙ  РАЗДЕЛ.
1.1Обоснование языка программирования
1.2 Введение в Visual Basic for Application
1.2.1 Об объектах и коллекциях
1.2.2 Примеры использования VBA  в среде Access.
1.3. Разработка и эксплуатация АИС
1.3.1 Основные понятия  технологии проектирования ИС
1.3.2 Основы современной технологии проектирования АИС
1.3.3 Автоматизированное проектированиеCASE-технологий
1.3.4 Реинжиниринг бизнес-процессов и проектированиекорпоративной ИС..
2.  ЭКСПЕРИМЕНТАЛЬНЫЙ  РАЗДЕЛ
2.1 Постановка задачи
2.1.1 Входные данные
2.1.2 Выходные данные
2.1.3 Схема и описание алгоритма решения задачи
2.1.3.1 Блок-схема интерфейса
2.1.3.2 Описание блок-схемы интерфейса
2.2 Описание процесса отладки программы
2.3.Характеристика программы
2.4. Контрольный пример
2.5 Инструкция пользователя
Заключение
Приложение 1
Приложение 2
Список литературы

Введение
Вторая половина ХХв.Ознаменовалась  крупным технологическим рывком научно-технологическогопроцесса. Появление в этот период электронно-вычислительных машин (ЭВМ) открылоновые возможности  обработки информации.
В 50-е годы на ЭВМ восновном решались отдельные научно-инженерные и экономические задачи, связанныес необходимостью переработки больших информационных массивов. Потребитель и егоинтересы в использовании ЭВМ, хотя и не отрицались, однако не были приоритетына этом этапе.
В 60-е годы возникаетидея комплексной автоматизации управления предприятия и интеграцииинформационного обеспечения на основе баз данных (БД). Реальностью автоматизированные системы управления (АСУ) стали в 70-е годы на базе ЭВМ 3-гопоколения, которые позволяли создавать вычислительные системы с распределеннойтерминальной сетью. Создание на базе ЭВМ и  средств связи АСУ:
 - Технологическими процессами(АСУТП)
-          предприятиями(АСУП)
-          отраслями (ОАСУ)
-          Общегосударственнымуровнем управления (ОГАСУ) вывело разработчиков и потребителей на новый, болеевысокий уровень понимания возможностей использования вычислительной техники  всоциально-экономическом развитии общества.
80-е годы отмеченышироким использованием персональных компьютеров управленческими работниками,созданием большого набора автоматизированных мест (АРМ) на базе языков 4-гопоколения, позволяющих с помощью генераторов запросов, отчетов, экранных форм,диалога, быстро разрабатывать удобные для пользователей приложения. Однакорассредоточение информационных систем (ИС) в виде АРМов, локальнаяавтоматизация, не способствовали интеграции управленческих функций, аследовательно, существенному повышению эффективности управления предприятием.
Для 90-х годов характерноразвитие телекоммуникационных средств, которое привело к созданию гибкихлокальных  и глобальных вычислительных сетей, что позволило разрабатывать ивнедрять корпоративные ИС (КИС). КИС объединяют возможности систем комплексныеавтоматизации управления 70-х годов и локальной автоматизации управления 80-хгодов. Наличие гибких средств связи управленческих работников, возможностьколлективной работы как непосредственных  исполнителей хозяйственнойдеятельности, так и менеджеров, принимающих управленческие решения, позволяютво многом пересмотреть принципы управления предприятиями или проводитькардинальный реинжиниринг бизнес процессов.
В свою очередь,оперативность коммуникации и интеграции участников бизнес процессовпредопределяют разработку и  использование эффективных технологийпроектирования, обеспечивающих ускорение создания, внедрения и развитияпроектов ИС, улучшение их функциональной и адаптивной надежности и, в конечномсчете повышение качества принимаемых решений на всех уровнях управления. Всвязи с этим в первой части теоретического раздела данной работырассматриваются некоторые вопросы построения и проектированияавтоматизированных ИС (АИС).
Альтернативным подходом кканоническому проектированию в настоящее время является реинжиниринг бизнеспроцессов, который базируется на сходстве информационных процессов (ИТ-архитектур) и общих бизнес архитектур и заключается в интеграции ИТ и бизнеспроцессов. Поэтому здесь также коротко рассматривается автоматизацияпроектирования АИС (CASE –технология), которая является одним из подходов к данной интеграции.
Важным аспектом рассмотрения разработки АИС является описание структуры и функцииобеспечивающих подсистем, соответствующая таким компонентам как технические,программные и информационные средства, интегрированные человеческим фактором.Информационное обеспечение АИС является средством для решения следующих задач:
-          однозначного иэкономичного представления информации (на основе кодирования объектов);
-          организациипроцедур анализа и обработки информации с учетом характера связи междуобъектами (на основе классификации объектов) ;
-          организациявзаимодействия пользователей с системой на основе экранных форм для вводапервичных данных в ЭВМ или вывода результатной информации, структурыинформационной базы: входных- выходных  файлов, базы данных;
-          и другие.
Программное обеспечениеАИС может включать известные операционные системы MS DOS, Windows  и другие, системы программирования типа Паскаль,Си, Бейсик и т. п. В связи с этим во второй части теоретического разделарассмотрены основы программирования на языке Visual Basic for Application (VBA) в среде MS Office Excel. Работа заканчиваетсяпрограммированием разработанных макетов экранных форм и их апробацией.

1ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ
1.1.1Обоснование выбора языка программирования
Лучшей средыпрограммирования для создания информационного обеспечения в контуре любой АИСнашего бизнес – проекта можно считать MS Office. Одним изнаиболее важных и полезных аспектов использования MS Office  является автоматизация некоторых процессоввзаимодействия использователя и приложений Office(Excel,Access,Word), которые позволяют решать, практически, всесовременные бизнес – задачи: от создания простых документов и отчетов дополной автоматизации докуиментооборота  с использованием систем управления БД.Это связано с тем, что все приложения Office поддерживают язык программирования Basic for application (VBA). Важнейшим достоинством является возможность объединитьлюбые приложения MS Office для выполнения одной или несколькихзадач.
В последнее время всеболее и более возрастает значимость разработки приложений на базе электронныхтаблиц Excel – продукта с высокой степеньюпрограммируемости из-за поддержки VBA.Таким образом, для разработчиков АИС важными являются следущиевозможности использования VB всреде MS Excel:
1)       Файловаяструктура. Ориентация на многолистовую структуру позволяет легко организовыватьэлементы приложения и хранить его в единственном файле;
2)       VBA – это макроязык, позволяет создаватьструктурированные программы непосредственно в Excel.
3)       Excel позволяет довольно легко вставить врабочий лист различные элементы управления, например, кнопки, поля со списком,переключатели. Можно также легко создавать диалоговые окна, имеющиепрофессиональный внешний вид.
4)       Для упрoщения формул и вычислений можно спомощью VBA создавать пользовательские функциирабочих  листов.
5)       Имеетсявозможность вносить изменения в элементы меню, добавлять в имеющиеся меню новыеэлементы или создавать полностью новые меню.
Всвязи с этим в теоретическом разделе наряду с вопросами разработки АИС,рассматриваются также вопросы связанные с использованием VBA и  MS Excel.
1.2ВведениевVisual Basic For Application
Программирование в Excel, в основном, сводится к управлению объектами. Эта задача выполняется с помощьюинструкций, введенных на языке, понятном Excel. Рассмотрим далее этот язык, атакже объекты, включенные в Excel .
Историяязыка BASIC
Многие опытныепрограммисты не воспринимают идею программирования наВА81Свсерьез. Самоназвание (аббревиатура от Beginner's ЛП-purpose Symbolic Instruction Code—универсальный символический язык инструкций для начинающих) предполагает, чтоэто не профессиональный язык.
 Действительно, BASIC былразработан в начале 1960-х годов и задумывался как наглядное средствопреподавания методов программирования студентам колледжей. BASIC довольнобыстро приобрел большую популярность, и сейчас поддерживается во многих типахкомпьютеров.
С годами BASIC развивалсяи улучшался. Например, во многих ранних версиях он был интерпретируемым языком.Каждая строка перед выполнением интерпретировалась, чем и была обусловленамедленная скорость обработки кода. В большинстве современных вариантов языкаBASIC программа компилируется, и в результате выполнение программы значительноускорилось, а перемещаемость программы улучшилась.
BASIC стал намногопопулярнее в 1991 году, когда компания Microsoft выпустила Visual Basic дляWindows (на данный момент существующий в версии 6.0). Этот продукт облегчилмассовую разработку самостоятельных приложений для Windows. У Visual Basic малообщего с ранними версиями BASIC, но последний представляет собой основу, накоторой построен VBA. Обзор VBA Excel 5 — это первое приложение на рынке, вкотором появился Visual Basic for Applications (VBA). VBA считается стандартнымязыком написания сценариев для приложений Microsoft, и в настоящее время входитв состав всех приложений Office 2002 и даже прило­жений других компаний.Следовательно, овладев VBA для Excel, вы сможете сразу перейти к созданиюмакросов для других программных продуктов Microsoft (равно, как и приложенийдругих компаний). Более того, вы сможете создавать полноценные программныепродукты, одновременно использующие функции самых разных приложений.
Объектныемодели
Секрет использования VBAзаключается в правильном понимании объектной модели В каждом отдельномприложении. Следует отметить. VBA всего лишь управляет объекта­ми, а у каждогопрограммного продукта (Excel. Word. Access. PowerPoint и т.п.) своя объект­наямодель. Приложением можно управлять программным образом только с помощьюобъек­тов,которые представлены в этом приложении.
Например, в объектноймодели Excel представлено несколько мощных объектов анали­за данных, например,рабочие листы, диаграммы, сводные таблицы, сценарии, а также многочисленныематематические, финансовые, инженерные и общие функции. С помощью VBA вы можетеработать с этими объектами и разрабатывать автоматизированные проце­дуры.
СравнениеVBA и XLM
До появления Excel 5разработчиками использовался мощный (но сложный для понима­ния) язык макросовпод названием XLM. Более поздние версии Excel все еще выполняют макросы XLM,но, начиная с Excel 97, пользователи не имеют возможности записывать мак­росына языке XI.M. Для современных разработок используется исключительно VBA.
Основы VBA
Действия в VBAосуществляются в результате выполнения кода VBA. • Вы создаете (илизаписываете) программу VBA. которая сохраняется в модуле VBA.
•        Модуль VBAсостоит из процедур.
Процедура, по существу,представляет собой элемент компьютерной программы, выпол­няющей определенноедействие. Ниже приведен пример простой процедуры под назва­нием Test: онавычисляет сумму, а затем отображает результат в окне сообщений:
Sub Test()
 Sum =1 + 1
MsgBox «Ответ:   „  & Sum
 End Sub
•        Кроме процедурSub. в модуле VBA может использоваться второй тип процедур — функции.
Процедура функциивозвращает одно значение (или массив). Функция может быть вы­звана из другойпроцедуры VBA или использоваться в формуле рабочего листа. Далее приведенпример функции с названием AddTwo:
 Function AddTwo(argl, arg2)
AddTwo = argl + arg2
 End Function
•        VBA управляетобъектами, которые представлены запускающим приложением (в.дан­ном случаеExcel).
Excel позволяет управлятьболее, чем ста классами объектов, включая рабочую книгу, рабо­чий лист,диапазон ячеек рабочего листа, диаграмму и нарисованный прямоугольник. В ва­шемраспоряжении находятся и другие объекты, с которыми можно работать в VBA.
•Классы объектоворганизованы в иерархическую структуру.
Объекты могут бытьконтейнерами для других объектов. Например, Excel — это объ­ект под названиемApplication, он содержит другие объекты, например. Workbook (Рабочая книга).Объект Workbook может состоять из других объектов, например. Worksheet (Рабочийлист) и С h а г t (Диаграмма). Объект Worksheet также содер­жит объекты,например. Range (Диапазон), Р i v о t Т a b 1 е (Сводная таблица) и т.д.Организацию таких объектов называют объектной моделью Excel.
Одинаковые объектыформируют коллекцию. Например, коллекция Worksheets состоит из всех рабочихлистов конкретной рабочей книги, а коллекция CommandBars — из всех объектовCommandBar. Коллекции — это объекты в себе.
При ссылке на объект,вложенный в другой объект, положение в иерархической струк­туре объектноймодели задается с помощью точки-разделителя. Например, на рабочую книгу сназванием Книга 1.xls в можносослаться следующим образом:
Application.Workbooks(“Книга1.xls»)Это ссыпка на рабочую книгу Книга1.xls в коллекции Workbooks. КоллекцияWorkbooks находится в объекте Application. Переходя на следующий уровень, выможете сослаться на лист Лист1 в книге Книга 1 .xls:
Application.Workbooks(«Книга1 .xls»). Worksheets («Лист1») Перейдите на один уровень ниже, послечего необходимо сослаться на отдельную ячейку:
Application.Workbooks(«Книга1.xls»).Worksheets(«Лист1»).Range(«A»)
При опущенной ссылке наобъект Excel по умолчанию используются активные объекты. Если книга Лист1 —активная рабочая книга, то предыдущую ссылку можно упростить:
Worksheets(«Лист1»).Range(«Al»)Если вы знаете, что лист Лист 1 — активный, то ссылку можно упростить ещебольше:
Range(«Al»)
 
Объектыимеют свойства.
Свойство можно считатьпараметром или настройкой объекта. Например, объект диапазона имеет такиесвойства, как Value (Значение) и Name (Имя), Объект диа­граммы обладает такимисвойствами, как Н a s Т i 11 е (Заголовок) и Туре (Тип). Вы вправе использоватьVBA, чтобы задать свойства объектов и их изменить.
Свойства в программномкоде отделяются от названия объекта точкой. Например, вы можете сослаться назначение в ячейке А1 листа Лист1 следующим образом: Worksheets( " Лист1"). Range( " Al" ). Value
Рабочая книга Excelявляется объектом, но она также содержит другие объекты, например, рабочиелисты, диаграммы, модули VBA и т.д. Более того, каждый объект в рабочей книгеможет содержать собственные объекты. Например, объект worksheet (Рабочий лист)включает объекты Range (Диапазон), pivottrable (Сводная таблица), Shape (Форма)и т.д.
Помимо свойств, объектыExcel также располагают методами, выполняющими операции над объектом. Например,метод clearContents, удаляет содержимоеобъекта Range.
В Excel методы иногдаиспользуются для изменения свойств объекта. Метод ciearContents
объекта Range изменяетсвойство Value объекта Range.
В VBA существуетвозможность писать процедуры для управления объектами Excel.
Вы вправе присваиватьзначения переменным VBA. Переменную можно считать кон­стантой, котораяиспользуется для хранения конкретного значения. Чтобы присвоить значение ячейкиА1 листа Лист1 переменной с названием Interest, используйте следующий операторVBA:
Interest =Worksheets(«Лист1»).Range(«Al»).Value
У объектов есть методы.Метод — это действие, которое выполняется над объектом. Например, один изметодов объекта Range — ClearContents.Этот метод удаляет содержимое диапазона ячеек.
Методы вводятся посленазвания объекта с методом, в роли разделителя выступа­ет точка.
Например, для удалениясодержимого ячейки А1 активного рабочего листа использу­ется следующая команда:
R a n g е (" А1" ). ClearContents
VBA также включаетконструкции современных языков программирования (в том числе массивы, циклы ит.д.).
Знакомствос редактором Visual Basic
Для работы и просмотрамодулей VBA используется редактор Visual Basic (VBE— Visual Basic Editor).
Модули VBA все ещесохраняются вместе с файлами рабочей книги; просто они не видны до тех пор.пока не запущен редактор VBE.
VBE— это отдельноеприложение, запускающееся в Excel. Программа сама выполняет всю операцию позапуску VBE. когда это необходимо. VBE не может запускаться отдельно от Excel;для запуска VBE используется только Excel.
Запуск VBE
Во время работы в Excelвы можете перейти к окну VBE с помощью одного из следующих способов.
 1) нажать .
 2)Выбрать команду Сервис– Макрос — Редактор Visual Basic.
 3) Щелкнуть на кнопкеРедактор Visual Basic, расположенной на панели инструментов Visual Basic.
Окна VBE
VBE состоит из рядаэлементов. В следующий разделах кратко описаны ключевые компо­ненты редактораVisual Basic.
Строкаменю
Строка меню VBE.естественно, работает, как и строка меню любого другого приложения.
Она содержит команды,используемые для управления различными компонентами VBA. Кроме того, для выполнения многих команд меню используютсякомбинации клавиш. На­пример, для команды ViewAImmediate Window (Вид — Окноотладки) применяется комби­нация клавиш .
В VBE также представленыконтекстные меню. Щелкнув правой кнопкой мыши практически на любых элементахокна VBE, вы увидите меню, предлагающие ряд команд.
Панелиинструментов
Стандартная панельинструментов Standard, которая по умолчанию находится под стро­кой меню, — этоодна из шести панелей инструментов, используемых в VBE (строка меню тожесчитается панелью инструментов). Панели инструментов VBE работают, как и вExcel: вы можете задавать специальные настройки для панелей инструментов,перемещать их. ото­бражать другие панели инструментов и т.д. Для управленияпанелями инструментов VBE ис­пользуется команда VicwAToolbarsACustomic(Вид-Панели инструментов-Настройка).
ОкноProject Explorer
В окне Project Explorerотображается диаграмма-дерево, состоящая из всех открытых в данный момент вExcel рабочих книг (включая дополнительные элементы и скрытые рабочие книги).Каждая рабочая книга известна как проект.
Если в редакторе VisualBasic окно Project Explorer не отображено, нажмите . Чтобы скрытьего, щелкните на кнопке закрытия строки заголовка (или щелкните правой кнопкоймыши в любом месте окна и выберите Hide из контекстного меню).
Окно кода
Окно кода (которое иногданазывают Module) содержит код VBA. Для каждого элемента проекта представленособственное окно кода. Чтобы просмотреть код объекта, дважды щелкните мышью наэтом объекте в окне Project Explorer. Например, чтобы просмотреть код объектаЛист1. дважды щелкните на элементе Лист1 в окне Project Explorer. Если вы несоздавали для него VBA-кода. это открывшееся окно будет пустым. Существует ещеодин способ просмотреть код объекта — выделите этот объект в окне ProjectExplorer, а затем щелкните на кнопке View Code (Просмотр кода) на панели инстру­ментоввверху окна Project Explorer.
ОкноImmediate
Окно Immediateпредназначено для непосредственного выполнения операторов VBA. тестированияоператоров и отладки кода. Это окно может отображаться и скрываться. Если окноImmediate в данный момент не отображается на экране, нажмите .Чтобы за­крыть окно Immediate, щелкните на кнопке закрытия в его строкезаголовка (или щелкните правой кнопкой мыши в любом месте окна и выберите Hideиз контекстного меню).
Работа с ProjectExplorer
При работе в редактореVisual Basic каждая рабочая книга Excel и открытые в данный момент надстройкирассматриваю гея как проекты. Проект можно считать коллекцией объектов,организо­ванных в виде иерархической структуры. Вы раскроете проект, еслищелкнете на знаке «плюс» слева от названия проекта в окне ProjectExplorer. Проект сворачивается при щелчке на знаке «минус» слева отназвания проекта. Кроме того, для разворачивания и сворачивания проекта можноиспользовать кнопку ToggleFoldcrs (Показать папки) на панели инструментов окнаProject Explorer. При попытке развернуть проект, защищенный паролем,отображается окно ввода пароля.
Дерево каждого проекта вразвернутом виде имеет как минимум один узел под названием Microsoft ExcelObjects. В этом узле содержатся элементы каждого рабочего листа и лист диаграммрабочей книги (рабочий лист считается объектом), а также объект под названиемЭтаКнига, представляющий объект Active Workbook. Если в проекте используютсямодули VBA, то в дереве отображается также узел Modules, в котором перечисленымодули. Проект может также содержать узел Forms, содержащий объекты UserForm(пользовательские фор­мы, известные как пользовательские диалоговые окна). Еслив проекте находятся модули классов, то в дереве отображается узел под названиемClass Modules.
В Excel 2002 придобавлении ссылки на проект (с помощью команды ToolsAReferences) в деревепроекта появляется еще один узел: References. Каждая ссылка является отдельнымобъектом. Объекты, перечисленные в этом узле, не имеют окна кода.
Добавлениенового модуля VBA
Чтобы добавить в проектновый модуль VBA, выделите название проекта в окне Project Explorer и выберитекоманду lnsert — Module (Вставка — Модуль). Также можно щелкнуть правой кнопкоймыши на названии проекта и выбрать команду Insert — Module в контекстном меню.При записи макроса Excel автоматически вставляет модуль VBA для хранениязаписанного кода.

Удаление модуля VBA
Чтобы удалить из проектамодуль VBA или модуль класса, выделите название модуля в окне Project Explorerи используйте команду File — Remove ххх (где ххх— название моду­ля). Крометого, вы можете щелкнуть правой кнопкой мыши на названии модуля и выбратькоманду Remove ххх из контекстного меню.
Экспорт иимпорт объектов
За исключением объектов,перечисленных в узле References, каждый объект в проекте можно сохранить вотдельном файле. Сохранение отдельного объекта в проекте называется экспортом.Соответственно, вы можете также импортировать объекты в проект. Экспорт иимпорт объектов полезен, если уже существующий объект (например, модуль VBA илифор­му UserForm) можно использовать в другом проекте.
Чтобы экспортироватьобъект, выберите его в окне Project Explorer и выполните команду File — ExportFile (или нажмите ). При этом отображается диалоговое окно, запра­шивающееимя файла. Обратите внимание, что сам объект остается в проекте (а экспортиру­етсятолько его копия). Если вы экспортируете объект UserForm, экспортируется такжевесь код, связанный с формой UserForm.
Чтобы импортировать файлв проект, выберите имя проекта в окне Project Explorer и вы­полните командуFile — Import File. Появится диалоговое окно,в котором необходимо указать имя файла. Вы можете импортировать только те файлы,которые экспортированы с помощью команды File—Export File.
Если вы решилископировать в другой проект модуль или объект UserForm, не обязательноиспользовать функции экспорта и импорта. Убедитесь, что оба проек­та открыты,затем активизируйте окно Project Explorer и перетащите необходимый объект изодного проекта в другой.

Работа сокнами кода
Каждому объекту в проектесоответствует свое окно кода. Такими объектами могут быть:
• сама рабочая книга(ЭтаКнига в окне Project Explorer);
• рабочий лист или листдиаграмм рабочей книги (например. Лист1 или Диаграмме 1 в окне Project);
• модуль VBA;
• модуль класса(специальный тип модуля, позволяющий создавать новые классы объектов);
• форма UserForm.
Сохранениепрограммы VBA
Как правило, окно кодасодержит четыре типа кода.
• Процедуры (процедуры Sub). Процедура — это набор инструкций, выполняющих оп­ределенноедействие.
• Процедуры функции. Функция — это набор инструкций, возвращающий значениеили массив значений (концепция функции VB А подобна такой же функции Excel).
• Процедуры свойств. Специальные процедуры, используемые в модулях классов.
Объяснение — это информация о переменной, предоставляемая VBA. Например, мож­но объявить тип данныхдля переменных, которые вы планируете использовать в коде.
В отдельном модуле VBAможет храниться любое количество процедур, функций и объ­явлений. Способорганизации модуля VBA зависит только от вашего желания.              Некоторые предпочитают записывать весь код VBA приложения в одном модуле VBA;другие разделяют код на несколько разных модулей.
Несмотря на то, чтопредоставляются широкие возможности по определению места хранения кода VBA,существуют некоторые ограничения на его расположе­ние. Процедуры обработкисобытий должны содержаться в окне кода объекта, ко­торому соответствует этособытие. Например, если вы пишете процедуру, которая выполняется при открытиирабочей книги, то эта процедура должна располагать­ся в окне кода для объектаЭтаКнига и иметь специальное название.
 
Введениекода VBA
Для того чтобы выполнитьодно из действий программным образом, необходимо напи­сать программу VBA в окнекода. Код VBA располагается в процедуре. Процедура состоит из операторов VBA.На данном этапе (для примера) остановимся только на одном типе окна ко­да:модуль VBA.
Вы можете добавить код вмодуль VBA тремя способами.
• Ввести код традиционнымспособом: с клавиатуры.
• Использовать функциюзаписи макросов в Excel, чтобы записать действия и преобра­зовать их в код VBA.
• Скопировать текстпрограммы из другого модуля и вставить его в модуль, над кото­рым работаете.
Ввод кодавручную
Иногда самый простой путьявляется наилучшим. Непосредственное введение кода связа­но с использованиемклавиатуры, т.е. вы вводите код программы с помощью клавиатуры. Клавиша при этом используется с цельюзадать отступ в строках, которые логически принадлежат одной группе (например,условные операторы If и End If)- Это совершенно не обязательно, но помогаетбыстрее освоить программу, анализируя ее блочную структуру. Именно поэтомуподобный подход в программировании называется '«хорошим стилем».
Ввод и редактированиекода в модуле VBA выполняется обычным образом. Вы можете выделять текст,копировать, вырезать его, а затем вставлять в другое место программы.
Отдельная инструкция вVBA может иметь произвольную длину. Однако, чтобы обеспе­чивать удобочитаемостькода, длинные инструкции лучше разбить на две или более строк. Для этогоследует в конце строки ввести пробел и символ подчеркивания, а затем нажать и продолжить инструкцию в следующей строке. Например, нижеприведен один опе­ратор VBA, разбитый на четыре строки.
MsgBox «Невозможнонайти» & UCase(SHORTCUTMENUFILE) _
 & vbCrLf &vbCrLf & «Файл должен находиться в _
 » &ThisWorkbook.Path & vbCrLf & vbCrLf & _
«Возможно, требуетсяпереустановить BudgetMan», v b С г i t i с a 1, APPNAME
Обратите внимание, чтотри последние строки этого оператора введены с отступом. Это необязательноеусловие, однако таким образом вы указываете что на самом деле эти четыре строкиявляются одним оператором.
Как и в Excel, в VBE естьнесколько уровней отмены выполненных операций. По­этому, если вы по ошибкеудалили инструкцию, можете несколько раз щелкнуть на кнопке Undo (Отменить) илинажать , и инструкция вновь появится в коде. После отменыоперации можно щелкнуть на кнопке Redo (Вернуть), чтобы вернуть изменения,которые ранее отменены. Эта функция поможет исправить критически важные ошибки,поэтому не пренебрегайте ее использованием.
Использованиефункции записи макросов
Одним из способовсоздания кода модуля VBA является запись последовательности дей­ствий с помощьюспециальной функции записи макросов Excel.
В следующем примерепоказано, как записать макрос, изменяющий ориентацию страницы на альбомную.Если вы хотите получить его самостоятельно, то начните работу с пустой ра­бочейкниги и выполните следующие действия.
1.      Активизируйтерабочий лист в книге (подойдет любой лист).
2.      Выберите командуСервис – Макрос — Начать запись.
При этом Excel отображает диалоговое окно Запись макроса.
3.      Щелкните накнопке ОК. чтобы принять параметры по умолчанию.
Excel автоматическивставляет новый модуль VBA в проект. Начиная с этого момента Excel,преобразовывает ваши действия в код VBA. При записи в строке состоянияотображается слово Запись, кроме того, в окно добавляется небольшая плавающаяпанель инструментов, содержащая две кнопки (Остановить запись и Относительнаяссылка).
4.      Выполните командуФайл — Параметры страницы.
Excel отображает диалоговое окно Параметры страницы.
Выберите переключательАльбомная и щелкните на кнопке ОК, чтобы закрыть диа­логовое окно.
Щелкните на кнопкеОстановить запись на панели инструментов (или выберите Сервис—Макрос —  Остановитьзапись).
Excel прекращаетзаписывать ваши действия.
Чтобы просмотреть макрос,запустите VBE (проще всего нажать ) и найдите проект в окнеProject Explorer. Щелкните на узле Modules, чтобы развернуть его. Затемщелкните на элементе Module 1. чтобы отобразить окно кода (если в проекте ужеприсутство­вал модуль Module1, новый макрос будет находиться в модуле Module2).Код, созданный одной командой, представлен в листинге 1. Если вы используете неExcel 2002, а иную вер­сию, текст программы может немного отличаться.
Листинг 1. Макрос изменения ориентациистраницы на альбомную
Sub Макрос1()
 ‘ Макрос1Макрос
1 Макрос записан19.08.2003
 With ActiveSheet.PageSetup
.PrintTitleRows= ""
.PrintTitleColumns= ""
End With
ActiveSheet.PageSetup.PrintArea= "" With ActiveSheet.PageSetup .LeftHeader = "".CenterHeader = "" .RightHeader = «n .LeftFooter = „“.CenterFooter = » .RightFooter = ""
.LeftMargin =Application JInchesToPoints (0. 787401575) .RightMargin =Application.InchesToPoints(0.787401575) .TopMargin = Application.InchesToPoints(0.984251969).ButtonMargin = Application.InchesToPoints(0.984251969) .  HeaderMargin =Application.  InchesToPoints   (0.5) .FooterMargin = Applicatior.InchesToPoints(0.5) .PrintHeadings = False .PrintGridlines = False .PrintComments =xlPrintNoComments •PrintQuality = 1200 •CenterHorizontally = False.Center-Vertically = False .Orientation — xlLandscape .Draft = False .PaperSize• xlPaperA4. FirstPageNumber — xlAutoma tic .Order = xlDownThenOver.BlackAndWhite = False
Zoom = 100
.PrintErrors =xlPrintErrorsDisplayed
End With
End Sub
Возможно, вас удивитколичество кода, генерированного всего лишь одной командой (особенно если вызаписываете макрос впервые). Несмотря на то, что вы изменили только однупростую настройку в диалоговом окне Параметры страницы. Excel генерирует код.задающий все параметры в этом диалоговом окне.
Таким образом, зачастуюпрограмма, полученная при записи макроса, избыточна. Если вы хотите, чтобымакрос всего лишь изменял ориентацию страницы на альбомную, то можнозначительно упростить макрос, удалив ненужный код. Это облегчит восприятиемакроса и ускорит его выполнение, поскольку избавит его от лишних операций.Упростить макрос вы вправе до следующего вида:
Sub Makrocl
WithActiveSheet.PageSetup
.Orientation =xl Landscape
 End With End Sub
Мы удалили весь код,кроме строки, изменяющей свойство Orientation. На самом деле данный макросможно упростить еще больше, так как конструкция With-End не обязательна приизменении только одного свойства.
Sub Makrocl
ActiveSheet.PageSetup.Orientation= xlLandscape
End Sub
В данном примере макросизменяет свойство Orienation объекта PageSetup активного листа. Отметим, чтоxlLandscape — это встроенная константа, которая имеет значение 2. Поэтомуследующий макрос работает как и предыдущий Makrocl:
Sub Makroc 1
ActiveSheet.PageSetup.Orientation= 2
End Sub
Подобная процедура вводитсянепосредственно в модуль VBA. но для этого необходимо знать какие объекты,свойства и методы требуется использовать. Очевидно быстрее записать макрос.Кроме того, данный пример продемонстрировал наличие у объекта PageSetupсвойство Orientation.
1.2.1 Обобъектах и коллекциях
 
Работаяс кодом VBA в Excel, необходимо четко понимать назначение объектов иобъектной модели Excel. Целесообразнее рассматривать объекты сточки зрения иерархической структуры.
 
Иерархияобъектов
На вершине объектноймодели находятся объект Application— в данном случае  Excel. Но если вы программируете в VBA, запуская VBE в Microsoft Word, то объектомApplication будет выступать Word.
Объект Application(то есть Excel) содержит другие объекты. Ниже приведено несколько примеровобъектов, которые находятся в объекте Application:
Workbooks(коллекция всех объектов Workbook — рабочих книг);
Windows(коллекция всех объектов window — окон);
Addlns (коллекция всех объектов Addln —надстроек).
Некоторые объекты могутсодержать другие объекты. Например, коллекция Workbooks состоит из всехоткрытых объектов Workbook, а объект Workbook включает другие объекты,некоторые из которых представлены ниже:
Worksheets (коллекция объектов Worksheet —рабочих листов);
Charts(коллекция объектов Chart — диаграмм);
Names(коллекция объектов Name — имен).
Каждый из этих объектов,в свою очередь, может содержать другие объекты. Коллекция
Worksheets состоит извсех объектов Worksheet рабочей книги Workbook. Объект
Worksheet включает другиеобъекты, среди которых следующие:
ChartObjects (коллекция объектов ChartQbject —элементов диаграмм);
Range— диапазон;
PageSetup— параметры страницы;
PivotTables (коллекция объектов PivotTable —сводных таблиц).

Околлекциях
Одной из ключевыхконцепций в программировании на языке VBA являются коллекции.
Коллекция— это группа объектов одного класса (и сама коллекциятоже является объектом).
Как указывалось выше.Workbooks — это коллекция всех открытых в данный момент объектов Workbook.Worksheets — коллекция всех объектов Worksheet, которые содержится в конкретномобъекте Workbook. Вы можете одновременно управлять целой коллекцией объектовили отдельным объектом этой коллекции. Чтобы сослаться на один объект изколлекции, введите название или номер объекта в скобках после названияколлекции:
Worksheets(«Лист1»)
Если лист Лист1 — этопервый рабочий лист в коллекции, то можно использовать следующую ссылку.
Worksheets(1)
На второй лист в рабочейкниге Workbook ссылаются как на Worksheets(2) и т.д.
Кроме того, существуетколлекция с названиемSheets,состоящая из всех листоврабочей книги, рабочих листов и листов диаграмм. Если Лист1 — первый лист вкниге, то на него можно сослаться так:
Sheets(1)
 
Ссылки наобъекты
Если вы ссылаетесь наобъект в VBA, для обращения к нему вводятся названия всех расположенных выше виерархической структуре объектов, разделенных точкой. Что делать, если в Excelоткрыты две рабочих книги, и в обеих имеется рабочий лист с названием Лист1? Вэтом случае в ссылке упоминается контейнер требуемого объекта:
Workbooks(«Книга1»).Worksheets(«Лист1»)
Без указания рабочейкниги редактор Visual Basic искал бы лист Л и с т1 в активной рабочейкниге, чтобы сослаться на определенный диапазон (например, ячейку А1) на рабочемлисте с названием Лист1 в рабочей книге Книга1, можно использовать следующеевыражение:
Workbooks("Книга1").Worksheets(«Лист1»).Range(«Al»)
Полная ссылка изпредыдущего примера включает объект A p p l i c a t i o n и выглядит такимобразом:
Application. Workbooks (" К н и г а1 " ). Worksheets ( " Л и с т1 " ). R a n g e( " A l " )
Однако в большинствеслучаев можно опускать объект A p p l i c a t i o n  в ссылках {кроме негоиспользоваться больше нечему). Если объект Книга1 — это активная рабочая книга,то опустите ссылку на нее и запишите рассматриваемое выражение следующимобразом:
Worksheets(«Лист1»).Range(«Al»)
Если Лист1 являетсяактивным рабочим листом, можно еще более упростить выражение:
Range(«A1»)
В  Excel отсутствуетобъект отдельной ячейки. Отдельная ячейка представляет собой объект Range,состоящий из одного элемента.
Простые ссылки на объекты(как в приведенных примерах) ничего не выполняют. Чтобы выполнить действие,прочтите или измените свойства объекта или задайте метод, который выполняетсяпо отношению к объекту.
Свойства иметоды
Запутаться в свойствах иметодах несложно: их существует несколько тысяч. В этом разделе показано, какосуществляется доступ к свойствам и методам объектов.

Свойства объектов
Всеобъекты обладают свойствами.Например, объект Range обладает свойством с названием Value. Вы можете создатьоператор VBA, чтобы отобразить свойство Value или задать свойству Valueопределенное значение. Ниже приведена процедура, использующая
функцию VBA MsgBox дляотображения окна, в котором представлено значение ячейки Al листа Лист1активной рабочей книги.
Sub ShowValueO
MsgBoxWorksheets(«Лист1»).Range(«Al»).Value
End Sub
Код предыдущего примераотображает текущее значение свойства Value для конкретной ячейки — А1 рабочеголиста Лист1 активной рабочей книги. Обратите внимание, что если вактивной книге отсутствует лист с названием Лист1, то макрос выдастошибку.
Что необходимо сделать,чтобы изменить свойство Value? Ниже приведена процедура по изменению значенияячейки А1 путем определения значения свойства Value.
Sub ChangeValue()
Worksheets(«Лист1).Range(»Al").Value = 123
End Sub
После выполнения этойпроцедуры ячейка А1 листа Лист1 получает значение 123. Вы можете ввестиописанные процедуры в модуль и протестировать их.
Многие объекты имеютсвойство по умолчанию. Для объекта Range свойством по умолчанию является Value.Следовательно, выражение value в приведенном выше коде можно опустить, и ничегоне изменится. Однако лучше включать ссылку на свойство, даже если оноиспользуется по умолчанию.
Методыобъектов
Кроме свойств, объектыхарактеризуются методами. Метод — это действие, которое выполняется надобъектом. Ниже приведен простой пример использования метода Clear поотношению к диапазону ячеек. После выполнения этой процедуры ячейки А1: СЗлиста
Лист1 станут пустыми, и дополнительноеформатирование ячеек будет удалено.
Sub ZapRange()
W o r k s h ee t s ( " Л и с т 1 " ). R a n g e(" A l: C 3 " ). C l e a r
End Sub
Если необходимо удалитьзначения в диапазоне, но оставить форматирование, используйте метод C l e a r Co n t e n t s объекта Range.
Многие  методы  получают  аргументы,   определяющие  выполняемые   над  объектом действия более детально.Далее приводится пример, в котором ячейка А1 копируется в ячейку В1 с помощьюметода Сору объекта Range. В данном примере метод Соруполучаетодин аргумент (адрес ячейки, в которую следует скопировать данные). Обратитевнимание что в примере используется символ продолжения строки (пробел иподчеркивание). Вы можете не применять этого символа, а ввестиоператор в одну строку.
Sub CopyOne()
Worksheets(«Лист1»).Range(«Al»).Copy _
Worksheets(«Лист1»).Range(«Bl»)
End Sub

Определениеаргументов методов и свойств
В среде программистов VBAопределение аргументов методов и свойств часто вызывает определенные трудности.Некоторые методы используют аргументы для дальнейшего уточнения действия;отдельные свойства используют аргументы для дальнейшего определения значениясвойства. Иногда один или несколько аргументов вообще применять не обязательно.
Если метод используетаргументы, они указываются после названия метода и разделяются запятыми. Еслиметод использует необязательные аргументы, то можете пропустить их, оставивпустые места. Рассмотрим метод Protect объекта рабочей книги. В справочнойсистеме дается информация о том, что метод Protect имеет три аргумента: пароль,структура, окна.
Эти аргументысоответствуют параметрам в диалоговом окне Защита книги.
К примеру, если требуетсязащитить рабочую книгу под названием MyBook.xls, используйте такой оператор:
Workbooks(«MyBook.xls»).Protect«xyzzy», True, False
В данном случае рабочаякнига защищена паролем (аргумент 1). Также защищена структура  рабочей книги{аргумент 2), но не ее окна (аргумент 3).
Если вы не хотитеприсваивать пароль, можно применить такой оператор:
Workbooks(«MyBook.xls»).Protect, True, False
Обратите внимание, чтопервый аргумент пропущен, а его место обозначено с помощью запятой.
Существует и другойподход (причем в этом случае программу удобнее будет читать) —  использованиеименованных аргументов. Применим именованные аргументы для предыдущего примера.
Workbooks(«MyBook.xls»).ProtectStructure:=True, Windows:=False
Использование именованныхаргументов — хорошая идея, особенно в методах с большим количествомнеобязательных аргументов, когда следует использовать только некоторые из них.При использовании именованных аргументов не требуется оставлять место дляпропущенных аргументов.
Для свойств, использующихаргументы, аргументы указываются в скобках. Например, свойство Address объектаRange имеет пять аргументов— все необязательные. Показанный ниже операторнекорректен, так как пропущены скобки:
MsgBoxRange(«Al»).Address False ' некорректно
Правильный синтаксисдляэтого оператора выглядит так:
MsgBoxRange(«Al»).Address(False)
Кроме того, операторможет записываться с использованием именованного аргумента
MsgBoxRange(«Al»).Address(rowAbsolute:=False).
ОбъектComment: пример использования
Чтобы лучше разобратьсясо свойствами и методами объекта, сосредоточимся на изучении конкретногообъекта— Comment. Объект Comment создается с помощью команды ExcelВставка^Примечание и предназначается для вставки комментария в ячейки.
Справочные сведения пообъекту Comment можно найти в информации о конкретном объекте в электроннойсправочной системе.
 
Использованиеэлектронной справочной системы
Самый простой способполучить справку о конкретном объекте, свойстве или методе — ввести ключевоеслово в окне кода и нажать . Если это ключевое слово трактуетсянеоднозначно, появляется диалоговое окно выбора темы.
К сожалению, элементы,перечисленные в этом диалоговом окне, не всегда понятны, поэтому, чтобы найтинужный раздел, часто приходится обращаться к методу проб и ошибок.
Для случая введенияComment и нажатия Comment является объектом, однако он может такжевести себя как свойство. При щелчке на первой теме отображается раздел,посвященный объекту Comment; если вы щелкнете на второй теме, то увидите разделдля свойства Comment.
Свойстваобъекта Comment
Объект Comment обладаетшестью свойствами. Если свойство доступно только для чтения, это значит, чтопрограмма VBA может только получать свойство, но не изменять его.
 
Свойство       Только для                      Описание
                чтения
A p p l i c a t i o n           Да              Возвращает объект, представляющий                                                               приложение,   в  котором создавалось  
примечание (т.е. Excel)
Author                      Да           Возвращает имя человека,                              
                                                                    создавшего примечание
   Сreator                       Да         Возвращаетчисло, указывающее приложение, в                                 котором создавался объект. Не используется в                                       Excel для Windows (применяется только в Excel                                     для Macintosh)
   P a re n t                  Да           Возвращаетродительский объект для                                                                  примечания  (это всегдаобъект Range)
   Shape                    Да           Возвращаетобъект Shape, который                                                                       представляет форму,присоединенную к
                                                                        примечанию
   Visible                   Нет          Если это свойство имеетзначение True,                                           то примечаниеотображается на экране
Методыобъекта Comment
В таблице приведеныметоды, которые можно использовать в объекте Comment. Все они выполняют обычныеоперации, которые производятся над примечанием вручную. Однако вы никогдапрежде не рассматривали эти действия как методы.
Таблица 1. Методыобъекта Comment
      Метод                             Описание
       D e l e t e                         Удаляеткомментарий
        Next                            Возвращает объект Comment,                                                         представляющий следующий комментарий
        P r e v i o u s                   Возвращаетобъект Comment, представляющий                                  предыдущий комментарий
         Text                         Возвращает или определяет текст в                                                         комментарии (метод имеет три аргумента)
Возможно, вас удивило,что T e x t — это метод, а не свойство. Этот формат приводит нас к важномуумозаключению: различия между свойствами и методами не всегда четкие, аобъектная модель не является идеально последовательной. На самом деле неважно,насколько точно вы будете различать свойства и методы.
Пока используетсяправильный синтаксис, не имеет значения, какую роль в коде выполняет ключевоеслово — свойства или метода.

Коллекция Comments
Коллекция — это группаодинаковых объектов. Каждый рабочий лист имеет коллекцию Comments, состоящую извсех объектов Comment рабочего листа. Если на рабочем листе отсутствуютпримечания, эта коллекция пуста.
Например, приведенныйдалее код ссылается на первое примечание листа Лист1 активной рабочейкниги
          Worksheets(«Лист1»).Comments(1)
Следующий оператор отображаеттекст, который содержится в первом примечании листа Лисг1:
           MsgBox Worksheets(«Лист1»).Comments(1).Text
В отличие or большинстваобъектов, объект Comment не имеет свойства Name. Следовательно, чтобы сослатьсяна конкретный комментарий, используйте номер, а для получения необходимогокомментария обратитесь к свойству Comment объекта Range .
    Коллекция Comments — тоже объект, имеющий собственный наборсвойств и методов.
Например, следующийпример определяет общее количество комментариев:
          MsgBox ActiveSheet.Comments.Count
В данном случаеиспользуется свойство Count коллекции Comments, в котором хранится количествообъектов Comment на активном рабочем листе. В следующем примере показан адресячейки, содержащей первое примечание:
    MsgBox ActiveSheet.Comments(1).Parent.Address
В этом примере Comments(1) возвращает первый объект Comment коллекции Comments.     Свойство P a r e n t объекта Comment возвращает егоконтейнер, представленный объектом Range. В окне сообщений отображаетсясвойство A d d r e s s объекта Range. В итоге оператор показывает адрес ячейки,содержащей первое примечание.
Кроме того, вы можетециклически просмотреть все примечания на листе, используя конструкцию ForEach-Next. Ниже приведен пример использования отдельных окон для раздельногоотображения каждого примечания активного рабочего листа:
       For Each cmt in ActiveSheet.Comments
        MsgBox cmt.Text
       Next cmt
   Есливы не хотите, чтобы на экране находилось большое количество диалоговых окон с сообщениями,то используйте следующую процедуру для вывода всех примечаний в одном окне Intermediate:
       For Each cmt in ActiveSheet.Comments
        Debug.Print cmt.Text
       Next cmt

О свойстве Comment
В этом разделе речь идетоб объекте Comment. В справочной системе указано, что объект Range обладаетсвойством Comment. Если ячейка содержит примечание, свойство Comment возвращаетобъект— объект Comment. Например, следующий оператор ссылается на объект
Comment ячейки Al:
           Range(«Al»).Comment
Если это первоепримечание на листе, то на данный объект Comment можно сослаться следующимобразом:
          Comments(1)
Чтобы отобразитьпримечание ячейки Al в окне сообщения, используйте оператор           MsgBox Range(«Al»).Comment.Text
Если в ячейке Al нетпримечания, то оператор выдаст ошибку.
    Тот факт, что свойство может возвращать объект, довольноважен (возможно, это сложно понять, но данная концепция имеет решающее значениев программировании на VBA).
Объекты,вложенные в Comment
Управление свойствамисначала кажется сложной задачей, потому что некоторые свойства возвращаютобъекты. Предположим, необходимо определить цвет фона конкретного примечания налисте Лист1. Просмотрев список свойств объекта Comment, вы не найдетеничего, что относится к определению цвета. Вместо этого выполнитеследующие действия.
1. Используйте свойствоShape объекта Comment, возвращающее объект Shape, который содержится впримечании.
2. Используйте свойство Fi l l объекта Shape, возвращающее объект FillFormat
3. Используйте свойствоForeColor объекта FillFormat, возвращающее объект ColorFormat,
4. Используйте свойствоRGB (или свойство SchemeColor) объекта ColorFormat, чтобы задать цвет.
Иначе говоря, получениецвета фона объектаComment связано с доступом к другим объектам,которые в нем содержатся. Ниже описана иерархия задействованных объектов.
       Application (Excel)
        Workbook
          Worksheet
            Comment
               Shape
                FillFormat
                  ColorFormat
  Следует предупредить, что в этом можно легко запутаться! Но в качестве примера«эле-
гантности» VBAпосмотрите, как код для изменения цвета примечания можно записать с помощьюодного оператора:
   Worksheets(«Лист1»).Comments(1).Shape.Fill.ForeColor _
       .RGB = RGB(0, 255, 0)
Вы вправе использоватьтакже свойство SchemeColor (задаваемое в диапазоне от 0 до 80):
       W o r k s h e e t s ( " Л и с т 1 " ). C o m m e n t s ( 1 ).S h a p e. F i l l _ . F o r e C o l o r.SchemeColor = 12
В данном типе ссылкисразу трудно разобраться, но впоследствии  несложно будет ориентироватьсяв иерархии объектов, так как в Excel при записи последовательности действийпрактически всегда вопрос иерархии задействованных объектов ставится на первомместе.

Смущают цвета?
Цвет, который вы задаетев коде VBA, не всегда соответствует тому, который появляется на экране.Ситуация всегда может усложниться еще больше. В зависимости от объекта, скоторым вы работаете,  где для задания цвета используются различныеобъекты и свойства.
Цвет объекта Shape можнозадать с помощью свойства RGB или свойства SchemeColor.
Свойство RGB позволяетопределить цвет в виде значений красного, зеленого и синего компонентов. Этосвойство аналогично функции RGB, имеющей три аргумента, каждый из которыхзадается в диапазоне от 0 до 255. Функция RGB возвращает значение в диапазонеот 0 до 16777215. Но Excel может обрабатывать только 56 цветов. Поэтомуфактический цвет, полученный при использовании функции RGB, будет самым точнымсоответствием заданному цвету из 56-цветовой палитры рабочей книги.
Свойство SchemeColorпринимает значения от о до 80. В справочной системе вы не найдете ничего о том,что в действительности представляют собой эти цвета. Однако они ограниченыобразцами цветов на палитре рабочей книги.
При работе с цветами вобъекте Range вам придется обратиться к его вложенному объекту  I n t e ri o r. Вы можете задать цвет с помощью одного из свойств последнего: Color илиColor Index. Корректные значения свойства Colorindex находятся в диапазоне от 0до 56(0 означает отсутствие заливки). Эти значения соответствуют палитре цветоврабочей книги.                                         К сожалению, порядок, вкотором отображаются цвета, совершенно не связан с системой нумерации значенийсвойства Colorindex, поэтому для определения с помощью ColorIndex конкретногоцвета лучше записать макрос, Однако даже в этом случае не будет гарантии, чтопользователь не изменил цветовую палитру рабочей книги. В последнем случае свойствоColorindex выдаст далеко не тот результат, который вы ожидали.
При использовании свойстваColor можно определить значение цвета с помощью функции RGB. Однако помните,что фактически отображаемый цвет будет всего лишь ближайшим цветом на палитрерабочей книги, который соответствует заданному вами значению.
Кстати, чтобы изменитьцвет текста в примечании, обратитесь к объекту TextFrame
объекта Comment, которыйсодержит объект Characters, включающий, в свою очередь, объект Font. Далееобратитесь к свойствам Color или Colorindex объекта Font. Ниже приведен пример,устанавливающий свойство Colorindex в значение 5:
          Worksheets («Лист1»). Comments (1). _
              Shape.TextFrame.Characters.Font.Colorindex = 5

Содержит лиячейка примечание
Следующий операторотображает примечание ячейки А1 активного листа:
        MsgBoxRange(«Al»).Comment.Text
Если в ячейке А1примечание отсутствует, при выполнении этого оператора возникнет не- понятное сообщениеоб ошибке:
          Object v a r i a b l e or With block va r i a b l e not set.
Чтобы определить,содержит ли конкретная ячейка примечание, напишите код, проверяющий, не пустойли объект Comment,— т.е. равен ли он N o t h i n g (это корректное ключевое словоVBA). Следующий оператор отображает True, если в ячейке А1 примечаниеотсутствует:
           MsgBoxRange(«Al»).Comment Is Nothing
Обратите внимание, что вэтом примере используется ключевое слово I s, а не знак равенства.
       Добавление нового объекта Comment
В списке методов объектаComment нет метода для добавления нового примечания. Это объясняется тем, чтометод AddComment принадлежит объекту Range. Следующий оператор добавляетпримечание (пустое) в ячейку А1 активного рабочего листа:
          Range(«Al»).AddComment
Обратившись в справочнуюсистему, вы обнаружите, что метод AddComment имеет аргумент, представляющийтекст примечания. Следовательно, можно добавить примечание и текст в нем спомощью всего одного оператора:
          Range("Al").AddComment «Формула разработана JW»
Метод AddComment генерирует ошибку, если ячейка уже содержит примечание.
   Есливы хотите увидеть рассмотренные свойства и методы объекта Comment в действии,посмотрите пример на Web-уэле. Рабочая книга в соответствующем файле содержитнесколько примеров управления объектами Comment с помощью кода VBA. Скореевсего, вы не поймете весь код, но на данном этапе осознаете, как можноиспользовать VBA для работы с объектом.
Полезныесвойства объекта Application
Как известно, при работев Excel активной одновременно может быть только одна рабочая книга. И если выуправляете рабочим листом, то активна на нем только одна ячейка (даже есливыделен диапазон).
VBA это известно, поэтомувы можете ссылаться на активные объекты более простым методом. Это удобно, таккак вы не всегда знаете, с какой именно рабочей книгой, рабочим листом илиячейкой будете работать. VBA представляет свойства объекта Application дляопределения этого. Например, объект Application обладает свойством ActiveCell,возвращающим ссылку на активную ячейку. Следующая инструкция присваиваетзначение 1 активной ячейке:
          ActiveCell.Value = 1
Обратите внимание, что вэтом примере пропущена ссылка на объект
 A p p l i c a t i o n,так как это само собой разумеется. Важно понять, что такая инструкция можетвыдать ошибку, если активный лист не является рабочим. Например, если VBAвыполняет этот оператор, когда активен лист диаграммы, то процедура прекращаетвыполняться, а на экране отображается сообщение об ошибке.
Если на рабочем листевыделен диапазон ячеек, то активная ячейка будет находиться в выделенномдиапазоне. Другими словами, активная ячейка всегда одна (их никогда не бываетнесколько).
Объект A p p l i c a t io n также обладает свойством S e l e c t i o n, возвращающим ссылку навыделенный объект, т.е. отдельную ячейку (активную), диапазон ячеек или объекттипа ChartObject, TextBox или Shape.
В табл. 2  перечислены свойства объекта A p p li c a t i o n, которые  полезны при работе с ячейками и диапазонамиячеек.
Таблица  2. Некоторые полезные свойстваобъекта Application
     Свойство                    Возвращаемыйобъект
   ActiveCell                   Активная ячейка
   ActiveChart                   Активный лист диаграммы или объектдиаграммы на                                рабочем листе. Если диаграмма не активна, то                                      свойство равно Nothing
   Activesheet                   Активный лист (рабочий лист или лист диаграммы)
   Activewindow                Активное окно
   ActiveWorkbook              Активнаярабочая книга
    RangeSeiection               Выделенные ячейки на рабочем листе в заданном                окне,даже если выделен графический объект (на              самом деле это свойствообъекта Window)
    Selection                   Выделенныйобъект (объект Range, Shape, и т.д. )     ChartObject                                     
    Thisworkbook                Рабочая книга, содержащаявыполняемую процедуру
Преимуществоиспользования этих свойств для получения объекта заключается в том, что совершенноне обязательно знать, какая ячейка, рабочий лист или книга являются активными ивводить конкретную ссылку на этот объект. Данный факт позволяет создавать кодVBA, который не ограничивается конкретной книгой, листом или ячейкой. Например,следующая инструкция удаляет содержимое активной ячейки, даже если адресактивной ячейки не известен:
          ActiveCell.ClearContents
В следующем примереотображается сообщение, указывающее имя активного листа:
          MsgBox ActiveSheet.Name
Если требуется узнатьназвание активной рабочей книги, используйте такой оператор:
          MsgBox ActiveBook.Name
Если на рабочем листевыделен диапазон, то заполните этот диапазон одним значением, выполнивединственный оператор. В следующем примере свойство S e l e c t i on объекта Applicationвозвращает объект Range, соответствующий выделенным ячейкам. Оператор изменяетсвойство Value этого объекта Range, и в результате получается диапазон,заполненный одним значением.
          Selection.Value = 12
Обратите внимание: есливыделен не диапазон ячеек (например, объект ChartObject или Shape), то этотоператор выдаст ошибку, так как объекты ChartObject и Shape не обладаютсвойством Value.
   Однакоприведенный ниже оператор, присваивает объекту Range, который выделялся передвыделением другого объекта (отличного от диапазона ячеек), значение 12. Всправочной системе указано, что свойство RangeSelection относится только кобъекту Window:
          ActiveWindow.RangeSelection.Value = 12
Чтобы узнать, сколькоячеек выделено на рабочем листе, применяется свойство Count:           MsgBox ActiveWindow.RangeSelection.Count
            
Работа собъектами Range
В основном, работа,которая выполняется в VBA, связана с управлением ячейками и  и апазонами нарабочих листах, что и является основным предназначением электронных таблиц.
Объект Range содержится вобъекте Worksheet и состоит из одной ячейки или диапазона ячеек на отдельном рабочемлисте. В следующих разделах будут рассмотрены три способа задания ссылки наобъекты Range в программе VBА.
     • Свойство Range объекта класса Worksheet или Range.
      • Свойство Cells объекта Worksheet.
      • Свойство Offset объекта Range.

Свойство Range
Свойство Range возвращаетобъект Range. Из справочных сведений по свойству Range можно узнать, что кданному свойству обращаются с помощью нескольких вариантов синтаксиса:
    объект.Range(ячейка1);
    объект.Range(ячейка1, ячейка2).
    Свойство Range относится к одному из двух типов объектов:объекту Worksheet или объекту Range. В данном случае ячейка1и ячейка2указывают параметры, которые Excel будет воспринимать как идентифицирующиедиапазон (в первом случае) или очерчивающиедиапазон (во второмслучае). Ниже следует несколько примеров использования метода Range.
 Далее приведенаинструкция, которая вводит значение в указанную ячейку: значение 1 вводится вячейку А1 на листе Лист1 активной рабочей книги:
           Worksheets(«Лист1»).Range(«Al»).Value= 1
Свойство Range такжеподдерживает имена, определенные в рабочих книгах. Поэтому если ячейканазывается Ввод, то для введения значения в эту ячейку можетиспользоваться оператор
           Worksheets(«Лист1»).Range(«Ввод»).Value = 1
В следующем примере в диапазониз 20-ти ячеекна активном листе вводитсяодинаковоезначение. Если активный лист не является рабочимлистом, тоотображается сообщение об ошибке:
           ActiveSheet.Range(«A1:B10»).Value= 2
Приведенный ниже примерприведет к тому же результату, что и предыдущий.
          Range(«Al», «B10») = 2
Отличие заключается лишьв том, что опушена ссылка на лист, поэтому предполагается  активный рабочийлист. Кроме того, пропущено свойство, поэтому используется свойствопоумолчанию (для объекта Range это свойство Value). В этомпримере используется второй синтаксис ссылки на свойство Range. В данном случаепервый аргумент — это левая верхняя ячейка диапазона, а второй аргумент— эгоячейка в правом нижнем углу диапазона.
В следующем примере дляполучения пересечения двух диапазонов применяется оператор пересеченияExcel (пробел). Пересечением является одна ячейка— С6. Следовательно,данный оператор вводит значение 3 в ячейку С6:
          Range(«С1: С10  А6: Е6») = 3
Наконец, в следующемпримере значение 4 вводится в пять ячеек, т.е. в независимые диапазоны. Запятаявыполняет роль оператора объединения:
          Range(«Al,A3, А5, А7, А9») = 4
До настоящего момента вовсех рассмотренных примерах использовалось свойство Range объекта Worksheet.Ниже показан пример использования свойства Range объекта Range (в данном случаеобъектом Range является активная ячейка). В этом примере объект Rangeрассматривается как левая верхняя ячейка на рабочем листе, а затем в ячейку,которая в таком случае была бы В2, вводится значение 5. Другими словами,полученная ссылка является относительной для верхнего левого угла объектаRange. Следовательно, следующий оператор вводит значение 5 в ячейку,расположенную справа внизу от активной ячейки:
          ActiveCell.Range(«B2» ) = 5
Существует также намногоболее понятный способ обратиться к ячейке по отношению к диапазону— этосвойство O f f s e t (см. далее ).
СвойствоCells
Другим способом сослатьсяна диапазон является использование свойства Cells. Как и Range,  можноиспользовать свойство Cells в объектах Worksheet и Range. Справочная системауказывает на три варианта синтаксиса свойства C e l l s :
          объект.Cells(номер_строки,номер_столбпа);
          объект. Cells (номер_строки);
          объект. Cells.
Проиллюстрируем напримерах особенности применения свойства Cells. Вначале в ячейку Alлиста Лист1введем значение 9. В данном случае используетсяпервый синтаксис, где аргументами являются номер строки (от 1 до 65536) и номерстолбца (от 1 до 256):
          Worksheets(«Лист1»).Cells(1, 1) = 9
Ниже приведен пример, вкотором значение 7 вводится в ячейку D3 (т.е. пересечение
строки 3, столбца 4)активного рабочего листа:
          ActiveSheet.Cells(3, 4) = 7
Можно также использоватьсвойство Cells объекта Range. При этом объект Range, которыйвозвращается свойством Cells, задается относительно левой верхней ячейкидиапазона Range, на который мы ссылаемся… Следующая инструкция вводитзначение 5 в активную ячейку. Помните, что в данном случае активная ячейкарассматривается как ячейка Al на рабочем листе:
          ActiveCell.Cells(1,1) = 5
Это удобно, когда речьпойдет о переменных и циклах. В большинстве
случаев в аргументах небудет использоваться фактическое значение. Вместо него используется переменная.
Чтобы ввести значение 5 вячейку, которая находится под активной, можно обратитесь к такой инструкции:
        ActiveCell.Cells(2, 1)= 5
Предыдущий пример можноописать так-- необходимо начать с активной ячейки, рассматривая ее как ячейкуAl. Затем обратиться к ячейке во второй строке и первом столбце.
Этот синтаксис можноиспользовать и с объектом Range. В таком случае будет получена ячейка поотношению к указанному объекту Range. Например, если объект Range — этодиапазон Al: D10 (40 ячеек), то свойство Cells может иметь аргумент от I до 40и возвращать одну из ячеек объекта Range. В следующем примере значение 2000вводится в ячейку А2, так как А2 является пятой ячейкой (считая сверху направо,затем вниз) в указанном диапазоне:
          Range(«Al:D10»).Cells(5) = 2000
В предыдущем примереаргумент свойства Cells не ограничен значениями между 1 и 40. Если аргументпревышает количество ячеек в диапазоне, счет продолжается, будто диапазонбольше, чем он есть на самом деле, Следовательно, оператор, подобныйпредыдущему, может изменить значение ячейки, которая находится за пределами указанногодиапазона A l: D10.
Третийсинтаксис свойства Cells возвращает все ячейки науказанном рабочем листе.
В отличие от двух других,в этом синтаксисе, получаемые в результате данные — не одна ячейка, а целыйдиапазон. В приведенном ниже примере использован метод ClearContents поотношению к диапазону, полученному с помощью свойства Cells для активногорабочего листа. В результате будет удалено содержимое каждой ячейки на рабочемлисте:
          ActiveSheet.Cells.ClearContents

Свойство Offset
Свойство Offset (подобносвойствам Range и Cells) также возвращает объект Range.
В отличие отрассмотренных выше свойств, Offset применяется только к объекту Range и ни ккакому другому. Данное свойство использует единственный синтаксис:
          объект.Offset(сдвиг_строки,сдвиг_столбца)
Два аргумента свойстваOffset соответствуют смешению относительно левой верхней ячейки указанногодиапазона Range. Эти аргументы могут быть положительными (сдвиг вниз иливправо), отрицательными (вверх или влево) или нулевыми. В приведенном ниже примерезначение 12 вводится в ячейку, которая находится под активной ячейкой:
          ActiveCell.Offset(l,0).Value = 12
В следующем примерезначение 15 вводится в ячейку над активной ячейкой:
          ActiveCell.Offset(-l,0).Value = 15
Если активная ячейканаходится в строке 1, то свойство Ofset в предыдущем примере выдает ошибку, таккак оно не возвращает несуществующий объект Range.
Свойство Offset особоэффективно при использовании переменных в цикле.
В процессе записи макросав относительном режиме указания ссылки Excel использует свойство Offset дляобращения к ячейкам относительно начальной позиции (т.е. активной в моментначала записи макроса ячейки). Например, для генерации следующего кодаиспользована функция записи макросов. Вначале запишем макрос (при активнойячейке В1), потом
введем значение в ячейкиВ1: ВЗ, а затем вновь вернемся к ячейке В1:
           Sub Macrol()
            ActiveCell.FormulaRlCl = «1»
            ActiveCell.Offset(1, 0) .Range («Al») .Select
            ActiveCell.FormulaRlCl = «2»
            ActiveCell.Offset(1, 0} .Range («Al») .Select
            ActiveCell.FormulaRlCl = «3»
            ActiveCell.Offset(-2, 0).Range(«Al»).Select
           End Sub
При записи макросовиспользуется свойство FormulaRlCl. Как правило, для ввода значения в ячейкуприменяется свойство Value. Однако при использовании FormulaRlCl или Formulaрезультат будет таким же.
Также обратите внимание,что полученный код ссылается на ячейку Al, что довольно
странно, так как этаячейка даже не была задействована в макросе. Данная особенность процедурызаписи макросов делает программу даже более сложной, чем необходимо. Вы можетеудалить все ссылки на Range ( «А1» ), и макрос все равно будетработать нормально:
           Sub Modified Macro1( )
            ActiveCell.FormulaRlCl = «1»
            ActiveCell.Offset(1, 0) .Select
            ActiveCell.FormulaRlCl = «2»
            A c t i v e C e l l. O f f s e t (1, 0 ). S e l e c t
            ActiveCell.FormulaRlCl = «3»
            A c t i v e C e l l. O £ f s e t ( — 2, 0 ). S e le c t
           End Sub
Вы можете получить ещеболее эффективную версию макроса (например ту, которую я
написал вручную), гдевообще не выполняется выделение:
           Sub Macrol ()
       ActiveCell = 1
       ActiveCell.Offset(1. 0) = 2
       ActiveCell.Offset(-2, 0) = 3
    End Sub
 
Используйтезапись действий
Несомненно, лучший способпознакомиться с VBA— включить функцию записи макросов и записать отдельныедействия, выполненные в Excel. Это быстрый метод узнать, какие объекты,свойства и методы относятся к конкретной задаче. Будет лучше, если при записиотображается окно модуля VBA, в котором представлен записываемый код.
 
Используйтеэлектронную справочную систему
Основной источникподробной информации об объектах, методах и процедурах Excel — это электроннаясправочная система.
Используйтеброузер объектов
Окно Object Browser(Броузер объектов)— это удобный инструмент, предоставляющий список всех свойстви методов для всех доступных объектов. В VBE окно Object Browser можноотобразить одним из трех способов.
• Нажать .
• Выбрать в строке менюкоманду View — Object Browser.
• Щелкнуть на кнопкеObject Browser на стандартной панели инструментов.
 Броузер объектов— полный справочный ресурс
Выпадающий список в левомверхнем углу окна Object Browser содержит список всех библиотек объектов, ккоторым у вас есть доступ,
• Собственно Excel.
• MSForms (используетсядля создания специальных диалоговых окон).
• Office (объекты, общиедля всех приложений Microsoft Office).
• S t d o l e (объектыавтоматизации OLE).
• VBA.
• Все открытые рабочиекниги (каждая книга считается библиотекой объектов, так как содержит объекты).
Ваш выбор в этом спискеопределяет, что отображается в окне Classes (Классы), а выбор в окне Classesобусловит появление определенных компонентов в окне Members of (Включены в).
После выбора библиотекиможно осуществить поиск конкретной строки текста, чтобs получить список свойств и методов, содержащих данный текст.Это можно сделать, введя текст во втором раскрывающемся списке и щелкнув назначке с изображением бинокля.
Предположим, чтовыработаете над проектом, обрабатывающим примечания в ячейках.   1. Выберитеинтересующую вас библиотеку. Если вы не уверены, какую именно библиотекувыбрать, укажите вариант .
2. Введите Comment ввыпадающем списке под списком библиотек.
3. Щелкните на значке ввиде бинокля, чтобы начать поиск текста.
В окне Search Results(Результаты поиска) отображается текст, соответствующий фрагменту для поиска.Выберите один объект, чтобы отобразить его классы в окне Classes. Укажите класс,чтобы отобразить его члены (свойства, методы и константы). Обратите внимание нанижнюю часть окна, где дается дополнительная информация об объекте. Вы можетенажать , чтобы перейти непосредственно к необходимому разделусправочной системы.
Система Object Browserможет сначала показаться сложной, но, изучив ее вы убедитесь в еенезаменимости.

Экспериментируйте с окном Immediate
Как было отмечено воврезке в одном из предыдущих разделов этой главы, окно ImmediateвVBE используется для тестирования операторов и проверки разных выражений
VBA. Рекомендуетсяотображать окно Immediate, так как оно часто используется для про-
верки выражений и приотладке кода.
1.2.2Примеры на использование VBA в среде Excel
Объектнаямодель
Объектная модель MS Excelпредставляет собой иерархию объектов, под­чиненных одному объекту Application,который соответствует самому приложению Excel. Многие из этих объектов собраныв библиотеке объек­тов Excel, но некоторые из них, например, объект Assistant,входят в библиотеку объектов Office, которая является общей для всех офисныхприложений.
ОбъектApplication
Объект Application — этоглавный (корневой) объект в иерархии объектов MS Excel, представляющий самоприложение MS Excel. Он имеет огромное число свойств и методов, которыепозволяют установить общие параметры приложения MS Excel.
 

Свойстваобъекта Application
Объект Application,благодаря обширной коллекции свойств, позволяет  программно установить значениямногих опций окна Параметры, отображаемого при выборе команды Сервис — Параметры. Кроме того, он обеспечивает доступ к объектам верхнего уровня типаActiveCell, ActiveSheet и т.д.Перечислим основные свойства этого объекта:
ActiveCell                          ActiveChart
AcfcivePrinter                              ActiveSheet
ActiveWorkBook                   AddIns
CellDragAndDrop                  Charts
Cursor                                     DefaultFilePath
DefaultWebOptions                DisplayAlerts
DisplayFormulaBar                 DisplayScrollBars
EditDirectlylnCell                  FileSearch
Height                                     LibraryPath
MemoryTotal                          Names
Organ i zat ionName                ProductCode
Referencestyle                        Selection
StatusBar                                  Top
UsableWidth                           Version
Windows                                 WorksheetFunction
Семействовстроенных диалоговых окон
Свойство Dialogsвозвращает семейство всех встроенных диалоговых окон. Параметр этого семействаидентифицирует  ОКНО, метод  Show отобража­ет его на экране, а параметры этогометода задают  параметры, специфицируемые в отображаемом окне. Метод showвозвращает значение True, если задача, поставленная в отображаемом окне, былавыполнена успешно. Например, следующий код (листинг 2) отображает окно Открытиедокумента для от­крытия книги C:\test.xls.
Листинг2. Открытие книги при помощивстроенного окна
   Sub DemoDialogs() Dimidx As Long
idx = Application.Dialogs(xlDialogOpen) .Show(«с:\test.xls») If idx Then
MsgBox «Файл открыт»Else
MsgBox «Файл не открыт» End If
End Sub.
ОбъектFileDialog
Объект FileDialog,возвращаемый свойством  FileDialog объекта Application, предоставляет враспоряжение разработчика диалоговые окна  Открыть и Сохранить как. СвойствоFileDialog имеет один параметр DiaiogType. задающий тип окна. У этого параметраимеются четыре допустимых значения:
msoFileDialogFiiePicker — позволяет пользователю выбрать файл;
msoFileDialogFolderPicker— позволяет пользователю выбрать папку;
msoFileDialogopen — позволяет пользователю открыть выбранный файл.Открытие файла производится методом Execute;
msoFileDialogsaveAs — позволяет пользователю сохранить файл. Сохра­нениефайла производится  методом Execute.
Для отображения окна,симулируемого объектом FileDialog, необходимо воспользоваться методом show.Этот метод возвращает значение 0, если нажата кнопка Отмена и значение -1, еслинажата другая функциональная кнопка. Для окон Открыть и Сохранить как послеприменения  надо воспользоваться методом Execute для реализации  выбраннойкоманды.
И в следующих трехпримерах демонстрируется техника сохранения и загрузки файла при помощи окон,имеющих типы msoFileDialogFilePicker (ЛИСТИНГ3), msoFileDialogOpen (ЛИСТИНГ  4)И msoFileDialogSaveAs (ЛИСТИНГ  5).

Листинг  3. Загрузка файлов с помощьюокна msoFiieDiaiogFiiePicker
Sub LoadFiles()
Dim fd As FileDialog
Set fd =Application.FileDialog(msoFileDialogFilePicker) Dim itm As Variant With fd
If  .Show = -1 Then
For Each itm In.Selectedlterns
Workbooks.Add itm Next EndIf End With
Set fd = Nothing
End Sub
Листинг  4. Загрузка файла с помощьюокна msoFileDialogOpen
Sub LoadFile()
Dim fd As FileDialog
Set fd =Application.FileDialog(msoFileDialogOpen) If fd.Show = -1 Then
fd.Execute Else
MsgBox «Выбрали отмену»End If
Set fd = Nothing
End  Sub.
Листинг  5. Сохранение файла спомощью окна msoFileDialogSaveAs
Sub SaveFile()
Dim fd as FileDialog
Setfd=Application.FileDialog(mso FileDialogSaveAs)
If fd.Show= -1 then
Fd.Execute
End Sub.
Поискфайлов
Свойство FileSearch объекта  Application возвращает объект FileSearch, который инкапсулирует и себесвойства и методы, реализующие поиск специфицированного файла на диске.Перечислим основные свойства объекта FileSearch:
— свойство LookInвозвращает или устанавливает каталог, в котором производится поиск.
— свойство FileType возвращает или устанавливает тип искомого файла. Его допустимым значением можетбыть одна из следующих констант:
msoFileTypeAllFiles
msoFileTypeCalendarItems
msoFileTypeCustom
msoFileTypeDataConnectionFiles
msoFileTypeDocumentImagingFiles
msoFileTypeJournaItem
msoFileTypeNoteItems
msoFileTypeOutLookItems
msoFileTypePowerPoint
msoFileTypeTemplates
msoFileTypeWebPages
msoFileTypeBindere
msoFileTypeContactItems
msoFileTypeDataBases
msoFileTypeMailItems
msoFileTypeOfficeFile
msoFileTypeTarkItems
msoFileTypeVisioItems
msoFileTypeWordDocuments
— свойство  FoundFile возвращает объект FoundFiles, представляющий собой список имен всех найденных в течение поиска файлов.
Метод Execute объектаApplication производит непосредственный поск. Он возвращает целое число, причем, если оно равно 0, то ни одного файла не было найдено, а если положительное,то найден, по крайней мере, один файл.
Листинг 6. Поиск рабочих книг вкорневом каталоге диска С
With Application.FileSearch
.LookIN = “C:\”
.FileType=msoFileTypeExcelWordBooks
If.Execute(SortByFileName._
Sortorder:msosoftorderabcending)>0 Then
Dim str As string
Str = “Найдено” & .FoundFile.Count & “
Dim I as integer
Int= I to FoundItem.Count
Str= str &. FoundFile(i) & vthcr
Next
MsgBox str
Else
MsgBox “Рабочие книги не найдены”
End if
End with
Симулированиеячеек рабочего листа
Метод Evaluate позволяет симулироватьработу с ячейками или диапазонами рабочего листа без реального воплощения этихдействий на рабочем листе.
Листинг 7. Симулирование ввода данныхв ячейки и считывание из них значений
Public Sub Simur()
Evaluate(«A1»).Value= 25
Evaluate(«A2»).Formula= «A1^2»
MsgBoxEvaluate(«A2»).Value
End Sub
Листинг 8 Симулирование ячеек
Public Substimulirovanie()
Dim firstCell As Range
Dim secondCell As Range
Set firstCell =Evaluate(«A1»)
Set secondCell =Evaluate(«A2»)
firstCell.Value = 25
secondCell.Formula =«A1^2»
MsgBox secondCell.Value
End Sub
Электронныечасы в ячейке рабочего листа
Метод позволяет создатьэлектронные часы. Для этого достаточно рекурсивно вызывать процедуру, в которойсчитывается текущее время. Затем оно выводится в ячейку рабочего листа,найденное время увеличивается на секунду, и уже для вычисленного  новоговремени  устанавливается рекурсивный вызов процедуры.
Листинг 9.Электронные часы в ячейке рабочего листа. Стандартный модуль
Sub DemoClock()
    DemoOnTime
End Sub
Sub DemoOnTime()
 Dim newHour, newMinute, newSecond, newTime
 Cells(1, 1).Value = Now
 newHour = Hour(Now)
 newMinute = Minute(Now)
 newSecond = Second(Now)
 newTime =TimeSerial(newHour, newMinute, newSecond)
 Application.OnTimeEarliesTime:=newTime, Procedure:=«DemoOnTime»
End Sub
Доступ котдельным ячейкам диапазона
Свойство Cells объектаRange, использованное без индексов, возвращает все ячейки диапазона, а  синдексов- конкретную ячейку, специфицированную либо ее номером(один параметр),либо местоположением (два параметра).
Например, в следующемкоде в диапазоне В1: С3 все положительные значения заменяются на 1, аотрицательные  на -1.
Листинг 10. Все ячейки диапазона
Dim a as Range
For Each a in Range (В1: С3).Cells
If a.Value >0 Then
a.Value =1
Else if a.Value
a.Value =-1
End if
Next
Листинг  11
Dim i As Integer Dim j AsInteger
For i = 1 ToRange(«B1:C3»).Columns.Count For j = 1 ToRange(«Bl:C3»).Columns.Count
IfRange(«B1:C3»)-Cells(i,  j).Value > 0 Then
Range(«Bl:C3»).Cells(i,j).Value = 1 Elself Range(«B1:C3»)-Cells(i, j).Value
Range(«B1:C3»).Cells(i, j).Value = -1
End If
Next
Next 
 
Если требуется задать абсолютноеместоположение ячеек, то надо воспользоваться свойством Cells рабочего листа,например как в листинге 12.
 
Листинг 12. Абсолютное местоположение ячеек
Dim i As Integer Dim j AsInteger For i = 2 To 3 For j = 1 To 3
If Cells(i, j).Value >0 Then
Cells(i, j).Value = 1Elself Cells(i, j).Value
Cells(i, j).Value = -1
End If
 Next
 Nex
Поискзначения в диапазоне
Метод Find объекта Range производит поиск специфицированной информации в указанном диапазоне ивозвращает ссылку на первую ячейку, в которой требуемая информация найдена. Вслучае не обнаружения искомых  данных, метод возвращает значение Nothing
Листинг 13. Поиск значения
Public Sub Poiskznacheni()
Dim rng As Range
Set rng =Range(«A1:A10»).Find(What:=17, LookIn:=xlValues)
If Not (rng Is Nothing)Then
   MsgBox rng.Address
Else
   MsgBox «не найдено значение»
End If
End Sub
Листинг 14 Поиск подстроки без учетарегистра
Sub DemoFindNoMatchCase()
   Dim rng As Range
   Set rng =Range(«A1:A10»).Find(What:=«BHV», LookIn:=xlValues, _
   LookAt:=xlPart,MatchCase:=False)
   If Not (rng Is Nothing)Then
   MsgBox rng.Value
   Else
   MsgBox «не найдено подходяшиезначение»
   End If
End Sub
Повторныйпоиск и поиск всех значений
Метод FindNext и FindPrevious объекта  Range реализует повторный вызов метода Find для продолжения специфицированногопоиска. Первый из методов производит поиск следующей ячейки, а второй – поискпредыдущей, удовлетворяющей объявленным критериям поиска.
FindNext (after)
FindPrevious(after)
Здесь after- необязательный параметр,указывающий на ячейку после которой надо  производить поиск.
Листинг 15. Нахождение всех вхождений подстроки в данныйдиапазон
Sub DemoFind()
Dim firstAddress As String
Dim rng As Range
Set rng =Range(«A1:A10»).Find(What:=«MS», LookIn:=xlValues, _
LookAt:=xlPart,MatchCase:=False)
If Not (rng Is Nothing)Then
firstAddress = rng.Address
Do
rng.Interior.Color =RGB(255, 255, 0)
Set rng =Range(«a1:a10»).FindNext(rng)
Loop While Not (rng IsNothing) And rng.Address firstAddress
End If
End Sub
Отсылкаэлектронной почты
Отсылка электронной почты с даннымирабочего листа может производится при помощи средств Microsoft Outlook.
Листинг 16. Отсылка электронной почты
Private SubcmdEMail_Click()
Dim objOL As NewOutlook.Application
Dim objMail As MailItem
Set objOL = NewOutlook.Application
Set objMail =objOL.CreateItem(olMailItem)
With objMail
    .To =Range(«B1»).Value
    .Body =Range(«B2»).Value
    .Subject =Range(«B3»).Value
    .CC =Range(«B4»).Value
    .Display
End With
Set objMail = Nothing
Set objOL = Nothing
End Sub
Условноеформатирование
Условное форматирование  позволяетэффективно отображать, форматируя ячейки выборочно, основываясь на ихсодержании.
Листинг 17. Условное форматирование
Private SuboptAverage_Click()
  Dim r As Range
  Set r =Range(«B1:B6»)
 r.FormatConditions.Delete
  r.FormatConditions.AddType:=xlExpression, _
                        Formula1:="=B1>=СРЗНАЧ($B$1:$B$6)"
 r.FormatConditions(1).Interior.Color = RGB(255, 255, 0)
End Sub
Private Sub optMax_Click()
Dim r As Range
  Set r =Range(«B1:B6»)
 r.FormatConditions.Delete
  r.FormatConditions.AddType:=xlCellValue, _
                        Operator:=xlEqual, _
                        Formula1:="$B$9"
  Withr.FormatConditions(1).Font
      .Bold = True
      .Italic = False
      .Color = RGB(255, 0,0)
  End With
End Sub
Private SuboptValue_Click()
Dim r As Range
  Set r =Range(«B1:B6»)
 r.FormatConditions.Delete
  r.FormatConditions.AddType:=xlCellValue, _
                        Operator:=xlGreaterEqual, _
                        Formula1:="$G$8"
  r.FormatConditions(1).Interior.Color= RGB(0, 0, 255)
End Sub
Управлениестилем границы диапазона  и объектами Border
Свойство Border объекта Range возвращает семейство Borders, элементы которого не инкапсулируют данные об однойиз граничных или диагональных линий данного диапазона. допустимыми значениямииндекса семейства Borders могут бытьследующие константы xlBordersIndex: lxDiagonalDown, xlEdgeLeft, xlEdgeRight, xlEdgeTop и т.д. Каждая из этих границпредставляет объект Border.
Листинг 18. Управлениестилем границы диапазона  и объектами Border
Public Sub DemoBorders()
'Дома работает
Dim rgn As Range
Set rng = Range(«A2:C2»)
With rng.Borders(xlEdgeTop)
.LineStyle = xlContinuouse
.Weight = xlThick
.Color = RGB(255, 0, 0)
End With
Withrng.Borders(xlEdgeBottom)
.LineStyle = xlDash
.Weight = xlMedium
.Color = RGB(0, 255, 0)
End With
End Sub
Если компоненты границы имеют они ите же параметры, то для установки их значения можно воспользоваться неэлементами, а всем семейством Borders, как это, например, делается в следующей инструкции для создания  границысинего цвета у выделенной области.
Примериспользования объекта Shape
Примером использования объекта Shape может быть следующий код  (Листинг19) последовательно с интервалом в одну секунду выводящии различные автофигуры,а затем с такой же скоростью их удаляющий.
Листинг19. Последовательныйвыводавтофигур
Public Sub StarShow()
'дома работает
Dim w As Integer, h AsInteger, i As Integer
Dim toppos As Integer,leftpos As Integer
Dim v As Long
Dim star As Shape
w = 50: h = 50
Randomize
For i = 1 To 10
toppos = Rnd() *(ActiveWindow.UsableHeight — h)
leftpos = Rnd() *(ActiveWindow.UsableWidth — w)
Select Case (i Mod 6)
Case 0
v = msoShape4pointStar
Case 1
v = msoShape5pointStar
Case 2
v = msoShape16pointStar
Case 3
v = msoShape32pointStar
Case 5
v = msoShapeDiamond
End Select
Set star =ActiveSheet.Shapes.AddShape(v, leftpos, toppos, w, h)
star.Fill.ForeColor.SchemeColor= Int(Rnd() * 56)
Application.Wait Now +TimeValue(«00:00:01»)
DoEvents
Next
Application.Wait Now +TimeValue(«00:00:01»)
For Each star InWorksheets(1).Shapes
If Left(star.Name, 9) =«AutoShape» Then
star.Delete
DoEvents
Application.Wait Now +TimeValue(«00:00:01»)
End If
Next
End Sub
Подборпараметра и решение уравнения с одной не известной.
Метод GoalSeek объекта Range подбирает значение параметра (неизвестной величины),являющейся решением уравнения с одной переменой. предполагается, что уравнениеприведено к следующему виду: правая часть уравнения является постоянной, независящей от параметра, параметр входит только в левую часть уравнения,например,
x^3-3*x-5=0
Метод GoalSeek программирует выполнение команды Сервис| подбор параметра. Этот метод вычисляет корень, использую методпоследовательных приближений, результат выполнения которого, зависит отначального приближения.
Точность, с которойнаходиться корень и предельно допустимое число используемых для нахождениякорня, устанавливается свойство  MaxChange и MaxIterations объекта Application. Напримкр определение корня сточностью до 0,0001 максимум за 1000 итерации устанавливает инструкцией:
WithAplication
.MaxIterations = 1000
. MaxChange =0.0001
End With
Метод GoalSeek возвращает значение True, если решение найдено и значение False в противном случае. Напримерследующий код (листинг 20) ищет корень уравнения x^3-3*x-5при начальном приближении 1
Листинг20.Решениеуравнения
Sub DemoGoalSeek()
Range(«A1»).Name= «x»
Range(«A1»).Value= 1
Range(«B1»).Formula= "=x^3-3*x-5"
IfRange(«B1»).GoalSeek(Goal:=0, ChangingCell:=Range(«x»))Then
MsgBox «Корень: » &Range(«A1»).Value
Else
MsgBox «корень не найден»
End If
End Sub
1.3Разработка и эксплуатация автоматизированных ИС
1.3.1Основные понятия технологии проектирования информационных систем (ИС)
Информация в современноммире превратилась в один из наиболее важных ресурсов, а информационные системы(ИС) стали необходимым инструментом практически во всех сферах деятельности.
Разнообразие задач,решаемых с помощью ИС, привело к появле­нию множества разнотипных систем,отличающихся принципами по­строения и заложенными в них правилами обработкиинформации.
КлассификацияИС
Информационные системыможно классифицировать по целому ря­ду различных признаков. В основурассматриваемой классификации положены наиболее существенные признаки,определяющие функцио­нальные возможности и особенности построения современныхсистем. В зависимости от объема решаемых задач, используемых техническихсредств, организации функционирования, информационные системы де­лятся на рядгрупп (классов) (рис. 1).
По типу хранимых данныхИС делятся на фактографические и доку­ментальные. Фактографические системыпредназначены для хранения и обработки структурированных данных в виде чисел итекстов. Над таки­ми данными можно выполнять различные операции. Вдокументальных системах информация представлена в виде документов, состоящих изна­именований, описаний, рефератов и текстов. Поиск по неструктуриро­ваннымданным осуществляется с использованием семантических признаков. Отобранныедокументы предоставляются пользователю, а об­работка данных в таких системахпрактически не производится.
Основываясь на степениавтоматизации информационных процессов в системе управления фирмой,информационные системы делятся на руч­ные, автоматические и автоматизированные.
/>
Рис. 1.Классификация информационных систем.
Ручные ИС характеризуютсяотсутствием современных технических средств переработки информации ивыполнением всех операций челове­ком.
В автоматических ИС всеоперации по переработке информации вы­полняются без участия человека.
Автоматизированные ИС(АИС) предполагают участие в процессе обработки информации и человека, итехнических средств, причем главная роль в выполнении рутинных операцийобработки данных отводится компью­теру. Именно этот класс систем соответствуетсовременному представле­нию понятия «информационная система».
В зависимости отхарактера обработки данных ИС делятся на ин­формационно-поисковые иинформационно-решающие.
Информационно-поисковыесистемы производят ввод, систематизацию, хранение, выдачу информации по запросупользователя без слож­ных преобразований данных. (Например, ИС библиотечногообслуживания, резервирования и продажи билетов на транспорте, бронирования меств гостиницах и пр.)
Информационно-решающиесистемы осуществляют, кроме того, операции переработки информации поопределенному алгоритму. По характеру использования выходной информации такиесистемы принято делить на управляющие и советующие.
Результирующая информацияуправляющих ИС непосредственно
трансформируется впринимаемые человеком решения. Для этих систем характерны задачи расчетногохарактера и обработка больших объемов данных. (Например, ИС планированияпроизводства или заказов, бухгалтерского учета.)
Советующие ИСвырабатывают информацию, которая принимается человеком к сведению и учитываетсяпри формировании управленческих решений, а не инициирует конкретные действия.Эти системы имитируют интеллектуальные процессы обработки знаний, а не данных.(Напри­мер, экспертные системы.)
В зависимости от сферыприменения различают следующие классы ИС.
Информационные системыорганизационного управления — пред­назначены для автоматизации функцийуправленческого персонала, как промышленных предприятий, так и непромышленныхобъектов (гостиниц, банков, магазинов и пр.).
Основными функциямиподобных систем являются: оперативный контроль и регулирование, оперативныйучет и анализ, перспективное и оперативное планирование, бухгалтерский учет,управление сбытом, снабжением и другие экономические и организационные задачи.
ИС управлениятехнологическими процессами (ТП) — служат для автоматизации функцийпроизводствённого персонала по контролю и управлению производственнымиоперациями. В таких системах обычно предусматривается наличие развитых средствизмерения параметров тех­нологических процессов (температуры, давления,химического состава и т.д.), процедур контроля допустимости значений параметрови регулиро­вания технологических процессов.
ИС автоматизированногопроектирования (САПР) — предназначе­ны для автоматизации функцийинженеров-проектировщиков, конструкторов, архитекторов, дизайнеров при созданииновой техники или технологии. Основными функциями подобных систем являются:инже­нерные расчеты, создание графической документации (чертежей, схем,планов), создание проектной документации, моделирование проектируе­мыхобъектов.
Интегрированные(корпоративные) ИС — используются для авто­матизации всех функций фирмы иохватывают весь цикл работ от плани­рования деятельности до сбыта продукции.Они включают в себя ряд модулей (подсистем), работающих в едином информационномпростран­стве и выполняющих функции поддержки соответствующих направленийдеятельности. Типовые задачи, решаемые модулями корпоративной сис­темы,приведены в таблице 3.
Таблица 3.Функциональное назначение модулей корпоративной ИС
/>
Существует классификацияИС в зависимости от уровня управления, на котором система используется.
ИС оперативного уровня –поддерживает исполнителей, обрабатывая данные о сделках и событиях (счетанакладные, зарплата, кредиты, поток сырья и материалов). Информационная системаоперативного уровня является связующим звеном между фирмой и внешней средой.
Задачи, цели, источникиинформации и алгоритмы обработки на оперативном уровне заранее определены и ввысокой степени структурированы.
ИС специалистов — поддерживают работу с данными и знаниями, повышают продуктивность ипроизводительность работы инженеров и проектировщиков. Задача подобныхинформацион­ных систем — интеграция новых сведений в организацию и помощь вобработке бумажных документов.
ИС менеджмента — используются работниками среднего управленческого звена для мониторингаконтроля, принятия решений и администрирования. Основные функции этихинформационных систем:
* сравнение текущихпоказателей с прошлыми;
* составлениепериодических отчетов за определенное время, а не вы­дача отчетов по текущимсобытиям, как на оперативном уровне;
* обеспечение доступа кархивной информации и т.д.
Стратегическаяинформационная система — компьютерная инфор­мационная система, обеспечивающаяподдержку принятия решений по реализации стратегических перспективных целейразвития организации.
ИС стратегического уровняпомогают выс­шему звену управленцев решать неструктурированные задачи, осуществ­лятьдолгосрочное планирование. Основная задача — сравнение происхо­дящих во внешнемокружении изменений с существующим потенциалом фирмы. Они призваны создатьобщую среду компьютерной телекомму­никационной поддержки решений в неожиданновозникающих ситуаци­ях. Используя самые совершенные программы, эти системыспособны в любой момент предоставить информацию из многих источников. Неко­торыестратегические системы обладают ограниченными аналитически­ми возможностями.
С точки зренияпрограммно-аппаратной реализации можно выделить ряд типовых архитектур ИС.
Традиционныеархитектурные решения основаны на использовании выделенных файл-серверов илисерверов баз данных. Существуют также варианты архитектур корпоративных ИС,базирую­щихся на технологии Internet (Internet — приложения). Следующая разно­видностьархитектуры ИС основывается на концепции «хранилища данных» (DataWarehouse) — интегрированной информационнойсреды, включающей разнородные информационные ресурсы. И, наконец, дляпостроения глобальных распределенных ин­формационных приложений используетсяархитектура интеграции информационно-вычислительных компонентов на основеобъектно-ориен­тированного подхода.
Индустрия разработкиавтоматизированных информационных сис­тем управления зародилась в 1950-х т1960-х годах и к концу века приоб­рела вполне законченные формы.
На первом этапе основнымподходом в проектировании ИС был ме­тод «снизу-вверх», когда системасоздавалась как набор приложений, наиболее важных в данный момент для поддержкидеятельности пред­приятия. Основной целью этих проектов было не созданиетиражируемых продуктов, а обслуживание текущих потребностей конкретного учрежде­ния.Такой подход отчасти сохраняется и сегодня. В рамках «лоскутной автоматизации»достаточно хорошо обеспечивается поддержка отдель­ных функций, но практическиполностью отсутствует стратегия развития комплексной системы автоматизации, аобъединение функциональных подсистем превращается в самостоятельную идостаточно сложную проблему.
Создавая свои отделы иуправления автоматизации, предприятия пытались «обустроиться» своими силами.Однако периодические изменения технологий работы и должностных инструкций,сложности, связанные с разными представлениями пользователей об одних и тех жеданных, приводили к непрерывным доработкам программных продуктов дляудовлетворения все новых и новых пожеланий отдельных работников. Как следствие- и работа программистов, и создаваемые ИС вызывали недовольство руководителейи пользователей системы.
Следующий этап связан сосознанием того факта, что существует потребность в достаточно стандартныхпрограммных средствах автоматизации деятельности различных учреждений ипредприятий. Из всего спектра проблем разработчики выделили наиболее заметные:автоматизацию ведения бухгалтерского аналитического учета и технологическихпроцессов. Системы начали проектироваться «сверху-вниз», т.е. в предположении,что одна программа должна удовлетворять потребности многих пользователей.
Сама идея использованияуниверсальной программы накладывает существенные ограничения на возможностиразработчиков по формированию структуры базы данных, экранных форм, по выборуалгоритмов расчета. Заложенные «сверху» жесткие рамки не дают возможности гибкоадаптировать систему к специфике деятельности конкретного предприятия: учестьнеобходимую глубину аналитического и производственно-технологического учета,включить необходимые процедуры обработки данных, обеспечить интерфейс каждогорабочего места с учетом функций и технологии работы конкретного пользователя.Решение этих задач требует серьезных доработок системы. Таким образом,материальные и временные затраты на внедрение системы и ее доводку подтребования заказчика обычно значительно превышают запланированные показатели.
Согласно статистическимданным, собранным StandishGroup (США), из 8380 проектов,обследованных в США в 1994 году, неудачными оказались более 30% проектов, общаястоимость которых превышала 80 миллиардов долларов. При этом оказалисьвыполненными в срок лишь 16% от общего числа проектов, а перерасход средствсоставил 189% от запланированного бюджета.
В то же время, заказчикиИС стали выдвигать все больше требований направленных на обеспечениевозможности комплексного использования корпоративных данных в управлении ипланировании своей деятельности.
Таким образом, возникланасущная необходимость формирования новой методологии построения ИС.
     
Жизненныйцикл ИС
Методологияпроектирования ИС описывает процесс создания и сопровождения систем в видежизненного цикла (ЖЦ), ИС, представляет его как некоторую последовательностьстадий и выполняемых на них процессов. Для каждого этапа определяются состав ипоследовательность выполняемых работ, получаемые результаты, мето­ды исредства, необходимые для выполнения работ, роли и ответствен­ность участникови т.д. Такое формальное описание ЖЦ ИС позволяет спланировать и организоватьпроцесс коллективной разработки и обеспе­чить управление этим процессом.
Этапы по общности целеймогут объединяться в стадии. Совокупность стадии и этапов, которые проходит ИСв своем развитии от момента принятия решения о создании системы до момента прекращения ее функционирования, называется жизненным циклом ИС.
Модель ЖЦ
Модель жизненного циклаотражает различные состояния системы, начиная с момента возникновениянеобходимости, в данной ИС заканчивая моментом ее полного выхода изупотребления. Модель жизненного цикла — структура, содержащая процессы,действия и задачи, которые осуществляются в ходе разработки, функционирования исопровождения программного продукта в течение всей жизни системы, отопределения требований до завершения её использования.
В настоящее времяизвестны и используются следующие модели жизненного цикла:
* Каскадная модель (рис.2.1) предусматривает последовательное выполнение всех этапов проекта в строгофиксированном порядке. Переход на следующий этап означает полное завершениеработ на предыдущем этапе.
* Поэтапная модель спромежуточным контролем (рис. 2.2). Разработка ИС ведется итерациями с цикламиобратной связи между этапами. Межэтапные корректировки позволяют учитыватьреально существующее взаимовлияние результатов разработки на различных этапах;время жизни каждого из этапов растягивается на весь период разработки (другоеназвание – итерационная модель).
* Спиральная модель (рис.2.3). На каждом витке спирали выполняется создание очередной версии продукта,уточняются требования проекта, определяется его качество и планируются работыследующего витка.
/>
Рис. 2.1Каскадная модель ЖЦ ИС
/>
Рис. 2.2.Поэтапная модель с промежуточным контролем
/>
Рис. 2.3.Спиральная модель ЖЦ ИС
На практике наибольшеераспространение получили две основные модели жизненного цикла:
* каскадная модель(характерна для периода 1970-1985 гг.);
* спиральная модель(характерна для периода после 1986 г.).
В ранних проектахдостаточно простых ИС каждое приложение представляло собой единый,функционально и информационно незави­симый блок. Для разработки такого типаприложений эффективным оказался каскадный способ. Каждый этап завершался послеполного выпол­нения и документального оформления всех предусмотренных работ.
Можно выделить следующиеположительные стороны применения каскадного подхода:
* на каждом этапеформируется законченный набор проектной доку­ментации, отвечающий критериямполноты и согласованности;
* выполняемые влогической последовательности этапы работ позволяют планировать срокизавершения всех работ и соответствующие затраты.
Каскадный подход хорошозарекомендовал себя при построении относительно простых ИС, когда в самомначале разработки можно дос­таточно точно и полно сформулировать все требованияк системе. Основным недостатком этого подхода является то, что реальный процесссозда­ния системы никогда полностью не укладывается в такую жесткую схему,постоянно возникает потребность в возврате к предыдущим этапам и уточнении илипересмотре ранее принятых решений. В результате реаль­ный процесс создания ИСоказывается соответствующим поэтапной модели промежуточным контролем.
Однако и эта схема непозволяет оперативно учитывать возникаю­щие изменения и уточнения требований ксистеме. Согласование резуль­татов разработки с пользователями производитсятолько в точках, плани­руемых после завершения каждого этапа работ, а общиетребования к ИС зафиксированы в виде технического задания на все время еесоздания. Та­ким образом, пользователи зачастую получают систему, неудовлетворяю­щую их реальным потребностям.
Другими словами каскаднаямодель предполагает разработку законченных продуктов на каждом этапе:технического задания, технического проекта, про­граммного продукта ипользовательской документации. Разработанная документация позволяет не толькоопределить требования к продукту следующего этапа, но и определить обязанностисторон, объем работ и сроки, при этом окончательная оценка сроков и стоимостипроекта про­изводится на начальных этапах, после завершения обследования.Очевидно, что в больших системах, как правило, требования меняются в ходереализации проекта, а качество документов оказывается невысоким (тре­бованиянеполны и/или противоречивы), то в действительности исполь­зование каскадноймодели создает лишь иллюзию определенности и на деле увеличивает риски,уменьшая лишь ответственность участников проекта. При формальном подходеменеджер проекта реализует только те требования, которые содержатся вспецификации, опирается на документ, а не на реальные потребности бизнеса.
Итерационная модель.Создание комплексных ИС предполагает проведение увязки проектных решений,получаемых при реализации отдельных задач. Подход к проектированию снизу-вверхобусловливает необходимость таких итерационных возвратов, когда проектныерешения по отдельным задачам комплектуются в общие системные решения, и приэтом возникает потребность в пересмотре ранее сформулированных требований. Какправило, вследствие большого числа итераций возникают рассогласования ввыполненных проектных решениях и документации. Запуганность функциональной исистемной архитектуры созданной ИС, трудность в использовании проектнойдокументации вызывают на стадиях внедрения и эксплуатации сразу необходимостьперепроектирования всей системы. Длительный жизненный цикл разработки ИСзаканчива­ется этапом внедрении, за которым начинается жизненный цикл новой ИС.
Спиральная модель ЖЦ былапредложена для преодоления перечисленных проблем. На этапах анализа ипроектирования реализуемость тех­нических решений и степень удовлетворенияпотребностей заказчика про­веряется путем создания прототипов. Каждый витокспирали соответству­ет созданию работоспособного фрагмента или версии системы.Это позво­ляет уточнить требования, цели и характеристики проекта, определитька­чество разработки, спланировать работы следующего витка спирали. Таким образом,углубляются и последовательно конкретизируются детали проекта и в результатевыбирается обоснованный вариант, который удовлетворяет действительнымтребованиям заказчика и доводится до реализации.
В спиральной модели ЖЦиспользуется подход к организации проектирования ИС сверху-вниз, когда сначалаопределяется состав функциональных подсистем, а затем постановка отдельныхзадач. Соответственно сначала разрабатываются такие общесистемные вопросы,  как  организация   интегрированной  базы  данных,  технология сбора, передачи инакопления информации, а затем технология решения конкретны задач. В рамкахкомплексов задач программирования осуществляется по направлению от головныхпрограммных модулей к исполняющим отдельные функции. При этом на первый план выходятвопросы взаимодействия интерфейсов программных модулей между собой и с базойданных, а на второй – реализация алгоритмов.
В основе спиральноймодели жизненною цикла лежит применение прототипной технологии или RAD-технологии (Rapid Application Development — технологии быстрой разработкиприложений). Согласно этой технологии ИС разрабатывается путем расширенияпрограммных прототипов, повторяя путь от детализации требований к детализациипрограммного кода. Естествен­но, что при прототипной технологии сокращаетсячисло итераций и возникает меньше ошибок и несоответствий, которые необходимоисправлять на последующих итерациях, при этом проектирование ИС осуществляетсяболее быстрыми темпами, упрощается создание проектной документации. Для болееточного соответствия проектной документации разработанной ИС все большеезначение придается    ведению    общесистемного    репозитария (хранилища) ииспользованию CASE — технологий.
Жизненный цикл прииспользовании RAD-технологии предполагает активноеучастие конечных пользователей будущей системы на всех этапах разработки ивключает четыре основные стадии информационного инжиниринга:
• анализ и планированиеинформационной стратегии. Пользователи вместе со специалистами-разработчикамиучаствуют в идентификации проблемной области;
• проектирование.Пользователи принимают участие в техническом проектировании под руководствомспециалистов-разработчиков;
• конструирование.Специалисты-разработчики проектируют рабочую версию ИС с использованием языковчетвертого поколения;
• внедрение.Специалисты-разработчики обучают пользователей работе в среде новой ИС.
Основная проблемаспирального цикла — определение момента пе­рехода на следующий этап. Для еерешения вводятся временные ограни­чения на каждый из этапов жизненного цикла, ипереход осуществляется в соответствии с планом, даже если не всязапланированная работа закон­чена. Планирование производится на основестатистических данных, полученных в предыдущих проектах, и личного опытаразработчиков.
Спиральная модель чащеизменяется при разработке ИС силами собственного отдела ИТ предприятия.
СтандартыЖЦ ИС
Проектирование ИС –трудоемкий, длительный и динамический процесс, проходящий через множествоэтапов. Последние могут объединяться в стадии. Каждая из стадий созданиясистемы предусматривает выполнение определенного объема работ, которыепредставляются в виде процессов ЖЦ. Процесс определяется как совокупностьвзаимосвязанных действий, преобразующих входные данные в выходные. Описаниекаждого процесса включает в себя перечень решаемых задач, исходных данных ирезультатов.
Существует целый рядстандартов, регламентирующих ЖЦ ПО, а в некоторых случаях и процессыразработки.
Значительный вклад втеорию проектирования и разработки инфор­мационных систем внесла компания IBM, предложив еще в середине 1970-хгодов методологию BSP (Business System Planning — методология организационногопланирования). Метод структурирования информации с использованием матрицпересечения бизнес-процессов, функциональных подразделений, функций системобработки данных (информа­ционных систем), информационных объектов, документови баз данных, предложенный в BSP,используется сегодня не только в ИТ-проектах, но и проектах по реинжинирингубизнес-процессов, изменению организа­ционной структуры. Важнейшие шаги процессаBSP, их последователь­ность (получитьподдержку высшего руководства, определить процессы предприятия, определитьклассы данных, провести интервью, обработать и организовать данные интервью)можно встретить практически во всех формальных методиках, а также в проектах,реализуемых на практике.
Среди наиболее известныхстандартов можно выделить следующие:
• ГОСТ 34.601-90 — распространяется на автоматизированные систе­мы и устанавливает стадии и этапыих создания. Кроме того, в стан­дарте содержится описание содержания работ накаждом этапе. Стадии и этапы работы, закрепленные в стандарте, в большей степе­нисоответствуют каскадной модели жизненного никла.
• ISO/IEC 12207:1995 – стандарт на процессы и организациюжизненного цикла. Распространяются на все виды заказного ПО. Стандарт несодержит описания фаз, стадий этапов.
• Custom Development Method (методика Оrас1е) по разработке при­кладных информационных систем — технологическийматериал, де­тализированный до уровня заготовок проектных документов, рас­считанныхна использование в проектах с применением Оrас1е. Применяется СDМ для классической модели ЖЦ (предусмотрены все работы/задачи и этапы), атакже для технологий «быстрой разработ­ки» (Fast Track) или «облегченного подхода», рекомендуемых в слу­чаемалых проектов.
• Rational Unified Process (RUP)предлагает итеративную модель раз­работки, включающую четыре фазы: начало,исследование, постро­ение и внедрение. Каждая фаза может быть разбита на этапы(итера­ции), в результате которых выпускается версия для внутреннего иливнешнего использования. Прохождение через четыре основные фа­зы называетсяциклом разработки, каждый цикл завершается гене­рацией версии системы. Еслипосле этого работа над проектом не прекращается, то полученный продуктпродолжает развиваться и снова минует те же фазы. Суть работы в рамках RUP — это создание и сопровождениемоделей на базе UML.
• Microsoft Solution Framework (MSF) сходна с RUP так же включает четыре фазы: анализ, проектирование, разработка,стабилизация, является итерационной, предполагает использованиеобъектно-ориентированного моделирования. MSF в сравнении с RUP в большей степени ориентирована на разработкубизнес-приложений.
• Extreme Programming (XP). Экстремальное программирование (самая новая средирассматриваемых методологий) сформировалось в 1996 году. В основе методологиикомандная работа, эффективная коммуникация между заказчиком и исполнителем втечение всего проекта по разработке ИС, а разработка ведется с использованиемпоследовательно дорабатываемых прототипов.
Позднее был разработан ив 2002 г. опубликован стандарт на процессы жизненного цикла систем (ISO/IEC 15288 System life cycle processes). К разработке стандарта былипривлечены специалисты различных облас­тей: системной инженерии,программирования, управления качеством. Человеческими ресурсами, безопасностьюи пр. Был учтен практический опыт создания систем в правительственных,коммерческих, военных и академических организациях. Стандарт применим дляширокого класса систем, но его основное предназначение — поддержка созданиякомпью­теризированных систем.
Согласно стандарту ISO/IEC серии 15288 в структуру ЖЦ сле­дует включатьследующие группы процессов:
1.   Договорные процессы:
* приобретение(внутренние решения или решения внешнего поставщика);
* поставка (внутренниерешения или решения внешнего поставщика).
2.   Процессыпредприятия:
* управление окружающейсредой предприятия;
* инвестиционноеуправление;
* управление ЖЦ ИС;
* управление ресурсами;
* управление качеством.
3.   Проектные процессы:
* планирование проекта;
* оценка проекта;
* контроль проекта;
* управление рисками;
* управлениеконфигурацией; 
* управлениеинформационными потоками;
* принятие решений.
4.   Техническиепроцессы:
* определение требований;
* анализ требований;
* разработка архитектуры;
* внедрение;
* интеграция;
* верификация;
* переход;
* аттестации;
* эксплуатации;
* сопровождение;
* утилизация.
5.    Специальныепроцессы:
* определение и установкавзаимосвязей исходя из задач и целей.
Стадии создания системы,предусмотренные в стандарте ISO/IEC 15288, несколько отличается отаналогичных в других стандартах. Перечень стадий и основные результаты, которыедолжны быть достигнуты к моменту их завершения, приведены в таблице 4.

Таблица 4.Стадии создания систем(ISO/IEC15288)
/>
1.3.2Основы современной технологии проектирования АИС
 
Классификацияметодов проектирования систем
Методы проектирования ИСможно классифицировать по степени использования средств автоматизации, типовыхпроектных решений, адаптивности к предполагаемым изменениям.
Так, по степениавтоматизации методы проектирования разде­ляются на:
*  ручное, при которомпроектирование компонентов ИС осуще­ствляется без использования специальныхинструментальных программных средств, а программирование — на алгоритми­ческихязыках;
*  компьютерное, прикотором производится генерация или кон­фигурирование (настройка) проектныхрешений на основе использования специальных инструментальных программныхсредств.
По степени использованиятиповых проектных решений различают следующие методы проектирования:
*  оригинальное  (индивидуальное),   когда   проектные   решения разрабатываются «с нуля» всоответствии с требованиями к АИС.  Характеризуется тем,  что все видыпроектных работ ориентированы на создание индивидуальных для каждого объектапроектов, которые в максимальной степени отражают все его особенности;
*  типовое,предполагающее конфигурирование ИС из готовых типовых проектных решении(программных модулей). Выполняется на основе опыта, полученного при разработкеиндивидуальных проектов. Типовые проекты, как обобщение опыта для некоторыхгрупп организационно-экономических систем или видов работ,  в каждом конкретномслучае связаны со  множеством специфических особенностей и различаются постепени охвата функций управления, выполняемым работам и разрабатываемойпроектной документации.
      По степениадаптивности проектных решений выделяют методы;
*  реконструкции, когдаадаптация проектных решений выполняется путем переработки соответствующихкомпонентов (перепрограммирования программных модулей);
*  параметризации, когдапроектные решения настраиваются (генерируются) в соответствии с изменяемымипараметрами;
*  реструктуризациимодели, когда изменяется модель проблемной области, на основе которой автоматическизаново генерируются проектные решения.
Сочетание различныхпризнаков классификации методов обусловливает   характер   используемых  технологий   проектирования ИС, среди которых выделяют два основных класса:каноническую и  индустриальную технологии (табл. 5.). Индустриальная технологияпроектирования, в свою очередь, разбивается  на два подкласса:автоматизированное (использование CASE-технологий) и типовое (параметрически-ориентированное илимодельно-ориентированное) проектирование.  Использование индустриальныхтехнологий не исключает использования в отдельных случаях канонических.
Для конкретных видовтехнологий проектирования свойственно применение определенных средствразработки ИС, которые поддерживают выполнение, как отдельных проектных работ,этапов, так и их совокупностей. Поэтому перед разработчиками ИС, как правило,стоит задача выбора средств проектирования, которые по своим характеристикам внаибольшей степени соответствуют требованиям конкретного предприятия.
Таблица 5.Характеристики классов технологий проектирования
/>
Средства проектированияИС можно разделить на два класса:
Без использования ЭВМ и сиспользованием ЭВМ.
Средства проектированиябез использования ЭВМ применяются на всех стадиях и этапах. Как правило, этосредства организационно-методического обеспечения операций и в первую очередьраз­личные стандарты, регламентирующие процесс проектирования систем. Сюда жеотносятся единая система классификации и кодирования информации,унифицированная система документации, модели описания и анализа потоковинформации и т. п.
Средства проектирования сиспользованием ЭВМ могут приме­няться как на отдельных, так и на всех стадиях иэтапах процесса проектирования ИС  и соответственно  поддерживают разработкуэлементов,  разделов, проекта системы в целом. Все множество средствпроектирования с использованием ЭВМ делят на четыре подкласса.
      1.  Операционныесредства, которые поддерживают проектиро­вание   операций   обработки  информации.   К  данному   подклассу средств относятся алгоритмические языки,библиотеки стандартных подпрограмм   и   классов   объектов,  макрогенераторы,   генераторы программ типовых операций обработки данных  и т.п.,  а также средства  расширения   функций  операционных   систем   (утилиты).В данный класс включаются также такие простейшие инструментальные средствапроектирования, как средства для тестирования и отладки программ, поддержкипроцесса документирования проекта и  т. п. Особенность последних программзаключается в том, что с их помощью повышается производительность трудапроектировщиков, но не разрабатывается законченное проектное решение.
Таким образом, средстваданного подкласса поддерживают дельные операции проектирования ИС и могутприменяться независимо друг от друга.
      2.  Средства, поддерживающиепроектирование отдельных компонентов. К данному подклассу относятся средстваобщесистемного назначения:
*  системы управлениябазами данных (СУБД);
* методо-ориентированные  пакеты прикладных программ (ре­шение задач дискретногопрограммирования, математической статистики и т. П.);
*  табличные процессоры;
*  статистические ППП идр.
      Для перечисленныхсредств характерно их использование для разработки технологических подсистемИС: ввода информации, организации хранения и доступа к данным, вычислении,анализа и отображения данных, принятия решений.
      3.  Средства,поддерживающие проектирование разделов проекта. В этом подклассе выделяютфункциональные средства проектирования.
Функциональные средстванаправлены на разработку автоматизированных систем, реализующих функции,комплексы задач и задачи   управления.   Разнообразие   предметных   областей  порождает многообразие средств данного полкласса, ориентированных типорганизационной системы (промышленная, непромышленная сферы), уровень управления(например, предприятие, цех, отдел, участок, рабочее место), функцию управлении(планирование, учет и т. п.).
К функциональнымсредствам проектирования систем обработки информации относятся типовыепроектные решения, функциональные пакеты прикладных программ, типовые проекты.
      4.  Средства,поддерживающие разработку на стадиях и этапах процесса проектирования. Кданному классу относятся средства автоматизации проектирования ИС (CASE-средства). Современные CASE-средства в свою очередь, классифицируютсяв основном по двум признакам:
1)  по охватываемымэтапам процесса разработки ИС;
2)  по степениинтегрированности:
*  отдельные локальныесредства (tools);
*  наборнеинтегрированных средств, охватывающих большин­ство этапов разработки ИС (toolkit);
*  полностьюинтегрированные средства, связанные общей базой проектных данных — репозиторием(workbench).
Формализациятехнологии проектирования ИС
Сложность, высокиезатраты и трудоемкость процесса проектирования ИС на протяжении всегожизненного цикла вызывают необходимость, с одной стороны, выбора адекватнойэкономическому объекту технологии проектирования, с другой — наличиеэффективного инструмента управления процессом ее применения. С этой точкизрения возникает потребность в построении такой формализованной моделитехнологии проектирования, на основе которой можно было бы оценитьнеобходимость и возможность применения определенной технологии проектирования сучетом сформулированных требований к ИС и выделенных на экономическом объектересурсов, а в последующем контролировать ход и результаты проектирования.
В наибольшей степенизадаче формализации технологии проек­тирования ИС соответствует аппараттехнологических сетей  проек­тирования.
Технологическая сетьпроектирования (ТСП) строится на основе отдельных технологических операции. ПодТСП понимается взаимосвязанная по входам и выходам последовательностьтехнологических операций проектирования, выполнение которых приводит достижениютребуемого результата — созданию проекта ИС.
      Технологическиесети проектирования могут строиться с различной степенью детализации. Наиболеедетализированная ТСП, в которой каждая технологическая операция являетсяручной, называется канонической. Каноническая ТСП наиболее пригодна дляпроектировщиков-исполнителей, так как является руководством по проектированиюИС. Вместо с тем каноническая ТСП всего проекта редко используется в полномобъеме, скорее различные категории проектировщиков-исполнителей пользуютсяотносящимися к их компетенции фрагментами канонической сети.
Для   укрупнения   ТСП   применяются   технологические   операции-агрегаты,    которым   соответствуют  фрагменты   канонической ТСП. Например, ТО «Проектирование схемы базы данных»декомпозируется на ряд взаимосвязанных ТО: «Нормализация таблиц», «Установлениесвязей», «Отображение в схеме DDLСУБД» и т.д.
При использованиисредства автоматизированного проектирования проектировщик-исполнитель можетпользоваться технологическими операциями-агрегатами, объединяющими фрагментыканонической  ТСП. Для таких ТО обязательно задается ссылка на используемое  средство   проектирования.    Причем    если    средство проектированияявляется комплексным, то указываются конкретный компонент (функция, модуль,опция и т, д.) или компоненты этого средства.
Технологические сетипроектирования могут иметь вариантный характер построения.   Например,  ТСП проектирования   выходных форм отчетов зависит от средства проектирования,выбор которого в свою очередь, определяется их сложностью. Для правильноговыбора средства проектирования вводится специальная технологическая операция, которая сопоставляет параметры требований (например, итоги отчетов, числотаблиц формы, число файлов базы данных и др.) с аналогичными параметрамисредства проектирования. В зависимости от выбранного средства проектированиядалее определяется конкретная ветка ТСП. Например, если в совокупности средствпроектирования есть только генератор отчетов, работающий с одним файлом, то втехнологическую сеть потребуется ввести операцию проектирования выходногофайла. Если ни одно из средств не подходит, то проектирование осуществляется всоответствии с канонической сетью проектирования.
Каноническоепроектирование ИС
Каноническоепроектирование ИС отражает особенности ручной технологии индивидуального (оригинального)проектирования, осуществляемого на уровне исполнителей без использованиякаких-ли­бо инструментальных средств, позволяющих интегрировать выпол­нениеэлементарных операций. Как правило, каноническое проектирование применяется длянебольших локальных ИС.
Организация каноническогопроектирования ИС ориентирована на использование главным образом каскадноймодели жизненного никла ИС. Стадии и этапы работы описаны в стандарте ГОСТ34.601-90.
В зависимости отсложности объекта автоматизации и набора задач, требующих решения при созданииконкретной ИС, стадии и этапы работ могут иметь различную трудоемкость.Допускается объединять последовательные этапы и даже исключать некоторые из нихна любой стадии проекта. Допускается также начинать выполнение работ следующейстадии до окончания предыдущей.
Стадии и этапы созданияИС, выполняемые организациями-участниками, прописываются в договорах итехнических заданиях на выполнение работ:
1)  исследование иобоснование создания системы;
2)  разработкатехнического задания;
3)  создание эскизногопроекта;
4)  техническоепроектирование;
5)  рабочеепроектирование;
6)  ввод в действие;
7)  функционирование,сопровождение, модернизация.
В целях изучениявзаимосвязанных приемов и методов канони­ческого проектирования ИСперечисленные семь стадий можно сгруппировать в часто используемые на практикечетыре стадии процесса разработки ИС (табл. 6.)
Таблица 6.Содержание и результаты основных стадий канонического проектирования АИС
/>
Состав исодержание работ на предпроектной стадии создания ИС.
При исследованиисуществующего экономического объекта (системы) разработчики должны уточнитьграницы изучения, определить круг пользователей будущей ИС различных уровней ивыделить классы и типы объектов, подлежащих последующей автоматизации.
Важнейшими объектамиобследования могут валяться:
•структурно-организационные звенья предприятия (например, отделы управления,цехи, участки, рабочие места);
• функциональнаяструктура, состав хозяйственных процессов и процедур;
• стадии (техническаяподготовка, снабжение, производство, сбыт) и элементы хозяйственного процесса(средства труда, предметы труда, ресурсы, продукция, финансы).
При каноническомпроектировании основной единицей обработки данных является задача. Поэтомуфункциональная струк­тура проблемной области на стадии предпроектного обследова­нияизучается в разрезе решаемых задач и комплексов задач. При этом задача всодержательном аспекте рассматривается как со­вокупность операцийпреобразования некоторого набора исходных данных для получения результатнойинформации, необхо­димой для выполнения функции управления или принятия управ­ленческогорешения. В большинстве случаев исходные данные и результаты их преобразованийпредставляются в форме эконо­мических документов. Поэтому к числу объектовобследования относятся компоненты потоков информации (документы, пока­затели,файлы, сообщения). Кроме того, объектами обследова­ния служат:
• технологии, методы итехнические средства преобразования информации;
• материальные потоки ипроцессы их обработки.
Основной целью выполненияпервого этапа предпроект­ного обследования «Сбор материалов» является:
• выявление основныхпараметров предметной области (напри­мер, предприятия или его части);
• установление условий, вкоторых будет функционировать про­ект ИС;
• выявление стоимостных ивременных ограничений на процесс
проектирования.
На этом этапепроектировщиками выполняется ряд техноло­гических операций и решаются следующиезадачи: предваритель­ное изучение предметной области; выбор технологиипроектирования; выбор метода проведения обследования; выбор метода сбораматериалов обследования; разработка программы обсле­дования; разработкаплана-графика сбора материалов обследо­вания; сбор и формализация материаловобследования.
В операции, связанной скомплексом технических средств, на выбор ЭВМ оказывает влияние большое числофакторов, которые принято объединять в следующие группы:
      1.  Факторы,связанные с параметрами входных информационных потоков, поступающих наобработку ЭВМ: объем информации, тип носителя информации, характерпредставления информации.
      2.  Факторы,зависящие от характера задач, которые должны решаться на ЭВМ, и их алгоритмов:срочность решения, возможность разделения задачи на подзадачи, выполняемые надругой ЭВМ, количество файлов с условно-постоянной информацией.
      3.  Факторы,определяемые техническими характеристиками ЭВМ: производительность процессора,емкость оперативной памяти, поддерживаемая операционная система, возможностьподключения различных устройств ввода-вывода.
      4.  Факторы,относящиеся к эксплуатационным характеристикам ЭВМ: требуемые условияэксплуатации.
     5.  Факторы,учитывающие стоимостные оценки затрат на приобретение, на содержаниеобслуживающего персонала, на проведение ремонтных работ.
Далее следует выполнитьоперации «Выбор типа операционных систем». Операционные системы осуществляютуправление работой ЭВМ, ее ресурсами, запускают на выполнение различныеприкладные программы, выполняют всевозможные вспомогательные действия по запросупользователя.
К факторам, определяющимвыбор конкретного класса ОС и его версии, относятся:
*  необходимое множествоподдерживаемых программных про­дуктов;
*  требования каппаратным средствам;
*  возможность использования различных устройств ввода-вывода;
*  требование поддержкисетевой технологии;
*  наличие справочнойслужбы для пользователя;
*  наличиедружественного  интерфейса  и   простота  использования и др.
Следующей операциейявляется операция «Выбор способа организации информационной базы (ИБ) ипрограммного средства ведения ИБ. Информационная база имеет несколько способоворганизации как совокупность локальных файлов и интегрированную организацию ввиде баз данных.
Локальная (файловая)организация подразумевает под собой хранение данных в виде совокупности независимых между собой локальных файлов, создаваемых для документа, задачи иликомплекса задач.
Интегрированная базаданных представляет собой совокупность взаимосвязанных,  хранящихся   вместеданных,   используемых для одного  или  нескольких  приложений. Данные, организованные в виде БД, могут быть организованы как централизованно(размещены на одной ЭВМ), так и в виде распределенных БД (размещенных нанескольких ЭВМ).
Программные   средства  веления   ИБ   выбираются, исходя из класса систем хранения данных: системыуправления файлами либо системы управления базами данных (СУБД). К основнымфакторам, определяющим выбор типа СУБД, относятся следующие:
•  масштаб примененияСУБД. По этому признаку выделяют персональные — настольные СУБД (например, FохРго или Access) или промышленные — сетевые СУБД (например, Oracle);
•  язык общения.Разделяют СУБД с открытыми языками, замкнутыми или смешанными;
•  число уровней вархитектуре. Существуют одноуровневые: двухуровневые, трехуровневые СУБД;
•  выполняемые СУБДфункции: информационные — организация хранения информации и доступа к ней иоперационные функции, связанные с обработкой информации;
•  сфера возможногоприменении СУБД: универсальное использование и специализированное.
При выполнении следующейоперации осуществляется «Выбор методов и средств проектирования программногообеспечения системы», который напрямую зависит от выбранной технологиипроектирования.  В совокупность методов проектирования,  используемых приканоническом подходе, входят такие, как метод структурного проектирования,  модульного   проектирования   и   др.   Основными факторами, оказывающимивлияние на выбор методов, являются их совместимость, сокращение времени истоимостных затрат на проектирование, получение качественного продукта, которыйбыл бы удобен для последующей эксплуатации и сопровождения.
Выполнение всех этихопераций завершается составлением технико-экономического обоснования (ТЭО) иформированием технического задания (ТЗ). Целью разработки ТЭИ проекта ИСявляются оценка основных параметров ограничивающих проект ИС, обоснованиевыбора и оценка основных проектных решений по отдельным компонентам проекта.При этом   различают   организационные   параметры,   характеризующие способы  организации   процессов   преобразования   информации в системе, информационныеи экономические параметры, характеризующие затраты на создание и эксплуатациюсистемы, экономию её эксплуатации.
К информационнымпараметрам относятся такие, как достоверность, периодичность сбора, формапредставления, периодичность обработки  информации и т. д.
К экономическимпараметрам ИС относятся: показатели годового экономического эффекта,коэффициента эффективности затрат и т.п.
Параметризация позволяетопределить требования к разрабаты­ваемой системе, оценить существующую ИС,пригодность типовых решений, выбрать проектные решения в соответствии стребованиями, предъявленными к ИС. К основным компонентам ТЭО относятся:
•  характеристикаисходных данных о предметной области;
•  обоснование целисоздания ИС;
•  обоснованиеавтоматизируемых подразделений, комплекса автоматизируемых задач, выборакомплекса технических средств, программного и информационного обеспечения;
•  разработка перечняорганизационно-технических мероприя­тий по проектированию системы;
•  расчет и обоснованиеэффективности выбранного проекта;
•  выводы о техническомуровне проекта и возможности дальнейших разработок.
      В предметнойобласти, как правило, рассматривается модели исходной системы (объекта).Например, модели деятельности организации создаются в двух видах:
•  модель «как есть» («as-is»)-отражает существующие в организации бизнес-процессы;
•  модель «как должнобыть» («to-be»)-отражает необходимые изменения бизнес-процессов с учетомвнедрения ИС.
На основе ТЭО разрабатываютсяосновные требования к будущему проекту ЭИС и составляется «Техническое задание»со­гласно ГОСТ 34.602 — 89 «Техническое задание на создание автоматизированнойсистемы», в состав которого входят следующие основные разделы.
1.  В разделе «Общие сведенияо проекте» указывают: полное наименование системы, код системы, код договора,наименова­ние предприятия-разработчика.
2.  Раздел описания«Назначение, цели создания системы» со­стоит из двух подразделов:
в подразделе «Назначениесистемы» даются вид автоматизируемой деятельности и перечень объектовавтоматизации, на которых предполагается ее использовать;
в подразделе «Целисоздания системы» указываются наиме­нования и требуемые значения технических идругих показателей объекта автоматизации ИС.
Ограничившись этимперечнем, отметим что в состав ТЗ при наличии утвержденных методик включаютприложения, содержащие расчеты экономической эффективности системы и оценкунаучно-технического уровня системы.
 Т.О. в результатепредпроектного обследования разрабатывается такие документы как ТЭО, ТЗ иэскизный проект (в случае необходимости).
В ТЭО четкосформулировано, что будет иметь заказчик, если согласится финансировать проект,когда он получит готовый продукт (или график выполнения работ) и сколько этобудет стоить (для крупных проектов должен быть составлен график финансированияна различных этапах работ). В документе желательно отразить не только затраты,но и выгоды проекта, например, время окупаемости проекта, ожидаемыйэкономический эффект (если его удается оценить).
Техническое задание — этодокумент, определяющий цели, требования и основные исходные данные, необходимыедля разработки автоматизиро­ванной системы управления.
При разработкетехнического задания необходимо решить следую­щие задачи:
• установить общую цельсоздания ИС, определить состав подсистем и функциональных задач;
• разработать иобосновать требования, предъявляемые к подсисте­мам;
• разработать иобосновать требования, предъявляемые к информаци­онной базе, математическому ипрограммному обеспечению, компле­ксу технических средств (включая средствасвязи и передачи данных);
• установить общиетребования к проектируемой системе;
• определить переченьзадач создания системы и исполнителей;
• определить этапысоздания системы и сроки их выполнения;
• провестипредварительный расчет затрат на создание системы и оп­ределить уровеньэкономической эффективности ее внедрения.
Эскизный проектпредусматривает разработку предварительных про­ектных решений по системе и еечастям.
Выполнение стадии эскизногопроектирования не является строго обязательной. Если основные проектные решенияопределены ранее или достаточно очевидны для конкретной ИС и объектаавтоматизации, то эта стадия может быть исключена из общей последовательностиработ.
Содержание эскизногопроекта задается в ТЗ на систему. Как прави­ло, на этапе эскизногопроектирования определяются:
• функции ИС;
• функции подсистем, ихцели и ожидаемый эффект от внедрения;
• состав комплексов задачи отдельных задач;
• концепцияинформационной базы и ее укрупненная структура:
• функции системыуправления базой данных:
• состав вычислительнойсистемы и других технических средств;
• функции и параметрыосновных программных средств.
По результатампроделанной работы оформляется, согласовывается и утверждается документация вобъеме, необходимом для описания полной совокупности проектных решений идостаточном для дальнейшего выполнения работ по созданию системы.
Состав исодержание работ на стадии техно-рабочего проектирования
Работы на стадии «Техно-рабочегопроектирования» выполня­ются на основе утвержденного «Технического задания».Разра­батываются основные положения проектируемой системы, прин­ципы еефункционирования и взаимодействия с другими систе­мами; определяется структурасистемы; разрабатываются проектные решения по обеспечивающим частям системы.
На стадии«Техно-рабочего» проектирования» выполняются два этапа работ: техническое ирабочее проектирование. На первом из них — «Техническое проектирование»осуществляется логическая про­работка функциональной и системной архитектурыЭИС, в про­цессе которой строится несколько вариантов всех компонентов системы;проводится оценка вариантов по показателям: стоимости, трудоемкости,достоверности получаемых результатов, и составляется «Технический проект»системы.
Все работы первого этапаможно разбить на две группы. К первой группе относится разработка общесистемныхпроектных решений, в том числе:
• разработкаобщесистемных положений по ЭИС;
• изменениеорганизационной структуры;
• определение функциональнойструктуры;
• разработкапроектно-сметной документации и расчет эконо­мической эффективности системы;
• разработка планамероприятий по внедрению ИС.
Наиболее принципиальной вданном комплексе работ является разработка функциональной архитектуры ИС набазе принципов выделения функциональных подсистем (модулей, контуров):предметного, функционального, смешанного (предметно-функционального ипроблемного.
Ко второй группе работ,выполняемых на этапе техническо­го проектирования, относятся разработки локальныхпроектных решений, к числу которых относят следующие операции:
• разработка «Постановкизадачи» для задач, входящих в со­став каждой функциональной подсистемы,включающей основные компоненты описания задачи и служащей     основанием дляразработки проектных решений по задаче;
• проектирование формвходных и выходных документов, сис­темы ведения документов и макетов экранныхформ документов;
• проектированиеклассификаторов экономической информа­ции и системы ведения классификаторов;
• разработка структурывходных и выходных сообщений;
• проектирование составаи структур файлов информационной базы;
• проектированиевнемашинной и внутримашинной технологии решения каждой задачи;
• уточнение составатехнических средств.
Основным компонентомлокальных проектных решений, яв­ляющимся базой для разработки информационного,программ­ного и технологического обеспечения для каждой задачи, явля­ется«Постановка задачи». Этот документ содержит три состав­ные части:
• характеристику задачи;
• описание выходнойинформации;
• описание входнойинформации.
В состав раздела«Характеристика задачи» входят следующие компоненты: описание цели; назначениерешения конкретной задачи перечень функций и процессов, реализуемых решаемойзадачей характеристика организационной и технико-экономической сущности задачи;обоснование целесообразности автоматизации решения задачи; указание перечняобъектов, для которых решается задача; описание процедур решения задачи;указание периодичности решения задачи и требований к организации сбо­ра первичныхданных; описание связей с другими задачами.
Под целью автоматизациирешения задачи подразумевается получение определенных значений экономическогоэффекта в сфере управления какими-либо процессами системы или сниже­ниестоимостных и трудовых затрат на обработку информации, улучшение качества идостоверности получаемой информации, повышение оперативности ее обработки ит.д., т.е. получение косвенного и прямого эффекта от внедрения данной задачи.
Описание алгоритмарешения задачи включает формализованное описание входных и результатныхпоказателей и перечень формул расчета результатных показателей в случае решениязадачи прямым методом счета или описание математической модели, эко­номико-математическогометода, применяемого для ее реализации, и перечня последовательных шаговвыполнения расчетов и т.д.
Далее для каждой задачиразрабатываются все компоненты информационного, технического, математического илингвистического обеспечения, а также некоторые компоненты программногообеспечения.
Результатом работ наданной стадии является утвержденный «Технический проект», состав и содержаниекоторого регламентируются стандартом (ГОСТ 34.201-89).
Таким образом на основеТЗ (и эскизного проекта) разрабатывается технический проект ИС.
Технический проектсистемы – это техническая документация, содержащая общесистемные проектныерешения, алгоритмы решения задач, а также оценку экономической эффективностиавтоматизированной системы управления и перечень мероприятий по подготовкеобъекта к внедрению.
На втором  этапе — «Рабочемпроектировании» осуществляется техническая реализация выбранных наилучшихвариантов и разрабатывается документация «Рабочий проект». Наиболееответственной работой, выполняемой на этом этапе, яв­ляются «Кодирование исоставление программной документации. В ее состав входят следующие компоненты:
• описание программ;
• спецификация программ;
• тексты программ;
• контрольные примеры;
• инструкции длясистемного программиста, оператора и пользователя.
Большую роль в делеэффективного использования разрабо­танного проекта ЭИС играет качественнаятехнологическая до­кументация, входящая в состав «Рабочего проекта». Эта частьпроекта предназначена для использования специалистами в своей деятельности накаждом автоматизированном рабочем месте.
Таким образом, на стадии«рабочая документация» осуществляется создание программного продукта иразработка всей сопровождающей документации.
Состав исодержание работ на стадиях внедрения, эксплуатации и сопровождения проекта
На стадиях «Внедрениепроекта» проводится подготовка и постепенное освоение разработанной проектнойдокументации ИС заказчиками системы. В процессе выполнения работ на этой стадииосуществляется выявление частных и системных принципиальных недоработок впредлагаемом проектном решении.
Внедрение можетосуществляться с использованием следующих методов:
• последовательногометода, когда постепенно внедряется одна подсистема за другой и задачи следуютодна за другой;
• параллельного метода,при котором все задачи внедряются во всех подсистемах одновременно;
• смешанного  подхода,  согласно  которому  проектировщики, внедрив  несколько  подсистем  первым методом  и  накопив опыт, приступают к параллельному внедрению остальных.
Недостатком первогоподхода является увеличение длительности внедрения, что приводит к ростустоимости проекта. При использовании второго подхода сокращается времявнедрения, но возникает возможность пропуска ошибок в проектной документациипоэтому чаше всего используют смешанный метод внедрения проекта ИС. Внедрениепроекта осуществляется в течение трех этапов которыми являются:
• подготовка объекта квнедрению;
• опытное внедрение;
• сдача проекта впромышленную эксплуатацию.
Первый этап-«Подготовка объекта к внедрению». На этом этапе осуществляются следующиеоперации;
• изменяетсяорганизационная структура объекта (предприятия);
• набираются кадрысоответствующей квалификации в областях обработки информации, эксплуатациисистемы и сопровождения проектной документации;
• осуществляетсяустановка каналов связи: проводится разработка новых документов иклассификаторов;
• осуществляется создание  файлов   информационной  базы с нормативно-справочной информацией идр.
На вход этого этапапоступают компоненты «Технического проекта» в части «Плана мероприятий повнедрению», решения по техническому и информационному обеспечению, технологические и инструкционные материалы «Рабочего проекта». В результатевыполнения этапа составляется «Акт готовности объекта к внедрению» проекта ИС.Затем формируется состав приемной комиссии, разрабатывается «Программапроведения опытного внедрения» и издается «Приказ о начале опытного внедрения».
Второй этап – «Опытноевнедрение». На этом этапе внедряются проекты нескольких задач о несколькихподсистемах. В процессе опытного внедрения выполняются следующие работы:
• подготовка исходныхоперативных данных для задач, которые
проходят опытнуюэксплуатацию;
• ввод исходных данных вЭВМ и выполнение запланированного числа реализации;
• анализ выходных данныхна предмет наличия ошибок.
В случае обнаружения ошибокосуществляются поиск их при­чин и источников, внесение коррективов в программы,в техноло­гию обработки информации, в работу технических средств, в исход­ныеоперативные данные и в файлы с условно-постоянной инфор­мацией. Кроме того,выявляется неквалифицированная работа операторов, что служит основанием дляпроведения комплекса мер по улучшению подготовки кадров.
После устранения ошибокполучают «Акт о проведении опытного внедрения», который служит сигналом дляначала выполнения следующего этапа.
На третьем этапе — «Сдачапроекта в промышленную эксплуата­цию» — используют следующую совокупностьдокументов:
• договорнуюдокументацию;
• приказ на разработкуИС;          
• ТЭО и ТЗ;
• исправленныйтехно-рабочий проект;
• приказ о началепромышленного внедрения;
• программу проведенияиспытаний;
• требования кнаучно-техническому уровню проекта системы.
В процессе сдачи проектав промышленную эксплуатацию осуществляются следующие работы:
• проверка соответствиявыполненной работы договорной доку­ментации по времени выполнения, объемупроделанной рабо­ты и затратам денежных средств;
• проверка соответствияпроектных решений по ИС требованиям ТЗ;
• проверка соответствияпроектной документации ГОСТам и ОСТам;
• проверкатехнологических процессов обработки данных по всем задачам и подсистемам;
• проверка качествфункционирования информационной базы, оперативности и полноты ответов назапросы;
• выявление локальных исистемных ошибок и их исправление.
Кроме того, приемнаякомиссия определяет научно-технический уровень проекта и возможности расширенияпроектных решений за счет включения новых компонентов. В результате выполненияработ на данном этапе осуществляется доработка «Технорабочего проекта» за счетвыявления системных и локальных ошибок и составляется «Акт сдачи проекта впромышленную эксплуатацию».
На четвертой стадии –«Эксплуатация и сопровождение проекта» — выполняются следующие процессы:
• эксплуатация проекта;
• сопровождение имодернизация проекта.
На этой стадии решаетсявопрос о том, какими силами (персоналом объекта-заказчика илиорганизации-разработчика) будут осуществляться эксплуатация и сопровождениепроекта, и в случае выбора второго варианта заключается «Договор осопровождении проекта».
В процессе выполненияэтапа «Эксплуатация проекта» осуществляются исправления в работе всех частейсистемы при возникновении сбоев, регистрация этих случаев в журналах,отслеживание технико-экономических характеристик работы системы и накоплениестатистики о качестве работы всех компонентов системы.
На этапе «Сопровождение имодернизация проекта» выполняется анализ собранного статистическою материала, атакже соответствия параметров работы системы требованиям окружающей средыпосредством создаваемой для этих целей комиссии. Полученные результатыпозволяют:
• сделать заключение о необходимости модернизации   всего проекта или его частей;
• определить объемыдоработок, сроки и стоимость выполнения этих работ с целью получения «Техно-рабочего проекта», прошедшего модернизацию.
В случае выявления фактаморального старения проекта комиссией принимается решение о целесообразностипроведения его утилизации или разработки нового проекта.
1.3.3Автоматизированное проектирование ИС (CASE-ТЕХНОЛОГИЯ)
Основныепонятия и классификация CASE-технологий
Термин CASE (Computer AidedSystem/Software Engineering) используется в довольно
широком смысле.Первоначальное значение термина CASE, ограниченное вопросами
автоматизации разработкитолько лишь программного обеспечения, в настоящее время
приобрело новый смысл,охватывающий процесс разработки сложных ИС  в целом.
С самого началаCASE-технологии развивались с целью преодоления ограничений при
использовании структурнойметодологии проектирования (сложности понимания, высокой трудоемкости истоимости использования, трудности внесения изменений в проектные спецификациии т.д.) за счет ее автоматизации и интеграции поддерживающих средств.
Таким образом,CASE-технологии не могут считаться самостоятельными, они только обеспечивают,как минимум, высокую эффективность их применения, а в некоторых случаях ипринципиальную возможность применения соответствующей методологии. Большинствосуществующих CASE-систем ориентировано на автоматизацию проектированияпрограммного обеспечения и основано на  методологиях структурного (в основном) илиобъектно-ориентированного проектирования и программирования, использующихспецификации в виде диаграмм или текстов для описания
системных требований,связей между моделями системы, динамики поведения системы и архитектурыпрограммных средств. В последнее время стали появляться CASE-системы, уделяющиеосновное внимание проблемам спецификации и моделирования технических средств.
ПреимуществаCASE-технологии по сравнению с традиционной технологией оригинальногопроектирования
сводятся к следующему:
  — улучшение качестваразрабатываемого программного приложения за счет средств автоматического
    контроля и генерации;
  — возможностьповторного использования компонентов разработки;
  — поддерживаниеадаптивности и сопровождения ИС;
  — снижение времени созданиясистемы, что позволяет на ранних стадиях проектирования получить
    прототип будущиесистемы и оценить его;
  — освобождениеразработчиков от рутинной работы по документированию проекта, так как при этом
    используетсявстроенный документатор;
  — возможностьколлективной разработки ЭИС в режиме реального времени.
CASE-технология в рамкахметодологии включает в себя методы, с помощью которых на основе графическойнотации строятся диаграммы, поддерживаемые инструментальной средой.
Методология определяетшаги и этапность реализации проекта, а также правила использования методов, спомощью которых разрабатывается проект.
Метод — это процедура илитехника генерации описаний компонентов ЭИС (например, проектирование
потоков и структурданных).
Нотация — отображениеструктуры системы, элементов данных, этапов обработки с помощью специальныхграфических символов диаграмм, а также описание проекта системы на формальных иестественных языках.
Инструментальные средстваCASE — специальные программы, которые поддерживают одну или несколькометодологий анализа и проектирования ИС.
Графические средствамоделирования предметной области позволяют разработчикам атоматизированных ИС внаглядном виде изучать существующую ИС, перестраивать ее в соответствии споставленными целями и имеющимися ограничениями. Все модификации диаграмм,выполняемых разработчиками в интерактивном  (диалоговом) режиме, вводятся всловарь данных, контролируются с общесистемной точки зрения и могут использоватьсядля дальнейшей генерации действующих функциональных приложений. В любой моментвремени диаграммы могут быть распечатаны для включения в техническуюдокументацию проекта.
Графический редактордиаграмм предназначен для отображения в графическом виде в заданной нотации проектируемой ЭИС. Он позволяет выполнять следующие операции:
   — создавать элементыдиаграмм и взаимосвязи между ними;
   — задавать описанияэлементов диаграмм;
   — задавать описаниясвязей между элементами диаграмм;
   — редактироватьэлементы диаграмм, их взаимосвязи и описания.
Верификатор диаграммслужит для контроля правильности построения диаграмм в заданной методологии
проектирования ЭИС. Онвыполняет следующие функции:
     — мониторингправильности построения диаграмм;
     — диагностику ивыдачу сообщений об ошибках;
     — выделение надиаграмме ошибочных элементов.
Документатор проектапозволяет получать информацию о состоянии проекта в виде различных отчетов.
Отчеты могут строиться понескольким признакам, например по времени, автору, элементам диаграмм, диаграммеили проекту в целом.
Администратор проектапредставляет собой инструменты, необходимые для выполнения следующих функции:
            — инициализации проекта;
            — заданияначальных параметров проекта;
            — назначенияи изменения прав доступа к элементам проекта;
            — мониторингавыполнения проекта.
Сервис представляет собойнабор системных утилит по обслуживанию репозитория. Данные утилиты выполняют  функцииархивации данных, восстановления данных и создание нового репозитория.
Наиболее трудоемкимиэтапами разработки ЭИС являются этапы анализа и проектирования, поэтомуCASE-системы как правило, предназначены для автоматизации отслеживания качествапринимаемых проектных решений и подготовки документации. При этом большую рольиграют методы визуального представления информации. Это предполагает построениеструктурных или иных диаграмм в реальном масштабе времени, использованиемногообразной цветовой  палитры, сквозную проверку синтаксических правил.
Стратегия выбораCASE-систем для конкретного применения зависит как от целей и потребностейсамого проекта, так и от квалификации вовлеченных в процесс проектированияспециалистов. В большинстве случаев одно средство  не может обеспечить всепотребности проекта. Разработчики, как правило, применяют набор средств.Например, одно средство наилучшем образом подходит для анализа, а другое- дляпроектирования систем.
В зависимости отподдерживаемой методологии проектирования различают CASE-системы функциональноструктурно-ориентированные и объектно-ориентированные.
Наиболее известнымиCASE-средствами для моделирования деловых процессов относятся ERwin, BPwin,Silverrun,
OracleDesigner, Rational Rose и др. Основыфункциональной возможности инструментальных средств структурного
моделирования деловыхпроцессов будут рассмотрены на примере CASE-средства BPwin.
Моделированиев BPwin.
BPwin имеет достаточнопростой и интуитивно понятный интерфейс пользователя. При запуске BPwin поумолчанию
появляется основнаяпанель инструментов, палитра инструментов (вид которой зависит от выбраннойнотации).
Модель в BPwinрассматривается как совокупность работ, каждая из которых оперирует с некоторымнабором данных.
IDEF0 (IntegrationDefinition for Function Modeling)- на начальных этапах создания ИС необходимопонять как работает организация, которую собираются автоматизировать. С точкизрения функциональности систем наиболее удобным языком моделированиябизнесс-процессов (БП) является IDEF0, где БП представляется в виде наборавзаимодействующих между собой функции-работ, обеспечиваемых информационными,людскими и производственными ресурсами, потребляемыми каждой функцией.
Процесс моделированиясистемы IDEFO начинается с создания контексной диаграммы — диаграммы наиболееабстрактного уровня описания системы в целом (рис.5.1).
DFD (Data FlowDiagraming)- движение потоков информации (документооборота) в системе.Диаграммы DFD могут дополнить то, что уже отражено в модели IDEF0 ,  посколькуони описывают потоки данных, позволяя проследить, каким образом происходит
 обмен информации междуфункцими внутри системы.
IDEF3 – анализ БП с точки зренияпоследовательности выполнения работ. С помощью IDEF3 можно получить еще более точную картину ИС. Этотметод привлекает внимание к очередности выполнения событий. В IDEF3  вложены элементы логики, чтопозволяет моделировать и анализировать альтернативные сценарии развитиябизнес-процесса.
Моделированиеданных
Успех любого приложениязависит от того, насколько хорошо смоделирована и разработана БД (Б1), чтоставит эту разработку в центр внимания.
БД создается в несколькоэтапов, на каждом из которых необходимо согласовывать структуру данных сзаказчиком и, что самое важное, подвергнуть созданную структуру данныхэкспертизе внутри группы, которая создает систему. Поэтому представление данныхдолжно быть простым и понятным всем заинтересованным лицам.
Разработка БД выполняетсяс помощью моделирования данных. Цель моделирования данных состоит в обеспеченииразработки ИС концептуальной схемы БД в форме одной модели или нескольких локальныхмоделей, которые относительно легко могут быть отражены в любую систему БД.Наиболее распространенным средством моделирования данных (представления БД) является диаграмма «сущность-связь» (Entity-Relationship), которая также известна как ER- диаграмма (или ERD).
ER- диаграммы был приняты в качествеосновы для создания стандарта IDEFIX.Предварительный вариант этого стандарта был разработан в военно-воздушных силахСША и предназначен для увеличения производительности при разработкекомпьютерных систем. В 1981 г. Этот стандарт был формализован и опубликованорганизацией ICAM (Integrated Computed Aided Manufacturing), и с тех пор является наиболеераспространенным стандартом для создания моделей БД по всему миру.
Базовыепонятия ERD
Сущность (Entity) – множествоэкземпляров реальных или абстрактных объектов (людей, событий, состояний, идей,предметов и др.), обладающих общими атрибутами или характеристиками. Любойобъект системы может быть представлен только одной сущностью, которая должнабыть уникально идентифицирована. При этом имя сущности должно отражать тип иликласс объекта, а не его конкретный экземпляр (например, АЭРОПОРТ, а неВНУКОВО).
Каждая сущность должнаобладать уникальным идентификатором. Каждый экземпляр сущности долженоднозначно идентифицироваться и отличаться от всех других экземпляров данноготипа сущности. Каждая сущность должна обладать некоторыми свойствами:
   — иметь уникальноеимя; к одному и тому же имени должна всегда применятся одна и та жеинтерпретация;  одна и та же интерпретация не может применяться к различнымименам, если только они не являются псевдонимами;
   — иметь один илинесколько атрибутов, которые либо принадлежат сущности, либо наследуются черезсвязь;
   — иметь один илинесколько атрибутов, которые однозначно идентифицируют каждый экземплярсущности.
Каждая сущность можетобладать любым количеством связей с другими сущности модели.
Связь (Relationship) – поименованнаяассоциация между сущностями, значимая для рассматриваемой предметной области.Связь – это ассоциация между сущностями, при которой каждый экземпляр однойсущности ассоциирован с произвольным (в том числе нулевым) количествомэкземпляров второй сущности, и наоборот.
Атрибут (Atribute) –любая характеристика сущности, значимая для рассматриваемой предметной областии предназначена для квалификации, идентификации, классификации, количественнойхарактеристики или выражения состояния сущности. Атрибут представляет типхарактеристик или свойств, ассоциированных с множеством реальных илиабстрактных объектов (людей, мест, событий, состояний, идей, предметов и т.д.).Экземпляр атрибута – это определенная характеристика отдельного элементамножества. Экземпляр атрибута определяется типом характеристики и ее значением,называемым значением атрибута. На диаграмме «сущность-связь» атрибутыассоциируются с конкретными сущностями. Таким образом, экземпляр сущностидолжен обладать единственным определенным значением для ассоциативногоатрибута.
ПроектированиеБД при помощи Erwin
Наиболеераспространенными методами для построения ERD является метод Баркера и мтод IDEF1.
Метод Баркера основан нанотации, предложенной автором, и используется в case- средства Oracle Designer.
Метод IDEF1 основан на подходе Чена и позволяетстроить модель данных, эквивалентную реляционной модели в третьей нормальнойформе. На основе совершенствования метода EDEF1 создана его новая версия –IDETIX, разработанная с учетом таких требований, какпростота для изучения и возможность автоматизации.
IDEFIX –диаграммы используются в рядераспространенных case-средств, вчастности Erwin, Design/IDEF/
Функциональная модельбизнес-процесса, представленная в BPwin, является основой для построения модели данных. Хорошим инструментом длятакого построения является ErWin– средство разработки структуры БД. При этом функциональная ERWinмодель используется в качествепроектной документации.
ERWin имеет удобный графическтй Windows-интерфейс, инструменты дляпостроения ER-диаграмм, редакторы для созданиялогического и физического описания модели данных, а также поддержку многихреляционных СУБД (в том числе и Access)/ERWin поддерживает два уровняпредставления и моделирования – логический и физический. На логическом уровнемодель БД описывается в терминах, наиболее приближенных к предметной области,не определяются типы данных, не подразумевается использование конкретной СУБД.Типы данных, целевая СУБД  и т.д. определяются на физическом уровне.
1.3.4Реинженеринг бизнес-процессов и проектирование корпоративной ИС
Современные предприятия(компании, корпорации) имеют сложную структуру, обусловленнуюмногоуровневностью  подразделений, большим числом кооперативных связей спартнёрами. При этом возрастает динамичность деловых или бизнес-процессов.Связанная с постоянно изменяющимися потребностями рынка. В этих целях вменеджменте предприятий происходит смещение акцентов с управления  отдельнымиресурсами и соответственную функциональными подразделениями на управлениесквозными бизнес-процессами, связывающим воедино деятельность взаимосвязанныхподразделений предприятия.
Основыреинженеринга бизнес-процессов на основе корпоративной ИС
Под бизнес-процессом (БП)будем понимать совокупность взаимосвязанных операций (работ) по изготовлениюготовой продукции или выполнению услуг на основе потребления ресурсов. При этомв ходе управления БП все материальные, финансовые и информационные потокирассматриваются во взаимодействии (рис. 3).
/>
Рис.3.Материальные, финансовые и информационные потоки бизнес-процесса
В совокупности АИС важноеместо занимают автоматизированные системы управления предприятиями, которыеназывают корпоративными ИС, подчёркивая их направленность на решение широкогокруга информационно-управленческих задач.
Разработка корпоративныхИС, встраиваемых новых ИТ в бизнес-процессы организация, привело квозникновению так называемых киберкорпораций (рис. 3.1),  постоянно и гибкореконструирующих свой бизнес.
Это встраивание являетсяоснованием для переосмысления и переконструктизации самих бизнес-процессов даютвозможность поведения инженеринга и реинженеринга бизнес-процессов (РБП).
Организационный анализкомпании (предприятия) на основе инженерингового подхода проводится поопределённой схеме с помощью полной бизнес-модели компании. Последняярассматривается как целевая, открытая, социально-экономическая система,принадлежащая иерархической совокупности внешних подсистем (рынок,государственные учереждения и пр.) и внутренних подсистем (отделы, цеха,бригады и пр.).
Возможности компанииопределяются характеристиками её структурных подразделений и организацией ихвзаимодействия, что приводит к построению бизнес-модели предприятия  черезописание моделей взаимодействия с внешней средой, т. е. к определению миссиикомпании.
Капитал корпорации/>
Основные фонды, оборотные средства, связи с партнёрами, нематериальные активы  

                                                                                     Бизнес-платформа
                                                                                     корпорации/>
Миссия предприятия, бизнес-стратегия, рынки, технология основного производства  

ИС как
основная
действу
Сотрудники (директор, менеджер, консультант и др.)
Бизнес-архитектура (программы выпуска конкретных товаров и оказания услуг, оргструктуры, процессы управления, стимулы и др.)
ИТ-платформы и ИТ-архитектура, в том числе:
АРМы сотрудников (функции: ведение учёта, справки, документооборот, поддержка принятия решений, планирование, доступ ко всей нужной информации), обеспечение АРМов: БД, сети, серверы и другие компоненты ИТ-архитектуры   ющая
часть 
 киберкор
корпорации

Рис. 4.Трёхслойная схема современного предприятия – «киберкорпорации»
Миссия – это во-первых,деятельность, осуществляемая предприятием для того, чтобы выполнить функции,для которых оно было учреждено,- представление заказчикам продукта или услуг.Во-вторых, — механизм, с помощью которого предприятие реализует свои цели изадачи.
Определение миссиипозволяет сформировать дерево целей компании – иерархические списки уточнения идетализации миссии.
При этом компания можетзанять в партнёрской цепочке создаваемых ценностей оптимальное место, где еёвозможности и потенциал будут использоваться наилучшим образом. Это даётвозможность сформировать бизнес-потенциал компании – набор видов коммерческойдеятельности, направленной на удовлетворение потребностей сегментов рынка.
Бизнес-потенциал, в своюочередь, определяет функциональная компания – перечень бизнес-функций, функцийменеджмента и функций обеспечения, требуемых для поддержания на регулярнойоснове указанных видов коммерческой деятельности.
Проектирование таких ИС(ранее определяемых в отечественной практике как АСУП или ОАСУ) всегдасодержало декларации о включении человека в эти системы. Если для некоторойинформационно-справочной системы общего назначения её пользователь мог (пусть снатяжкой) выступать как элемент, внешний по отношению к системе, торассматриваемые ИС по своей сути – человеко-машинные информационно-управляющиесистемы.
Теперь, когда в центрбизнес-инженеринга ставится временная поддержка, усиление информационных ианалитических возможностей деятельности каждого работника, какое либо отделениеИС от функционирования предприятия в целом становится неприемлемым. В силуэтого, в процессах проектирования целесообразно считать, сто корпоративная ИСсоставляет информационно-управляющую систему, включающую бизнес архитектурупредприятия, его персонал, используемую ИТ-архитектуру, и является действующейчастью киберкорпорации.
Это положение позволяетточнее определить расширяющиеся границы корпоративной ИС. Следует исходить изтого, что в виде ИС проектируется часть предприятия, которая непосредственноосуществляет «бизнес», т. е. организационно-производственную деятельность.
С учётом этого, в болеешироком смысле, новое системное проектирование (НСП) является методологиейсоединения постоянного бизнес-реинженеринга и новых информационных технологий(ИТ).
Согласно определению М.Хаммера и Д. Гемпи, внесли значительный вклад в НСП, реинженерингбизнес-процессов (BPR- Business process reenginering) определяется как «фундаментальноепереосмысление и радикальное перепроектирование БП для достижения коренныхулучшений в основных показателях деятельности предприятия».
Целью реинженерингабизнес-процессов (РБП) является системная реорганизация материальных,финансовых и информационных потоков, направленная на упрощение организационнойструктуры, перераспределение и минимизацию использования различных ресурсов,сокращение сроков реализации потребностей клиентов, повышение качества ихобслуживания.
Для компаний с высокойстепенью диверсификации бизнеса, многообразием партнёрских связей реинженерингбизнес-процессов обеспечивает решение следующих задач:
— определение оптимальнойпоследовательности выполняемых функций, которое приводит к сокращениюдлительности цикла изготовления и продажи товаров и услуг, обслуживанияклиентов, следствием чего служат повышение оборачиваемости капитала и рост всехэкономических показателей фирмы;
— оптимизацияиспользования ресурсов в различных бизнес-процессах, в результате которойминимизируются издержки и обеспечивается оптимальное сочетание различных видовдеятельности;
— построение адаптивныхбизнес-процессов, нацеленных на быструю адаптацию к изменениям потребностейконечных потребителей продукции, производственных технологий, поведениеконкурентов на рынке и, следовательно, повышение качества обслуживания клиентовв условиях динамичности внешней среды;
— определениерациональных схем взаимодействия с партнёрами и клиентами и, как следствие,рост прибыли, оптимизация финансовых потоков.
Инжинирингбизнес-процессов включает в себя реинженеринг бизнес-процессов, проводимый сопределённой периодичностью, например один раз в 5-7 лет, и последующеенепрерывное улучшение бизнес-процессов путём их адаптации к изменяющейсявнешней среде.
Инжинирингбизнес-процессов выполняется на основе применения инженерных методов исовременных программных инструментальных средств моделирования бизнес-процессовсовместными командами специалистов компании и консалтинговой фирмы.
В соответствии с определениемЕ. Г. Ойхмена и Э. В. Попова:
«Реинженеринг бизнесапредусматривает новый способ мышления – взгляд на построение компании как наинженерную деятельность. Компания или бизнес рассматривается как нечто, чтоможет быть построено, спроектировано или перепроектировано в соответствии синженерными принципами».
Реинженерингбизнес-процессов нельзя отождествлять с решением таких задач, как автоматизацияпроцессов обработки информации, реинженеринг программного обеспечения,реорганизация организационной структуры, улучшение качества продукции и услуг,которые могут решаться самостоятельно и независимо друг от друга. Вместе с темпредполагается их обязательное комплексное решение при инжинирингебизнес-процессов.
Реинженерингбизнес-процессов возможен только на основе интегрированных корпоративныхинформационных систем, которые обеспечивают поддержку управлению деловымипроцессами на всех уровнях. В отличие от канонического подхода к автоматизацииотдельных функций управления в виде локальных АРМов, не изменяющих существующуютехнологию управления, использование корпоративных информационных системпредполагает трансформацию системы управления на основе концепции автоматизацииуправления сквозными бизнес-процессами. Причём адаптация структуры ИС кизменениям потребностей системы управления должна быть непрерывной.
В целом, для пониманиявзаимодействия бизнес-структур и ИТ В. Меллинг описал модель Дж. Хендерсона(рис.5). В этой модели определены:
— основнаябизнес-платформа – это набор стратегий, рынков, предписаний, технологийпродуктов и ресурсов, выбранных предприятием как соответствующий поставленнымцелям;
Основная информационная платформа  
Основная бизнес-платформа                                                 Дано/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />

Приводится к
Рис.5.Модель Дж. Хендерсона (27)
 
— бизнес-архитектура –набор товаров и услуг, организационных структур, процессов управления,распределения ресурсов, ценностей и стимулов, который является необходимым длявнедрения основной бизнес- платформы;
— основная ИТ- платформа– ряд адекватных компьютерных технологий, которые могут быть доступныпредприятию, и способы, которыми эти технологии могут быть использованы дляповышения конкурентоспособности;
— ИТ- архитектура – наборопределённых архитектур и продуктов, выбранный для реализации основной ИТ-платформы, а также инфраструктуры поддержки, уровни квалификации, процессы принятиярешений и административные механизмы, используемые для развёртывания этихархитектур.
Основываясь на этоймодели, можно сделать следующие выводы.
1.        Существуетдвунаправленное воздействие основных бизнес-процессов и ИТ-платформ.
2.        Если основнаябизнес- или ИТ- платформа меняется, то маловероятно, что соответствующаянаследуемая ИТ- архитектура сохраниться.
3.        Соответствиемежду бизнес- или ИТ- архитектурами является решающим фактором успеха, но надостижение этого успеха может уйти значительное время.

                                      2ЭКСПЕРИМЕНТАЛЬНЫЙ РАЗДЕЛ
2.1Формулировка   задачи
В этой главе мырассмотрим достаточно интересную разработку, позволяю­щую автоматизироватьпроцесс составления расписания занятий в учебном заведении (это может быть вуз,колледж, школа и др.). Фактически мы по­пробуем построить информационнуюсистему для эффективного  управления ресурсами. При этом основным ресурсомбудет фонд аудиторий, где мы должны организовать учебный процесс, а в понятиеуправления вкладывает­ся создание разнообразных сервисных функций дляпользователя, необходи­мых ему при составлении расписания учебных занятий,например: создание интеллектуальных форм для ввода данных, представлениеимеющейся информации в виде разнообразных отчетов, удобные возможностикорректиро­вания уже имеющейся информации.
Как вы увидите, решениерассматриваемой задачи приводит к разработке сложного управления информационнойбазой. Целью управления является оптимизация расписания учебных занятий погруппам учащихся, по фонду аудиторий и по преподавателям. В то же время всодержании главы приводится подробный комментарий всех основных программныхконструкций.
Автоматизированная книгавключает в себя множество листов, электронных форм ввода и разнообразныхотчетов. Разработанные алгоритмы позволяют пользователю исключать ошибки ипринимать правильные решения при со­ставлении расписания занятий и подбореаудиторий.
Функциональныевозможности книги рассчитаны на различные категории пользователей. В связи стем, что все читатели книги знакомы с учебным процессом по школе, колледжу иливузу, перечисленные далее основные сервисные возможности разработки должны бытьпонятны:
1)ввод заявок напроведение учебных занятий с помощью электронной формы;
2)подбор свободных(близких по вместимости) аудиторий для занятий;
3)автоматический подбораудитории при проведении занятий по одной дисциплине в нескольких группах (уодного преподавателя);
4)автоматическаяподготовка печатной формы расписания по группам и потокам на базе введенныхзаявок;
5)контроль соответствиячисла студентов и вместимости аудиторий с точки зрения более эффективногоиспользования фонда аудиторий;
6)возможность быстрогополучения информации о свободном фонде аудиторий;
7)удобная возможностькорректировки расписания (в том числе перевод занятий из одних аудиторий вдругие);
8)получение различныхотчетов по информации, содержащейся в заявках
2.1.1 Входныеданные
Вводначальной информации
Понятно, чторассматриваемая разработка требует некоторой начальной информации — о группах, фондеаудиторий и т. д. Фактически необходимы справочники по группам, аудиториям,преподавателям и т. д. Такие данные заносятся на второй лист книги; один извариантов его заполнения представлен на рис. 6.1.
Здесь в столбцы А и Внужно ввести информацию об имеющихся аудиториях (при этом в первый столбецзаносится номер аудитории, а во второй — коли­чество мест в ней). Важныммоментом является то, что информация по ауди­ториям должна вводиться в порядкевозрастания их вместимости. В даль­нейшем это обеспечит подбор классов,максимально близких по числу мест к количеству студентов. 
В столбец С следуетзанести номера учебных недель в семестре (нумерация недель достаточно широкораспространена в учебных заведениях).
В столбце D располагаютсяучебные дни в течение недели, а столбец Е отводится для времени начала иокончания занятий. Так, во второй строке этого столбца отображается времяначала первого занятия, в третьей строке — на­чало второго занятия и т. д. Самизанятия могут быть часовыми или двухча­совыми (пары). Начиная с 21-й строки(того же столбца Е) размещается вре­мя окончания занятий (соответственно, времяокончания первого занятия, затем второго и т. д.). Эта информация в дальнейшемпотребуется для отчета по расписанию (в нем как раз указывается время начала иокончания занятий).
В следующих столбцахрасполагаются другие списки: заявители (это могут быть названия факультетов илифамилии руководителей учебных программ), затем — преподаватели, группы и потоки(с указанием количества учащихся). Количество учащихся потребуется для подбораблизкой по вместимости аудитории. В последнем столбце располагаются названияучебных дисциплин.
Примечание
Пустых ячеек внутрисписков рассмотренных данных быть не должно. Пустая ячейка в столбце для всехприводимых далее процедур является индикатором того, что ниже этой ячейкиданных уже нет.
Таким образом, второйлист книги представляет собой совокупность исходных данных для работы программысоставления расписания и должен заполняться в первую очередь. Все рассматриваемыедалее процедуры используют эту начальную информацию.     
Традиционно в нашихразработках на первом листе рабочей книги располагаются элементы управления,связанные с основными действиями пользова­теля, и здесь также не будетисключения.
Основное содержание первоголиста — регистрация заявок на проведение учебных занятий и аудиторий, которыедля этих занятий выделяются. В верх­ней части листа располагаются элементыуправления (эта область выделена чёрной заливкой). Об этих элементах мыпоговорим позднее, но уже из назва­ний, видимых на рис. 6.2, понятны ихфункции.
Посмотрим теперь наинформацию, расположенную, начиная с четвертой строки листа (третья строкаотводится для заголовков столбцов). Здесь каж­дая строка содержит заявку напроведение определенного занятия — новая заявка вводится в очередную свободнуюстроку на этом листе.
При этом информацию позаявке условно можно разделить на две категории:
1)начальная информация озанятиях (номер, заявитель, преподаватель, день, время, группа, количествостудентов в группе, название дисциплины и номера учебных недель, когда занятиядолжны проводиться);
2)информация обобслуживании данной заявки (обслужена ли она и номер аудитории, выбранной дляпроведения занятий по заявке).
Алгоритм подборааудитории составляет важную содержательную часть в полненной разработки. Здесьучитывается много факторов — наличие групповых (для нескольких групп илипотоков) лекций, наличие последовательных i времени занятий в группе (в этомслучае подбирается одна аудитория — исключения переходов из одной комнаты вдругую) и ряд других факторов.
Так, в каждой строкестолбцы G и Н отводятся для записи информации обслуживании заявки (подобраннойдля неё аудитории). И если аудитор подобрана, то в столбец G программнозаписывается слово „да“, а в следующий столбец вписывается номераудитории.
Фактически, информация напервом листе представляет собой некоторую базу данных. Столбец Номер позволяетввести для каждой заявки поясняют числовой или текстовый номер. При этом дляопределенного блока заявок если потребуется, можно указать один и тот же номер.Номер заявки опреде­ляет ее уникальность, а принадлежность заявки копределенной группе или блоку. Уникальность записи о заявке — это фактическиуникальность каждой строки Microsoft Excel.
Следующие столбцысодержат информацию о заявителе, преподавателе, дне и времени проведениязанятий. Эта информация не требует ручного заполне­ния, а извлекается изпредварительно заполненного второго листа, как опи­сано ранее. Непосредственноввод данных будет выполняться с помощью специально разработанной формы ввода.Например, при вводе фамилии преподавателя мы будем выбирать ее из списка,предварительно заполненного на втором листе.
В столбце F для каждойзаявки указывается количество студентов, которые учатся в данной группе. Этаинформация вносится автоматически после вы­бора названия группы (вы уже видели,что на втором листе присутствуют два связанных столбца — название группы ичисло студентов в ней). В столбцах, начиная с К, отмечаются недели, когдадолжны проводиться занятия по дан­ной заявке. Звездочка в соответствующемстолбце говорит о том, что на этой неделе занятие проводится (на рис. 6.2 длявсех заявок звездочками отмечены занятия на первой и второй неделе).
Нумерация учебных недельявляется типичной для учебных заведений. Это связано с тем, что количествоаудиторных часов для разных дисциплин по учебному плану неодинаково. В связи сэтим какие-то дисциплины в семестре ограничены семью занятиями, а какие-топродолжаются в течение семнадца­ти недель. Что касается нулевой недели, то еевведение относится к ситуации, когда день начала семестра расположен в серединенедели (подобную неде­лю иногда называют нулевой).
Рассмотрим элементыуправления на рис. 6.2. Это три кнопки, которые на листе расположены в областипервых двух строк. В табл. 6.1 приведены зна­чения их свойств Name и Caption.
Понятно, что заполнениеинформации о заявке и тем более подбор для нее подходящей аудитории требуютнекоторой интеллектуальности алгоритма.
Так, программа должнаобнаруживать возможный ввод некорректных заявок. Например, при вводе очереднойзаявки преподаватель может быть в указан­ное время уже занят. Другая возможнаяситуация — для указанной в заявке группы уже зафиксировано другое занятие в этовремя. Все эти и другие по­добные ситуации создаваемая разработка должнаотслеживать. При этом ав­томатическая блокировка подобных накладок нетребуется, т.к. возможно, они закладываются в расписание не случайно.
Для исключения ручногоизменения информации на первом листе в книге предусматривается установка защитыэтого листа от изменений. А такие тех­нические действия, как формирование новыхзаявок и подбор аудитории для них, выполняются с помощью экранных форм. Приэтом программные про­цедуры этих форм самостоятельно снимают защиту с листа. Вследующем разделе мы рассмотрим одну из экранных форм.
                                             
2.1.2Выходные данные
Сводный отчет по загрузке.Фактически мы по­пробуем построить информационную систему для эффективного управления ресурсами. При этом основным ресурсом будет фонд аудиторий, где мыдолжны организовать учебный процесс, а в понятие управления вкладывает­сясоздание разнообразных сервисных функций для пользователя, необходи­мых ему присоставлении расписания учебных занятий, например: создание интеллектуальныхформ для ввода данных, представление имеющейся информации в виде разнообразныхотчетов, удобные возможности корректиро­вания уже имеющейся информации.
2.1.3 Схема иописание схемы алгоритма решения задачи
Перейдем к рассмотрению первого листа
Традиционно в наших разработках напервом листе рабочей книги располагаются элементы управления, связанные сосновными действиями пользователя, и здесь также не будет исключения.
Основное содержание первого листа —регистрация заявок на проведение учебных занятий иаудиторий, которые для этих занятий выделяются. В верхней части листа располагаются элементы управления(эта область выделена серойзаливкой).
Посмотрим теперь на информацию, расположенную, начиная счетвертой строки листа (третья строка отводится для заголовков столбцов). Здеськаж­дая строка содержит заявку напроведение определенного занятия — новая заявка вводится в очередную свободнуюстроку на этом листе.
При этоминформацию позаявке условно можно разделить на две категории:
□   начальнаяинформация о занятиях (номер, заявитель, преподаватель, день, время, группа, количество студентов вгруппе, название дисциплины и номера учебных недель, когда занятия должныпроводиться);
□   информация обобслуживании данной заявки (обслужена ли она и номер аудитории, выбранной дляпроведения занятий по заявке).
Алгоритм подбора аудитории составляет важную содержательнуючасть  выполненной разработки. Здесь учитывается много факторов — наличиегрупповых (для нескольких групп илипотоков) лекций, наличие последовательных во времени занятий в группе (вэтом случае подбирается одна аудитория — для исключенияпереходов из одной комнаты в другую) и ряд других факторов. Так, вкаждой строке столбцы Gи Н отводятся для записи информации об обслуживании заявки (подобраннойдля нее аудитории). И если аудитория подобрана, то в столбец G программно записывается слово»да", а в следующий столбец вписывается номер аудитории.
Фактически,информация на первом листе представляет собой некоторую базу данных. Столбец Номер позволяет ввести для каждой заявкипоясняющий числовой или текстовый номер. При этом для определенногоблока заявок, если потребуется, можноуказать один и тот же номер. Номер заявки опреде­ляет не ееуникальность, а принадлежность заявки к определенной группе или блоку.Уникальность записи о заявке — это фактически уникальность каждой строки Microsoft Excel.
Следующие столбцы содержат информацию о заявителе, преподавателе, дне и времени проведения занятий. Эта информация нетребует ручного заполне­ния, а извлекается из предварительнозаполненного второго листа, как опи­сано ранее. Непосредственно ввод данныхбудет выполняться с помощью специальноразработанной формы ввода. Например, при вводе фамилии пре­подавателя мыбудем выбирать ее из списка, предварительно заполненного на втором листе.
В столбце F для каждойзаявки указывается количество студентов, которые учатся в данной группе. Эта информация вносится автоматически после вы­бора названия группы (вы уже видели, что на второмлисте присутствуют два связанныхстолбца — название группы и число студентов в ней). В столбцах, начиная с К,отмечаются недели, когда должны проводиться занятия по дан­ной заявке.Звездочка в соответствующем столбце говорит о том, что на этой неделе занятие.
Нумерация учебных недель является типичной дляучебных заведений. Это связано с тем, что количество аудиторных часов дляразных дисциплин по учебному плану неодинаково. В связи с этим какие-тодисциплины в семестре ограниченысемью занятиями, а какие-то продолжаются в течение семнадца­ти недель. Что касается нулевой недели, тоее введение относится к ситуации, когда день начала семестра расположенв середине недели (подобную неде­лю иногда называют нулевой).
Рассмотрим элементы управления. Это три кнопки, которые на листе расположены в области первых двух строк. Втабл. 7 приведены зна­чения их свойств Name и Caption.
 
Таблица 7. Значения свойств кнопок
Name
Caption Input_New Ввод новой заявки Input_auditoria Подбор аудитории De_lete Снятие с обслуживания
Принято, что заполнение информации о заявке и тем более подбор для нееподходящей аудитории требуют некоторой интеллектуальности алгоритма.
Так, программа должна обнаруживать возможный ввод некорректных заявок.Например, при вводе очередной заявки преподаватель может быть в указанное времяуже занят. Другая возможная ситуация — для указанной в заявке группы ужезафиксировано другое занятие в это время. Все эти и другие подобные ситуациисоздаваемая разработка должна отслеживать. При этом автоматическая блокировка подобных накладок не требуется,т. к. возможно они закладываются в расписание не случайно.
Для исключения ручного изменения информации на первом листе в книгепредусматривается установка защиты этого листа от изменений. А такиетехнические действия, как формирование новых заявок и подбор аудитории дляних,выполняются с помощью экранных форм. При этом программные процедуры этих формсамостоятельно снимают защиту с листа. В следующем разделе мы рассмотрим однуиз экранных форм.
Сводный отчет по загрузке
В этом разделе мы рассмотрим еще однувозможность работы с расписанием. Рассмотрим лист с названием Отчет 2.Фактически это отчет, кото­рый позволяет показать загруженность фонда аудиторийпо заявителям (кто используетфонд аудиторий больше, а кто меньше).
Если фонд аудиторий ограничен и междуразными факультетами возникают противоречия по поводу его загрузки, представляетинтерес такой сводный отчет, в котором наглядно отражены занятия по различнымфакультетам. Эта ситуация вполне типична для сегодняшнего дня, когда в вузах, нарядусбюджетным обучением, есть и коммерческое. Многие возникающие вопро­сы по фондуаудиторий могут быть успешно решены с помощью предлагае­мого в этом разделе отчета.
На листе по горизонтали в пятой ишестой строках вы­водятся дни и время начала занятий (фактически в этихстроках перечислены все занятия в течение недели). В первом столбце указаны всеаудитории, ко­торыми располагает учебное заведение. И если в определенный деньи кон­кретное время в аудитории по расписанию поставлено занятие, то в соответ­ствующей ячейкеэто отмечается определенной заливкой (для каждого факультета свойцвет заливки) и отображается количество студентов..
Рассмотрим программный код, реализующийпостроение данного отчета, и в качестве первого шага прокомментируем элементыуправления.
В левом верхнем углу находится поле сосписком (Name = L1). Этот элемент при открытии книгиавтоматически заполняется информацией об учебных неделях (процедура workBook_open). Справа отполя со списком  располагается  кнопка Заполнить (Name = coml),позволяющая заполнить лист информацией. Врезультате щелчка по этой кнопке ячейки листа заполняются информацией (количествозанимающихся студентов и заявитель).
На этом листе мы легко можем посмотреть информацию овместимости конкретной аудитории. Для этого нужно лишь щелкнуть по ячейке,содержащей номер аудитории.
Теперь прокомментируем некоторые программные конструкции, выполняемые пощелчку на кнопке Заполнить. Полный текст процедуры обработки щелчка по этой кнопке приведен в приложении 1.В начале процедуры в массиве colors устанавливаются цвета для заливки ячеек с заявкамиразличных факультетов, что обеспечивает наглядность представления информации.
После установки заливки ячеек (определенный цвет связан с конкретнымзаявителем) сначала выполняется очистка области для вывода:
Range(«a5:ZZ200»).Select Selection.ClearContents
Также устанавливается белый цвет заливки для области, где будетприсутствовать информация о занятиях:
Range(«b7:ZZ200»).Select
 With Selection.Interior
.ColorIndex = 0
.Pattern = xlSolid
End With
После этого подсчитывается количество заявителей навтором листе:
N_Boss = О
WhileWorksheets(2).Cells(N_Boss + 2, 6).Value ""
N_Boss = N_Boss + 1
 Wend
В качестве следующего действия на лист выводятся названия заявителей исоответствующие им цвета. Для вывода этой информации используются первая ивторая строки листа:
For i =  1 То N_Boss
Cells(2, 2 + i * 2).Select WithSelection.Interior
.ColorIndex = colors (i)
.Pattern = xlSolid
End With
Cells (1, 2 + i * 2).Value = Worksheets(2).Cells(i +1, 6).Value
Next
Следующийфрагмент позволяет установить в пятой и шестой строках подписи время начала занятий:
St = 1
For I = 1 To N_Day
         For j = 1 ToN_Times
                   St = St+ 1
Cells (5, st).Value = Worksheets (2).Cells (i = 1, 4).Value
Cells (6, st).Value = Worksheets (2).Cells (i = 1, 5).Value
Next
Next
На этом подготовительная часть дляформирования отчета завершена, и далее заполнения отчета в циклепросматриваются все заявки. Если заявка обслужена (для нее подобрана аудитория)и на указанной неделе занятие по  заявке проводится, то далее онаанализируется. В противном случае иного отчета она не рассматривается.
В следующем фрагменте производитсявычисление номера строки, где она а быть отражена:
Stroke = 0
For I = 1 To nom
         If N_Ayd = CStr(Cells(i + 6, 1).Value) Then
                   Stroke = i + 6
                   Exit For
         End if
Next
Аналогичновычисляется значение столбца на листе АФ, где необходимо отобразитьотданную заявку:
For m = 1 To DaysTimes
         If CStr (Workssheets(1).Cells(i, 4).Value)_
                   = CStr (Cells(5, 1 + m). Value)Then
              If CStr (Workssheets(1).Cells(i,5).Value)_
                   = CStr (Cells(6, 1 + m). Value)Then
                   Stolbec = 1 + m
                   Exit For
             End If
           End If
Next
Таким образом, мы определили ячейку налисте, где следует отразить ин­формацию по данной заявке.
Следующее действие — закраска ячейки цветом тогофакультета, к которому даннаязаявка относится:
Name_Boss = CStr(Worksheets(1).Cells(i,2).Value)
For nomer = 1 To N_Boss
If Name_Boss =CStr(Worksheets(2).Cells(nomer + 1, 6).Value) Then
Exit For
End If
Next
Cells(stroka, stolbec).Select WithSelection.Interior
.ColorIndex = colors(nomer)
.Pattern = xlSolid End With
Теперь осталось в выбранной ячейке указать количество студентов, зани­мающихся в аудитории. Программно это реализуетсяс помощью одной строки:
Cells(stroka,   stolbec).Value = Cells(stroka,   stolbec).Value+
 Worksheets(1).Cells(i,   6).Value
Мы говорили, что на этом листе можно посмотреть информацию о вмести­мости аудитории. Для этого разработана следующаяпредопределенная про­цедура, котораявыполняется при выделении той или иной аудитории. В ре­зультатенеобходимая информация выводится в окно для сообщений (листинг 21).
Листинг21. ПредопределеннаяпроцедураselectionСhaтge
Private Sub Worksheet_SelectionChange(ByVal Target AsRange)
 '   Вычисление  строки и столбца выделенной ячейки
Stroka = ActiveCell.Row
Stolbec = ActiveCell.Column
If Stolbec  1 Then
‘  Информационное окно видимо только при выделении первого столбца
Infl.Visible = False
Elself Stroka > 6 Then
 Infl.Visible = True
Infl.Text  =   «Вместимость   „   + _
Str(Worksheets(2).Cells(Stroka -  5,   2))     +  “чел»
End If
End Sub
Отчет поресурсам фонда аудиторий
Важным представляется ответ на вопрос: каков свободный ресурс аудиторий вопределенном интервале учебных недель? Ответ на него можно получить на девятомлисте книги Microsoft Excel, который называется Отчет 3. Погоризонтали на этом листе в пятой и шестой строках выводятся дни и время началазанятий (фактически в этих строках перечислены все занятия в течение недели), ав первом столб­це указаны все аудитории,которыми располагает учебное заведение. В этом плане начало составления отчетаничем не отличается от предыдущего.
Однако теперь в сводной таблице выводится количество занятий в аудитори­ях в указанном интервале недель. При этом разнаязагруженность (различное количество занятий в выбранном интервале)дополнительно выделяется раз­ными цветами.На листе реализованы  градации цвета в зависимости от за­груженности:
□  максимальнаязагруженность;
□  загруженность выше средней;
□  загруженность ниже средней;
□  в выбранноминтервале недель нет занятий.
В этом случае пользователю часто достаточно взглянуть на отчет, чтобы оп­ределить, есть ли аудитории, скажем дляорганизации дополнительной учеб­ной программы.
Кроме цветовой и числовой информации в ячейках можно получить болеедетальную информацию. Например, чтобы уточнить, какими занятиями аудиториявсе-таки занята, потребуется всего лишь двойной щелчок на вы­бранной ячейке. На листе откроется текстовоеокно, отображающее все заня­тия, соответствующие выбранной ячейке.
Примечание
Чтобы убрать это текстовое окно с экрана, нужно сделатьв нем двойной щелчок.
На листе для работы с отчетом заложена еще однаинтересная возможность, связаннаяс двумя кнопками — Подготовить к перемещению иПереместить. Спомощью этих кнопок можно перемещать занятия из одних аудиторий в другие. Для этого нужно выделитьисходную ячейку и щелкнуть на кнопке Подготовить к перемещению — информация о заявке по указанной ячейке зафиксируется вовнутренней структуре данных (буфере).После этого пользователю нужно лишь выделить ячейку, куда он намереваетсяперенести занятие, и щелкнуть на кнопке Переместить.
В результате таких простых действий вотчете произошли изменения на пер­вом листе заявок. Исходная заявка удалена, но при этомпоявилась.
Заметим, что алгоритм переноса заявки в новую аудиторию характеризуется определенным «интеллектом». Передпереносом заявки сначала анализирует­ся возможность переноса — нет ли вэтой аудитории занятий в рассматри­ваемыеинтервалы недель. Например, если мы переносим две заявки (в одной ячейке может быть несколько занятий, если онипроводятся в разные недели) из одной аудитории в другую, то в случаеневозможности переноса одной из них эта заявка остается без изменений.
Рассмотренный отчет, таким образом, кроме получения наглядной своднойинформации по загрузке, позволяет оперативно менять аудитории в состав­ленномрасписании. Из отчета при необходимости можно быстро найти свободные классы длязанятий и планировать циклы дисциплин на опреде­ленное время.
2.1.3.1 Блок– схема  интерфейса
/>

                                                                 1
/>

/>БД
/>

2
/>

/>/>/>/>таблица
3
/>

/>/>/>/>связи
4/> /> /> /> /> /> /> /> />

/>/>/>/>сервис
5                                                   /> /> /> /> /> /> /> /> />

/>/>Справка    6/> /> /> /> /> /> /> /> />

/>7
/>/>/>выход                                                                                           8/> /> /> /> /> /> /> /> />

2.1.3.2.Описание блок – схемы интерфейса
1.      НАЧАЛО
2.      Проверка условия, еслиусловие истинно, то идем на блок _
3.      Проверка условия, еслиусловие истинно, то идем на блок _
3.      Проверка условия, еслиусловие истинно, то идем на блок _
4.      Проверка условия, еслиусловие истинно, то идем на блок _
5.      Проверка условия, еслиусловие истинно, то идем на блок
6.      Проверка условия, еслиусловие истинно, то идем на блок _
7.      Проверка условия, еслиусловие истинно, то идем на блок _
8.      КОНЕЦ
2.2 Описаниепроцесса отладки программы
Ошибки при работе над проектом,особенно сложным и большим, неизбежны. Поэтому при создании проекта важнымэтапом является отладка приложения. Отладка — непременный этап работы над любымпроектом. Как правило, это проверка функционирования проекта и исправлениеошибок перед передачей его на тестирование. Для выполнения отладки в VisualBasic 6 существует набор специальных инструментов, который рассматривается вэтой главе. Редактор кода.
Редактор кода программыVisual Basic 6 — это достаточно мощный текстовый редактор с большим   количествомвозможностей   и   являющийся   основным   инструментом программиста длясоздания и отладки приложения. В окне редактора представлены следующие элементыуправления:
 раскрывающийся списокObject (Объект) — обеспечивает выбор объектов приложения.  Этот списокнаходится в левом верхнем углу окна редактора. При выборе объекта в этом спискесинхронно изменяется содержимое списка Procedure;
раскрывающийся списокProcedure (Процедура) дает возможность выбора членов объекта (событий) иавтоматического вывода процедуры или шаблона для выбранного члена в окнередактора. Этот список находится справа от списка Object; кнопка Procedure View(Просмотр процедур) — включает режим просмотра процедур для каждого объекта поотдельности. Располагается в левом, нижнем углу окна редактора;
кнопка Full Module View(Полный просмотр модулей) — включает режим работы полного просмотра процедур,при котором в окне редактора показаны все процедуры, разделенные горизонтальнойлинией (если установлен соответствующий флаг настройки). Располагается в левомнижнем углу окна редактора;
горизонтальная ивертикальная полосы прокрутки — позволяют просмотреть текст, который непомещается в текущем окне редактора.
Как можно понять изсписка элементов управления, редактор кода работает в двух режимах: в режимепросмотра всего текста приложения (полный просмотр процедур) и в режимепросмотра процедур по отдельности (просмотр отдельных процедур). Редактор кодавызывается автоматически при двойном щелчке мыши на форме проекта или командой Code(Код) меню View (Вид). Для каждого элемента проекта (формы или программногомодуля) открывается отдельное окно редактора кода. Соответственно это окнопоявляется в списке окон меню Window (Окно). В большом проекте удобнее всегоработать из Проводника проекта. В этом случае редактор кода вызывается кнопкойView Code (Просмотр кода) панели инструментов окна Проводника.
2.3Характеристика программы
Данная программа написанана языке Visual Basic 6.0 и представляет собой 1 приложением, предназначенныхвыполнять все функции, которые требуются заданию. В конечный продукт  входит 1  откомпилированное  приложения,  размер  которого составляет соответственно892 байт. Для работы необходимы следующие системные ресурсы: Прежде чемприступить к работе с данной системой, необходимо иметь: компьютер, совместимыйс IBM PC с тактовой частотой процессора не менее 1500 MHz; оперативную память256 Mb; жесткий диск объемом 40 Mb; видеоадаптер SVGA с объемом оперативнойпамяти 128 Mb.
2.4Контрольный пример
/>
2.5 Инструкцияпользователя
Для запуска программынеобходимо выполнить следующие действия. Нажать кнопку пуск в панели задач; Инаитии программу Visual Basic 6.0.
После этого на экранепрограммы появляется с краткой информацией о ней самой в данном режимепользователю требуется открыть БД. Это можно сделать 2-мя способами: Через менюФайл- Открыть Базу Данных; щелкнуть в панели инструментов пиктограмму открытияБД.
В том и другом случаепрограмма выведет окно в котором пользователь может выбрать или ввести имя ипуть к БД. По нажатию кнопки «ОК» программа открывает БД после этого становитсядо этого не доступная пункт меню «База данных» и все остальные пиктограммыпанели инструментов доступными. Программа готова к работе Строка меню состоитиз следующих пунктов:
Файл — служит для работыс файлами за режимом закрепляются падающие меню: Открыть БД;
Закрыть БД — послевыполнения этого пункта меню программа возвращается в исходное
положение;
Выход;
Таблица — служит дляработы с БД. За режимом закрепляется падающие меню:
Таблица «спец меню»;
Таблица «дополнительнаяинформация»;
Сервис служит для работыс запросами по БД. За режимом закрепляется падающие
меню:
Создание БД — послевыполнения этого пункта меню запускается второе приложение генерации БД.
Ввод запроса — после выполненияэтого пункта меню выводится окно с запросом для поиска.
Окно — служит для работыс окнами. ЗА режимом закрепляется падающие меню:
Закрыть все — позволяетзакрыть все открытые окна. Каскад — позволяет расположить окна наложением;Мозаика — равномерное деление окон на экране; Выстроить значки упорядочитьсвернутые окна. Панель инструментов состоит из следующих пентаграмм Открыть БД;Закрыть БД; Запрос; Выход;
В панели состояниявысвечиваются текущие время и дата.

                                                           ЗАКЛЮЧЕНИЕ
 
В данном Курсовом проекте былразработан программный пакет, позволяющий автоматизировать процесс работы «разработка информационно-поисковой системы по подбору аудиторий.» Продукт былреализован  на языке VBA  всреде программирования MS Excel.
Для функционирования его наперсональном компьютере не обязательно наличие программы Visual Basic 6.0, т.к.для начала работы программы необходимо лишь запустить файл проекта.
Программа достаточно проста виспользовании, поэтому приемлема для любого пользователя.

Приложение1
 
Процедуры листаотчет 2
Private Sub CommandButton1_Click()
Dim colors(10) As Integer
colors(1) = 4  ' Установка цветов
colors(2) = 22 ' для обозначенияфакультетов
colors(3) = 19
colors(4) = 24
colors(5) = 26
colors(6) = 40
colors(7) = 43
colors(8) = 44
colors(9) = 6
colors(10) = 28
If L1.ListIndex = -1 Then ' Выход,если не выбрана неделя
   MsgBox (" Не выбрана неделя")
   Exit Sub
End If
Range(«a5:AZ100»).Select' Очистка областиданных
Selection.ClearContents
' Подсчет количества учебный дней внеделе
N_Day = 0
WhileWorksheets(2).Cells(N_Day + 2, 4).Value ""
    N_Day = N_Day + 1
Wend
' Подсчет количества занятий втечение дня
N_Times = 0
WhileWorksheets(2).Cells(N_Times + 2, 5).Value ""
    N_Times = N_Times + 1
Wend
' Подсчет количества аудиторий
N_Ayd = 0
WhileWorksheets(2).Cells(N_Ayd + 2, 1).Value ""
    N_Ayd = N_Ayd + 1
Wend
DaysTimes = N_Day *N_Times
N_Boss = 0 ' Подсчет заявителей
WhileWorksheets(2).Cells(N_Boss + 2, 6).Value ""
    N_Boss = N_Boss + 1
Wend
Range(«b7:AZ100»).Select
With Selection.Interior ' Заливкабелым цветом области вывода
    .ColorIndex = 0
    .Pattern = xlSolid
End With
For i = 1 To N_Boss
  Cells(2, 2 + i *2).Select
  With Selection.Interior' Установка обозначений цветов
     .ColorIndex =colors(i) ' заявителей
     .Pattern = xlSolid
  End With
 ' Установка подписей заявителей длясоответствующих цветов
 Cells(1, 2 + i * 2).Value =Worksheets(2).Cells(i + 1, 6).Value
Next
 ' Подсчет количества строк с завкамина 1-м листе
N = 0
WhileWorksheets(1).Cells(N + 4, 1).Value ""
      N = N + 1
Wend
stroka = 7 ' Данные на листеразмещаются начиная с седьмой строки
For i = 1 To N_Ayd ' Установкаподписей аудиторий
     Cells(stroka, 1).Value = _
     Worksheets(2).Cells(i+ 1, 1).Value
     stroka = stroka + 1
Next
St = 1
For i = 1 To N_Day ' Установка подписей занятий
  For j = 1 To N_Times
     St = St + 1
     Cells(5, St).Value =Worksheets(2).Cells(i + 1, 4).Value
     Cells(6, St).Value =Worksheets(2).Cells(j + 1, 5).Value
 Next
Next
For i = 1 To DaysTimes
  For j = 1 To N_Ayd
    Cells(6 + j, i + 1) =0 'Инициализация ячеек
  Next
 Next
For i = 4 To N + 3 ' Цикл по строкам  заявок
 IfCStr(Worksheets(1).Cells(i, 7).Value) = «да» Then
    ' Выполнение условия по обслуживаниюзаявки
    stroka = 0
    For ia = 1 To N_Ayd
        IfCStr(Worksheets(1).Cells(i, 8).Value) = _
             CStr(Cells(ia + 6, 1).Value) Then
            stroka = ia +6
            Exit For
         End If
      Next
     If stroka > 0 And_
     CStr(Worksheets(1).Cells(i, CInt(L1.Text) + 11).Value) = _
           "*" Then
       ' Если есть строка с указаннойаудиторией
       For m = 1 To DaysTimes
        ' Нахождение столбца на листедля помещения заявки
            If CStr(Worksheets(1).Cells(i,4).Value) = _
                 CStr(Cells(5, 1 + m).Value) Then
            IfCStr(Worksheets(1).Cells(i, 5).Value) = _
                 CStr(Cells(6, 1 + m).Value) Then
                stolbec =1 + m
                Exit For
            End If
          End If
         Next
        nomer = 1
        For iy = 1 To N_Boss'Определение заявителя в заявке
        If CStr(Worksheets(1).Cells(i,2).Value) _
             =CStr(Worksheets(2).Cells(iy + 1, 6).Value) Then
             nomer = iy
             Exit For
          End If
        Next
        Cells(stroka,stolbec).Value = _
               Cells(stroka, stolbec).Value + _
                 Worksheets(1).Cells(i, 6).Value
        Cells(stroka,stolbec).Select
        With Selection.Interior
            .ColorIndex =colors(nomer) ' Установка заливки
            .Pattern =xlSolid '  для ячейки
        End With
    End If
  End If
Next
Range(«a5»).Select
End Sub
Private SubWorksheet_Activate()
N_Ned = 0
 While Worksheets(2).Cells(N_Ned+ 2, 3).Value ""
      N_Ned = N_Ned + 1
 Wend
 
L1.Clear
For i = 1 To N_Ned
  L1.AddItemWorksheets(2).Cells(i + 1, 3).Value
Next
If L1.ListCount > 0 AndSav1
 L1.ListIndex = Sav1
End If
End Sub
Private SubWorksheet_Deactivate()
 Sav1 = L1.ListIndex
End Sub
Private SubWorksheet_SelectionChange(ByVal Target As Range)
' Вычисление строки и столбцавыделенной ячейки
stroka = ActiveCell.Row
stolbec =ActiveCell.Column
If stolbec 1 Then
' Информационное окно видимо толькопри выделении первой колонки
    Inf1.Visible = False
ElseIf stroka > 6 Then
     Inf1.Visible = True
     Inf1.Text = «Вместимость » + _
          Str(Worksheets(2).Cells(stroka — 5, 2)) + «чел»
End If
End Sub
 
Процедурылистаотчет3
Private Sub Com_2_Click()
' Номера строки и столбца выделеннойзаявки
NumStr = ActiveCell.Row
NumCol = ActiveCell.Column
If NumStr
  Exit Sub
End If
Vrem = CStr(Cells(6,NumCol)) ' Вычисление времени и дня временизанятия
Den = CStr(Cells(5,NumCol))
aud = CStr(Cells(NumStr,1))
ColZ = 0 ' Подсчет заявок в выделеннойячейке
N = 0 ' Подсчет количества заявок напервом листе
WhileWorksheets(1).Cells(N + 4, 1).Value ""
      N = N + 1
Wend
For i = 1 To N ' Цикл по количеству заявок
  Day1 = CStr(Worksheets(1).Cells(i +3, 4).Value)
  Time1 =CStr(Worksheets(1).Cells(i + 3, 5).Value)
  Aud1 =CStr(Worksheets(1).Cells(i + 3, 8).Value)
  indicator = 0
   If Time1 = Vrem AndDay1 = Den And aud = Aud1 Then
      For j =CInt(L1.Text) To CInt(L2.Text)
         IfWorksheets(1).Cells(i + 3, 11 + j).Value = "*" Then
            'indicator = 1
            ColZ = ColZ +1
            mZ(ColZ) = i +3
            Exit For
          End If
      Next
   End If
Next
Cells(NumStr,NumCol).Select
With Selection.Interior
       .ColorIndex = 38
       .Pattern = xlSolid
End With
End Sub
Private Sub Com_3_Click()
 row7 = ActiveCell.Row 'Вычисление номера столбца и строки
 col7 = ActiveCell.Column
 Symma = Cells(NumStr,NumCol).Value ' Итоговая сумма копируемой ячейки
 N = 0 ' Вычисление числа строк напервом листе
 While Worksheets(1).Cells(N + 4,1).Value ""
      N = N + 1
 Wend
 NNa = 0 ' Число аудиторий на первом листе
 While Worksheets(2).Cells(NNa + 2,1).Value ""
      NNa = NNa + 1
 Wend
 audN = CStr(Cells(row7, 1)) ' Значения аудитории, дня и времени выделенной
 denN = CStr(Cells(5, col7)) ' ячейки
 vremZ = CStr(Cells(6,col7))
 flagZ = 0 'Индикатор возможности перемещения заявок
 For i = 4 To N + 3 ' Проверка занятий
   For j = 1 To ColZ
     If i = mZ(j) Then
         GoTo Nexti2 ' Обходим копируемую заявку
     End If
   Next
   a_i =CStr(Worksheets(1).Cells(i, 8).Value)
   d_i =CStr(Worksheets(1).Cells(i, 4).Value)
   v_i =CStr(Worksheets(1).Cells(i, 5).Value)
   o_i =CStr(Worksheets(1).Cells(i, 7).Value)
   If o_i «да» Then ' Если заявканеобслужена, то ее обходим
      GoTo Nexti2
   End If
    For j = 1 To ColZ ' Цикл по количеству перемещаемыхзаявок
    If audN = a_i And denN = d_i AndvremZ = v_i Then
    ' При совпадении аудитории, дня ивремени
      For m = 0 To 17
       IfWorksheets(1).Cells(i, 11 + m).Value = "*" _
          AndWorksheets(1).Cells(mZ(j), 11 + m).Value = "*" Then
              flagZ = 1 ' Если есть перекрытие хотя быпо одной неделе,
              Exit For ' то копирование невозможно
        End If
      Next ' Цикл понеделям
    End If
    If flagZ = 1 Then
        Exit For
    End If
   Next ' Цикл по количеству перемещаемыхзаявок
   If flagZ = 1 Then
     Exit For
  End If
Nexti2:  Next ' Завершение проверки
If flagZ = 1 Then 'Если копирование невозможно, то выводим соответствующее сообщение
  MsgBox («Заявку не удается перенести. Аудиторное времязанято.»)
  Max1 = CInt(L2.Text) — CInt(L1.Text) + 1
  porog1 = CInt(Max1 / 2)
  row7 = NumStr
  col7 = NumCol
  a = CInt(Cells(row7,col7).Value)
  If a = 0 Then
  ElseIf a = Max1 Then
         Cells(row7,col7).Select
         WithSelection.Interior
              .ColorIndex= 7
              .Pattern =xlSolid
         End With
  ElseIf a
         Cells(row7,col7).Select
         WithSelection.Interior
              .ColorIndex= 8
              .Pattern =xlSolid
         End With
  ElseIf a > porog1 Anda
         Cells(row7,col7).Select
         WithSelection.Interior
              .ColorIndex= 15
              .Pattern =xlSolid
         End With
  End If
  Exit Sub
End If
'Цикл по количеству копированныхзаявок
Worksheets(1).Unprotect
For ia = 1 To ColZ
 Nom = 0
 WhileWorksheets(1).Cells(Nom + 4, 1).Value ""
      Nom = Nom + 1
 Wend
 Worksheets(1).Cells(Nom +4, 1).Value = Worksheets(1).Cells(mZ(ia), 1).Value
 Worksheets(1).Cells(Nom +4, 2).Value = Worksheets(1).Cells(mZ(ia), 2).Value
 Worksheets(1).Cells(Nom +4, 3).Value = Worksheets(1).Cells(mZ(ia), 3).Value
 Worksheets(1).Cells(Nom +4, 4).Value = denN
 Worksheets(1).Cells(Nom +4, 5).Value = vremZ
 Worksheets(1).Cells(Nom +4, 6).Value = Worksheets(1).Cells(mZ(ia), 6).Value
 Worksheets(1).Cells(Nom +4, 7).Value = Worksheets(1).Cells(mZ(ia), 7).Value
 Worksheets(1).Cells(Nom +4, 8).Value = audN
 For uo = 9 To 28
     Worksheets(1).Cells(Nom + 4, uo).Value = Worksheets(1).Cells(mZ(ia), uo).Value
 Next
Next
' Завершение цикла по количествукопированных заявок
' Удаление заявок
  For oi = ColZ To 1 Step-1
      i = mZ(oi)
      Worksheets(1).Rows(i).Delete
  Next
   Worksheets(1).ProtectDrawingObjects:=True, Contents:=True, Scenarios:=True
  Cells(NumStr,NumCol).Value = «0»
  Cells(NumStr,NumCol).Select
  With Selection.Interior
        .ColorIndex = 0
        .Pattern = xlSolid
  End With
Max1 = CInt(L2.Text) — CInt(L1.Text) + 1
porog1 = CInt(Max1 / 2)
Cells(row7, col7).Value =Symma
   If Symma = 0 Then
         Cells(row7,col7).Select
         WithSelection.Interior
              .ColorIndex= 7
             .Pattern =xlSolid
           End With
   ElseIf Symma = Max1Then
         Cells(row7,col7).Select
         WithSelection.Interior
              .ColorIndex= 7
              .Pattern =xlSolid
         End With
            ElseIf Symma
         Cells(row7,col7).Select
         WithSelection.Interior
              .ColorIndex= 8
              .Pattern =xlSolid
         End With
    ElseIf Symma >porog1 And Symma
         Cells(row7,col7).Select
         WithSelection.Interior
              .ColorIndex= 15
              .Pattern =xlSolid
         End With
    End If
  End Sub
Private SubCommandButton1_Click()
' Очистка области листа со старымиданными
 Range(«a5:AZ100»).Select
 Selection.ClearContents
 Range(«a1»).Select
' Убираем с экрана информационноеокно
 T1.Visible = False
 ' Подсчет количества учебный дней внеделе
 N_Days = 0
 WhileWorksheets(2).Cells(N_Days + 2, 4).Value ""
      N_Days = N_Days + 1
 Wend
 ' Подсчет количества занятий втечение дня
 N_Times = 0
 While Worksheets(2).Cells(N_Times+ 2, 5).Value ""
      N_Times = N_Times + 1
 Wend
 ' Подсчет количества аудиторий
 N_Rooms = 0
 WhileWorksheets(2).Cells(N_Rooms + 2, 1).Value ""
      N_Rooms = N_Rooms + 1
 Wend
 ' Расчет количества занятий втечение недели
 DaysTimes = N_Days * N_Times
 For i = 1 To DaysTimes
  For j = 1 To N_Rooms
    Cells(6 + j, i + 1) =0
  Next
 Next
 ' Подсчет числа заявителей
 N_Boss = 0
 WhileWorksheets(2).Cells(N_Boss + 2, 6).Value ""
      N_Boss = N_Boss + 1
 Wend
 Range(«b7:AZ100»).Select' Заливка белым цветом области вывода
 With Selection.Interior
        .ColorIndex = 0
        .Pattern = xlSolid
 End With
 ' Подсчет количества строк на 1-млисте
 N = 0
 WhileWorksheets(1).Cells(N + 4, 1).Value ""
      N = N + 1
 Wend
 ' Вывод информации начинаем сседьмой строки
 stroka = 7
 For i = 1 To N_Rooms 'Заполнение столбца аудиторий
     Cells(stroka,1).Value = Worksheets(2).Cells(i + 1, 1).Value
     stroka = stroka + 1
Next
St = 1 ' Заполнение дней и началазанятий
For i = 1 To N_Days
    For j = 1 To N_Times
      St = St + 1
      Cells(5, St).Value =Worksheets(2).Cells(i + 1, 4).Value
      Cells(6, St).Value =Worksheets(2).Cells(j + 1, 5).Value
    Next
Next
N_Ayd = 0 ' Подсчет аудитоий занесенных на этот лист
While Cells(N_Ayd + 7,1).Value ""
           N_Ayd = N_Ayd +1
Wend
For j = CInt(L1.Text) ToCInt(L2.Text) ' Цикл по указанным неделям
    For i = 4 To N + 3 ' Цикл по строкам  первого листа
     If CStr(Worksheets(1).Cells(i,7).Value) = _
                   «да» Then ' Если заявка обслужена
        Nayd = Worksheets(1).Cells(i,8).Value
        stroka = 0
        For m = 1 ToN_Rooms
           If CStr(Nayd) =CStr(Cells(m + 6, 1).Value) Then
                stroka = m+ 6
                Exit For
           End If
        Next
        ' Если не найдена аудиторияуказанная в строке на первом листе
        If stroka = 0 Then
          inform_text =«Ошибка в данных в строке » + CStr(i)
          MsgBox(inform_text)
         'Worksheets(1).Cells(i, 1).Activate
         Range(«A1»).Select
          Exit Sub
        End If
        For m = 1 ToDaysTimes
          IfCStr(Worksheets(1).Cells(i, 4).Value) = CStr(Cells(5, 1 + m).Value) _
            AndCStr(Worksheets(1).Cells(i, 5).Value) = CStr(Cells(6, 1 + m).Value) Then
                 stolbec =1 + m
                  Exit For
           End If
        Next
         ' Фрагмент для учетагрупповых занятий
       If Worksheets(1).Cells(i, j +11).Value = "*" And Cells(stroka, stolbec).Value
            Cells(stroka,stolbec) = Cells(stroka, stolbec) + 1
            Cells(stroka,stolbec) = Cells(stroka, stolbec) + 1000
       End If
    End If
 Next
 For ii = 1 To DaysTimes
    For jj = 1 To N_Rooms
       a = CInt(Cells(jj +6, ii + 1).Value)
       If a >= 1000Then
            Cells(jj + 6,ii + 1).Value = Cells(jj + 6, ii + 1).Value — 1000
       End If
    Next
 Next
Next
' Расцветка занятий
 Maximum = CInt(L2.Text) — CInt(L1.Text) + 1
 porog = CInt(Maximum/ 2) ' Порог — половина занятых дней в указанном интервале
   For i = 1 To DaysTimes
     For j = 1 To N_Rooms
       a = CInt(Cells(j +6, i + 1).Value) ' Количество занятий
         If a = MaximumThen
          Cells(j + 6, i +1).Select
           WithSelection.Interior
                .ColorIndex= 7 ' Расцветка при максимальной занятости
                .Pattern =xlSolid
           End With
         ElseIf a 0 Then
            Cells(j + 6, i+ 1).Select
            WithSelection.Interior
                .ColorIndex = 8 ' Расцветка при знятости меньшесреней
                .Pattern = xlSolid
             End With
          ElseIf a >porog And a
              Cells(j + 6,i + 1).Select
              WithSelection.Interior
                 .ColorIndex = 15
                  .Pattern= xlSolid
               End With
          End If
     Next
   Next
 Range(«a5»).Select
 T1.Visible = True
 End Sub
Private SubCommandButton2_Click()
F_Podbor.Show
End Sub
Private SubT1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
T1.Text = ""
T1.Visible = False
End Sub
Private SubWorksheet_Activate()
N_Ned = 0
 WhileWorksheets(2).Cells(N_Ned + 2, 3).Value ""
      N_Ned = N_Ned + 1
 Wend
 
L1.Clear
L2.Clear
For i = 1 To N_Ned
 L1.AddItemWorksheets(2).Cells(i + 1, 3).Value
 L2.AddItemWorksheets(2).Cells(i + 1, 3).Value
 Next
If L1.ListCount > 0 AndSav1
 L1.ListIndex = Sav1
End If
If L2.ListCount > 0 AndSav2
 L2.ListIndex = Sav2
End If
Private SubWorksheet_Deactivate()
Sav1 = L1.ListIndex
Sav2 = L2.ListIndex
End Sub
Private SubWorksheet_SelectionChange(ByVal Target As Range)
NumStr1 = ActiveCell.Row
NumCol1 =ActiveCell.Column
If NumCol1 1 Then
   If T1.Visible = FalseThen
        Exit Sub
   End If
T1.Text = ""
N_Days = 0
WhileWorksheets(2).Cells(N_Days + 2, 4).Value ""
    N_Days = N_Days + 1
Wend
N_Times = 0
WhileWorksheets(2).Cells(N_Times + 2, 5).Value ""
     N_Times = N_Times + 1
Wend
' Количество строк
DaysTimes = N_Days *N_Days
N = 0
While Worksheets(1).Cells(N+ 4, 1).Value ""
   N = N + 1
Wend
'Цикл по строкам первого листа
For i = 1 To N
 Day1 =CStr(Worksheets(1).Cells(i + 3, 4).Value)
 Time1 =CStr(Worksheets(1).Cells(i + 3, 5).Value)
 Group1 =CStr(Worksheets(1).Cells(i + 3, 9).Value)
 Prepod1 =CStr(Worksheets(1).Cells(i + 3, 3).Value)
 Disp1 =CStr(Worksheets(1).Cells(i + 3, 10).Value)
 Aud1 =CStr(Worksheets(1).Cells(i + 3, 8).Value)
 Obs1 =CStr(Worksheets(1).Cells(i + 3, 7).Value)
 ' Если заявка обслужена
   If Obs1 = «да» Then
     indic = 0
     For j = CInt(L1.Text)To CInt(L2.Text)
      IfCStr(Worksheets(1).Cells(i + 3, 10 + j).Value) = "*" Then
        indic = 1
        Exit For
      End If
     Next
     ' Если интервал недель соответстует
      If indic = 1 Then
          If Day1 = CStr(Cells(5,NumCol1).Value) And _
             Time1 =CStr(Cells(6, NumCol1).Value) _
             AndCStr(Cells(NumStr1, 1).Value) = Aud1 Then
                    IfT1.Text "" Then
                        T1.Text = T1.Text + Chr(10)
                    End If
                T1.Text =T1.Text + Disp1
                T1.Text =T1.Text + " " + Group1
                T1.Text =T1.Text + " " + Prepod1 + " "
                For j =CInt(L1.Text) To CInt(L2.Text) 'Цикл 1
                    ask =CStr(Worksheets(1).Cells(i + 3, j + 11).Value)
                    If ask= "*" Then
                       T1.Text = T1.Text + " " + Str(j) + ","
                     End If
                  Next
              End If
       End If ' Если интервал недель соответстует
   End If 'Если заявка обслужена
Next 'Завершение цикла по строкам первоголиста
T3.Visible = False
ElseIf NumStr1 > 6 Then
  T3.Visible = True
  T3.Text =«Вместимость » + Str(Worksheets(2).Cells(NumStr1 — 5, 2)) + "чел "
End If
End Sub

Приложение2
 
Процедура,связанная с открытием книги
Private Sub Workbook_Open()
 ' Подсчет дней на втором листе
 N_Days = 0
 WhileWorksheets(2).Cells(N_Days + 2, 4).Value ""
      N_Days = N_Days + 1
 Wend
 ' Заполнение списка L1 на 3-м листе
 Worksheets(3).L1.Clear
 For i = 1 To N_Days
   Worksheets(3).L1.AddItem Worksheets(2).Cells(i + 1, 4).Value
 Next
 ' Подсчет занятий в течение дня
 N_Times = 0
 WhileWorksheets(2).Cells(N_Times + 2, 5).Value ""
      N_Times = N_Times + 1
 Wend
 ' Заполнение списка L2 на 3-м листе
 Worksheets(3).L2.Clear
 For i = 1 To N_Times
  Worksheets(3).L2.AddItem CStr(Worksheets(2).Cells(i + 1, 5).Value)
 Next
' Подсчет числа недель на второмлисте
  N_Ned = 0
 WhileWorksheets(2).Cells(N_Ned + 2, 3).Value ""
   N_Ned = N_Ned + 1
 Wend
 ' Заполнение 3-го списка L3 на 3-м листе
 Worksheets(3).L3.Clear
 For i = 1 To N_Ned
  Worksheets(3).L3.AddItem Worksheets(2).Cells(i + 1, 3).Value
 Next
' Заполнение списков недель на 4-млисте
 Worksheets(4).C1.Clear
 Worksheets(4).C2.Clear
 For i = 1 To N_Ned
  Worksheets(4).C1.AddItem Worksheets(2).Cells(i + 1, 3).Value
  Worksheets(4).C2.AddItem Worksheets(2).Cells(i + 1, 3).Value
 Next
 ' Заполнение списка недель на 8-млисте
 Worksheets(8).L1.Clear
 For i = 1 To N_Ned
     Worksheets(8).L1.AddItemWorksheets(2).Cells(i + 1, 3).Value
 Next
 ' Заполнение списка недель на 9-млисте
 Worksheets(9).L1.Clear
 Worksheets(9).L2.Clear
 For i = 1 To N_Ned
  Worksheets(9).L1.AddItem Worksheets(2).Cells(i + 1, 3).Value
   Worksheets(9).L2.AddItemWorksheets(2).Cells(i + 1, 3).Value
 Next
 'Заполнение списка недель на 10-млисте
 Worksheets(10).L1.Clear
 Worksheets(10).L2.Clear
 For i = 1 To N_Ned
  Worksheets(10).L1.AddItem Worksheets(2).Cells(i + 1, 3).Value
  Worksheets(10).L2.AddItem Worksheets(2).Cells(i + 1, 3).Value
 Next
 ' Подсчет числа преподавателей
 N_Prepod = 0
 While Worksheets(2).Cells(N_Prepod +2, 7).Value ""
   N_Prepod = N_Prepod + 1
 Wend
 ' Заполнение  списка преподавателейна листе Нагрузка
 Worksheets(12).Prepod.Clear
 For i = 1 To N_Prepod
 Worksheets(12).Prepod.AddItem Worksheets(2).Cells(i + 1, 7).Value
 Next
 Worksheets(11).mesac.Clear
Worksheets(11).mesac.AddItem«сентябрь»
Worksheets(11).mesac.AddItem«октябрь»
Worksheets(11).mesac.AddItem«ноябрь»
Worksheets(11).mesac.AddItem«декабрь»
Worksheets(11).mesac.AddItem«январь»
Worksheets(11).mesac.AddItem«февраль»
Worksheets(11).mesac.AddItem«март»
Worksheets(11).mesac.AddItem«апрель»
Worksheets(11).mesac.AddItem«май»
Worksheets(11).mesac.AddItem«июнь»
  ' Установка защиты на первый ивторой листы
 Worksheets(1).ProtectDrawingObjects:=True, Contents:=True, _
      Scenarios:=True
 Worksheets(2).ProtectDrawingObjects:=True, Contents:=True, _
      Scenarios:=True
End Sub

СПИСОКЛИТЕРАТУРЫ
1 Смирнов Г.Н. «Проектированиеэкономических информационных систем». Учебник.-М.: Финансы и статистика, 2003.
2. Емельянова Н.З. и др. «Основыпостроения автоматизированных систем». Учебное пособие. – М.: Форум:ИНФРА-М,2005.
3. Гарнаев А.Ю. «Самоучитель VBA.» СПБ.: БХВ-Петеребург,2004.
4. Уокенбах Д. «Профессиональное программирование на VBA в Exel 2002».: Перевод с английского. – М.: Издательский дом«Вильямс», 2003


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.