Профессиональное на VBA в Excel 2002 · Excel 2002 Power Programming with VBA...

786

Transcript of Профессиональное на VBA в Excel 2002 · Excel 2002 Power Programming with VBA...

  • Профессиональноепрограммированиена VBA в Excel 2 0 0 2

  • Excel 2002 PowerProgrammingwith VBA

    John Walkenbach

    M&T BooksAn imprint of Wiley Publishing, Inc.

  • Профессиональноепрограммированиена VBA в Excel 2002

    Джон Уокенбах

    ДИАЛЕКТИКАМосква » Санкт-Петербург • Киев2003

  • ББК 32.973.26-018.2.75У62

    УДК 681.3.07

    Компьютерное издательство "Диалектика"

    Зав. редакцией С.Н. Тригуб

    Руководитель проекта В.В. Александров

    Перевод с английского И.В. Василенко, И.В. Константинова, О.А. Лещинского, О.В. Шпырко

    Под редакцией И.В. Василенко

    По общим вопросам обращайтесь в издательство "Диалектика" по адресу:[email protected], hup://www.diatektika.com

    Уокенбах, Джон.

    У62 Профессиональное программирование на VBA в Excel 2002. : Пер. с а н г л . —

    М. : Издательский дом '"Вильяме", 2003. — 784 с . : ил. — Парал. тит. англ.

    ISBN 5-8459-0541-9 (рус.)

    По Excel есть немало серьезных книг, но эта все равно единственная, где разработкаприложений рассматривается в широком плане. Дело в том, что VBA — всего лишьодин из компонентов разработки приложений (правда, компонент этот достаточнобольшой). А такой программный продукт, как Excel, отличается крайней таинствен-ностью. В нем множество интересных возможностей, притаившихся где-то в глубинахи неведомых простому пользователю. Кроме того, некоторые хорошо известные функ-ции можно использовать по-новому. Миллионы людей по всему миру используют Excel.И только несколько процентов пользователей действительно понимают, на что способенэтот продукт. В данной книге автор попытается ввести вас в эту элитную компанию. Выготовы?

    Б Б К 32.973.26-018.2.75

    Вес названия программных продуктов являются зарегистрированными торговыми марками соответ-ствующих фирм.

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

    Copyright © 2003 by Dialektika Computer Publishing.

    Original English language edition Copyright © 2003 by Wiley Publishing, Inc.

    All rights reserved including the right of reproduction in whole or in part in any form. This translationpublished by arrangement with Wiley Publishing, Inc.

    ISBN 5-8459-0541-9 (рус.) © Компьютерное изд-во "Диалектика", 2003ISBN 0-7645-4799-2 (англ.) © Wiley Publishing, Inc., 2003

  • Оглавление

    ЧАСТЬ I. ВВЕДЕНИЕ В EXCEL 31

    Глава 1. Excel 2002: ее происхождение 32

    Глава 2. Вкратце об Excel 45

    Глава 3. Особенности использования формул 63

    Глава 4. Файлы Excel 82

    ЧАСТЬ II. РАЗРАБОТКА ПРИЛОЖЕНИЙ EXCEL 97

    Глава 5. Приложения электронных таблиц 98

    Глава б. Принципы разработки приложений электронных таблиц 111

    ЧАСТЬ III. VISUAL BASIC FOR APPLICATIONS 129

    Глава 7. Введение в Visual Basic for Applications 130

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

    Глава 9. Работа с процедурами VBA 209

    Глава 10. Создание функций 240

    Глава 11. Примеры и методы программирования на VBA 267

    ЧАСТЬ IV. РАБОТА С ПОЛЬЗОВАТЕЛЬСКИМИ ФОРМАМИ 317

    Глава 12. Создание собственных диалоговых окон 318

    Глава 13. Использование пользовательских форм 335

    Глава 14. Примеры пользовательских форм 364

    Глава 15. Использование диалоговых окон UserForm 387

  • ЧАСТЬ V. СОВЕРШЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ 417

    Глава 16. Разработка утилит Excel с помощью VBA 418

    Глава 17. Работа со сводными таблицами 440

    Глава 18. Управление диаграммами 453

    Глава 19. Концепция событий Excel 497

    Глава 20. Взаимодействие с другими приложениями 525

    Глава 21. Создание и использование надстроек 542

    ЧАСТЬ VI. РАЗРАБОТКА ПРИЛОЖЕНИЙ 563

    Глава 22. Создание собственных панелей инструментов 564

    Глава 23. Создание пользовательских меню 591

    Глава 24. Предоставление справки в приложениях 619

    Глава 25. Разработка приложений для пользователей 635

    ЧАСТЬ VII. ДРУГИЕ ТЕМЫ 64S

    Глава 26. Вопросы совместимости 646

    Глава 27. Управление файлами с помощью VBA 658

    Глава 28. Управление компонентами Visual Basic 677

    Глава 29. Принципы управления модулями классов 695

    Глава 30. Часто задаваемые вопросы о программировании в Excel 706

    Приложение А. Информационные ресурсы, посвященные Excel 738

    Приложение Б. Справочник по функциям и операторам VBA 743

    Приложение В. Коды ошибок VBA 751

    Приложение Г. Справочник но кодам ANSI 755

    Приложение Д. Материалы на Web-узле 763

    Предметный указатель 775

    Оглавление

  • Содержание

    Об авторе 24

    Предисловие 25

    Почему я написал эту книгу 25Что надо знать 25Что надо иметь 26Соглашения, используемые в этой книге 26

    Соглашения, относящиеся к клавиатуре 26Соглашения, относящиеся к мыши 27

    Что означают пиктограммы 27Структура книги 28

    Часть I 28Часть II 28Часть III 28Часть IV 28Часть V 28Часть VI 28Часть VI] 29

    Приложения 29Как пользоваться этой книгой 29Как меня найти 29

    Благодарности 30

    ЧАСТЬ I. ВВЕДЕНИЕ В EXCEL 31

    Глава 1. Excel 2002: ее происхождение 32

    Краткая история процессоров электронных таблиц 32Все начиналось с VisiCalc 32Lotus 1-2-3 33Quattro Pro 36Microsoft Excel 38

    Электронные таблицы сегодня 41Почему Excel прекрасно подходит для разработчиков 43Роль Excel в стратегии Microsoft 44Резюме 44

    Глава 2. Вкратце об Excel 45

    С точки зрения объекта... 45Рабочие книги 46

    Рабочие листы 47

  • Листы диаграмм 48Листы макросов XLM 48Диалоговые листы Excel 5/95 48

    Пользовательский интерфейс Excel 48Меню 49Диалоговые окна 49Панели инструментов 50Перетаскивание 51Комбинации клавиш 51

    Настройка вида 52Ввод данных 52Выделение объектов 53Форматирование 53

    Числовое форматирование 53Стилистическое форматирование 54

    Формулы 54Имена 55Функции 55Фигуры 56Диаграммы 57Макросы 57Доступ к базам данных 58

    Базы данных рабочих листов 59Внешние базы данных 59

    Функции использования Internet 60Инструменты анализа 60

    Структуры 60Автоматические промежуточные итоги 60Управление сценариями 60Analysis ToolPack 60Сводные таблицы 61Аудит 61Поиск решения 61

    Надстройки 61Совместимость 62Резюме 62

    Глава 3. Особенности использования формул 63О формулах 63Вычисление значений формул 64Ссылки на ячейки и диапазоны 65

    С какой целью используются неотносительные ссылки 65О ссылках RIC1 66Ссылки на другие листы или рабочие книги 67

    Использование имен 68Присвоение имен ячейкам и диапазонам 68Использование имен существующих ссылок 68Пересечение имен 69Присвоение имен столбцам и строкам 70Задание области действия 70Присвоение имен константам 70Присвоение имен формулам 71Присвоение имен объектам 72

    8 Содержание

  • Ошибки использования формул 72Формулы массивов 73

    Пример формулы массива 74Календарь в виде формулы массива 74Достоинства и недостатки формул массивов 75

    Подсчет и суммирование 75Использование функций СЧЕТЕСЛИ и СУММЕСЛИ 75Подсчет и суммирование с помощью формул массивов 76Другие инструменты подсчета 77

    Работа со значениями даты и времени 77Ввод значений даты и времени 78Использование дат до 1900 года 78

    Создание мегаформул 79Резюме 81

    Глава 4. Файлы Excel 82

    Запуск Excel 82Расширения файлов Excel 84Поддерживаемые форматы файлов электронных таблиц 85

    Файлы электронных таблиц Lotus 1-2-3 85Файлы электронных таблиц Quaitro Pro 86Форматы файлов баз данных 86Форматы текстовых файлов 86Другие форматы файлов 87

    Файлы, сохраняемые в Excel 87Файл XLS 87Файл рабочего пространства 88Файлы шаблонов 88Файлы панелей инструментов 89Файлы надстроек 89

    Excel и HTML 90Так как же это работает? 90Усложнение HTML-документа 91А как насчет интерактивности1? 92

    Параметры Excel в системном реестре 93О системном реестре 93Параметры Excel 95

    Резюме 96

    ЧАСТЬ II. РАЗРАБОТКА ПРИЛОЖЕНИЙ EXCEL 97

    Глава 5. Приложения электронных таблиц 98Приложения электронных таблиц 98Разработчик и конечный пользователь 99л

    Кто такие разработчики? 100Классификация пользователей электронных таблиц 101Аудитория приложений электронных таблиц 101Причины использования электронных таблиц 102

    Решение проблем с помощью процессора электронных таблиц 104Основные типы электронных таблиц 105

    Электронные таблицы "на скорую руку" 106Электронные таблицы "не для посторонних глаз" 106Однопользовательские приложения 106

    Содержание 9

  • Приложения-"спагетти" 107Приложения-утилиты 107Надстройки с функциями рабочих страниц 108Одноблоковые бюджеты 108Модели "что-если" 109Электронные таблицы для хранения данных и доступа к ним 109Клиентские программы баз данных 109Приложения "под ключ" 110

    Резюме ПО

    Глава 6. Принципы разработки приложений электронных таблиц 111Определение потребностей пользователя 112Проектирование приложения, соответствующего потребностям пользователей 113Определение удобного пользовательского интерфейса 115

    Создание пользовательских диалоговых окон 116Использование элементов управления ActiveX в рабочем листе 116Настройка меню 117Настройка панелей инструментов 119Создание комбинаций клавиш 120Усилия по разработке приложения 120

    Работа с конечным пользователем 121Тестирование приложения 121Как сделать приложение отказоустойчивым 122Привлекательное и наглядное приложение 124Документирование усилий, потраченных на разработку 124Распространение приложения среди пользователей 125Обновление приложения 126

    Другие вопросы разработки приложений 126Версия Excel, установленная у пользователя 127Трудности, касающиеся поддержки языка 127Производительность системы 127Видеорежимы 127Структура папок 128

    Резюме 128

    ЧАСТЬ III. VISUAL BASIC FOR APPLICATIONS 129

    Глава 7. Введение в Visual Basic for Applications 130

    История языка BASIC 130Обзор VBA 131

    Объектные модели 131Сравнение VBA и XLM 131Сравнение макросов VBA и Lotus 132Сравнение VBA и LotusScript 132

    Основы VBA 132Знакомство с редактором Visual Basic 135

    Запуск VBE 135Окна VBE 136

    Работа с Project Explorer 137Добавление нового модуля VBA 138Удаление модуля VBA 138Экспорт и импорт объектов 138

    Работа с окнами кода 139

    10 Содержание

  • Сворачивание и восстановление окон 139Сохранение программы VBA 140Введение кода VBA 141

    Специальные настройки VBE 146Использование вкладки Editor 146Использование вкладки Editor Format 148Использование вкладки General 149Использование вкладки Docking 149

    Функция записи макросов 150Что записывается 150Относительный или абсолютный? 151Параметры записи 154Улучшение записанных макросов 155

    Об объектах и коллекциях • 156Иерархия объектов 157О коллекциях 157Ссылки на объекты 158

    Свойства и методы 158Свойства объектов 158Методы объектов 159

    Объект Comment: пример использования 160Справочные сведения по объекту Comment 160Свойства объекта Comment I6IМетоды объекта Comment 162Коллекция Comments 162О свойстве Comment 163Объекты, вложенные в Comment 163Содержит ли ячейка примечание 165Добавление нового объекта Comment 165

    Полезные свойства объекта Application 166Работа с объектами Range 167

    Свойство Range 167Свойство Cells 168Свойство Offset 170

    Что следует знать об объектах 171Более сложные, но важные концепции 171Выучиге побольше об объектах и свойствах. 172

    Резюме 174

    Глава 8. Основы программирования на VBA 175Элементы языка VBA. Обзор 175Комментарии 176Переменные, типы данных и константы 178

    Определение типов данных 179Объявление переменных 181Область действия переменных 133Работа с константами 185Управление строками 187Работа с датами 187

    Операторы присвоения 188Массивы 190

    Объявление массивов 190Объявление многомерных массивов 190

    Содержание 11

  • Переменные объектов 191Пользовательские типы данных. 192Встроенные функции 192Управление объектами и коллекциями 194

    Конструкция With-End With 195Конструкция For Each-Next 195

    Контроль за выполнением кода 197Операторы GoTo 197Конструкция If-Then 198Конструкции Select Case 201Циклическая обработка инструкций 203

    Резюме 208

    Глава 9. Работа с процедурами VBA 209О процедурах 209Объявление процедуры 210

    Область действия процедуры 211Выполнение процедуры 211

    Выполнение процедуры с помощью команды Run^RunSub/UserForm 212Выполнение процедуры в диалоговом окне Макрос 212Выполнение процедуры с помощью комбинации клавиш 213Выполнение процедуры из пользовательского меню 214Выполнение процедуры из другой процедуры 215Выполнение процедуры с помощью кнопки на панели инструментов 2 ] 9Выполнение процедуры по щелчку на объекте 219Выполнение процедуры по событию 220Выполнение процедуры в окне Immediate 220

    Передача аргументов в процедуры 221Обработка ошибок 224

    Перехват ошибок 224Примеры обработки ошибок 225

    Реальный пример 227Цель 227Требования к проекту 227Исходные данные 228Подход 228Что необходимо знать 229Предварительные результаты записи макросов 229Начальная подготовка 230Создание программы 231Создание процедуры сортировки 232Дополнительное тестирование 234Решение проблем 235Доступность утилиты 238Оценка проекта 238

    Резюме 239

    Глава 10. Создание функций 240Процедуры и функции: сравнение 240Назначение пользовательских функций 240Простой пример функции 241

    Пользовательская функция 241Использование функции на рабочем листе 242

    12 Содержание

  • Использование функции в процедуре VBA 242Анализ пользовательской функции 242

    Процедура функции 243Объявление функции 244Область действия функции 245Выполнение функций 245

    Аргументы функций 247Примеры функций 247

    Функция без аргументов 247Еще одна функция без аргументов 248Функция с одним аргументом 249Функция с двумя аргументами 251Функция с аргументом массивом 251Функция с необязательными аргументами 252Функция VBA, возвращающая массив 253Функция, возвращающая значение ошибки 255Функция с неопределенным количеством аргументов 256

    Создание аналога функции Excel СУММ 257Отладка функций 259Работа с диалоговым окном Мастер функции 260

    Определение категории функции 260Добавление описания функции 261

    Использование надстроек для хранения пользовательских функций 262Использование Windows API ' 263

    Примеры использования Windows API 263Определение папки Windows 264Определение состояния клавиши 265Дополнительная информация о функциях API 265

    Резюме 266

    Глава 11. Примеры и методы программирования на VBA 267

    Работа с диапазонами 268Копирование диапазона 268Перемещение диапазона 269Копирование диапазона переменного размера 269Выделение или определение типов диапазонов 270Запрос значения ячейки 271Ввод значения в следующую пустую ячейку 273Приостановка макроса для получения диапазона, выделенного пользователем 274Определение количества выделенных ячеек 275Определение типа выделенного диапазона 275Эффективный цикл просмотра выделенного диапазона 276Удаление веек пустых строк 278Определение диапазона, находящегося в другом диапазоне 278Определение типа данных ячейки 279Чтение и запись диапазонов 230Более эффективный способ записи в диапазон 281Перенос одномерных массивов 282Перенос диапазона в массив Variant 283Выделение максимального значения в диапазоне 283Выделение всех ячеек с определенным форматированием 284

    Управление рабочими книгами и листами 285Сохранение всех рабочих книг 286Сохранение и закрытие всех рабочих книг 286

    Содержание 13

  • Доступ к свойствам рабочей книги 286Синхронизация рабочих листов 2S7

    Методы программирования на VBA 288Переключение значения свойства Boolean 288Определение количества страниц для печати 289Отображение даты и времени 289Получение списка шрифтов 290Сортировка массива 291Обработка последовательности файлов 293

    Функции, полезные для использования в программах VBA 294Функция FileExists 294Функция FileNameOnly 294Функция PathExists 295Функция RangeNameExists 295Функция SheetExists 295Функция WorkbookIsOpen 296Получение значения из закрытой рабочей книги 296

    Полезные функции в формулах Excel 298Получение информации о форматировании ячейки 298Отображение даты сохранения файла или вывода файла на печать 299Основы иерархии объектов 299Подсчет количества ячеек между двумя значениями 300Подсчет количества видимых ячеек в диапазоне 300Определение последней непустой ячейки в столбце или строке 301Соответствует ли строка шаблону? 302Извлечение из строки п-го элемента 303Множественная функция 304Функция SHEETOFFSET: версия 1 305Функция SHEETOFFSET: версия 2 305Возвращение максимального значения всех рабочих листов 306Возвращение массива случайных целых чисел без повторов 307Расположение значений диапазона в произвольном порядке 309

    Вызов функций Windows API 310Определение связей с файлами 310Определение параметров принтера по умолчанию 311Определение текущего видеорежима 312Добавление звука в приложение 312Чтение и запись параметров системного реестра 314

    Резюме 316

    ЧАСТЬ IV. РАБОТА С ПОЛЬЗОВАТЕЛЬСКИМИ ФОРМАМИ 317

    Глава 12. Создание собственных диалоговых окон 318

    Перед созданием диалоговых окон... 318Использование окна ввода данных 319

    Функция inputBox в VBA 319Метод InputBox в Excel 320

    Функция VBA MsgBox 321Метод Excel GetOpenFilename 325Метод Excel GetSaveAsFilename 328Получение имени папки 328

    Использование функций Windows API для получения имени папки 328Применение объекта FileDialog для выбора папки 330

    14 Содержание

  • Отображение встроенных диалоговых окон Excel 331Использование коллекции Dialogs 331Получение дополнительной информации о встроенных диалоговых окнах 332Использование аргументов во встроенных диалоговых окнах 333Непосредственный выбор команды меню 333

    Резюме 334

    Глава 13. Использование пользовательских форм 335

    Как Excel обрабатывает пользовательские диалоговые окна 335

    Вставка новой формы UserForm 336

    Отображение пользовательского диалогового окна 336

    Добавление элементов управления в пользовательское диалоговое окно 337

    Доступные элементы управления 337CheckBox 337ComboBox 337CommandButton 338Frame 338Image 338Label 3*38ListBox 338MultiPage 338OptionButton 339RefEdit 339ScrollBar 339SpinButton 339TabStrip 339TextBox 339ToggleButton 339

    Настройка элементов управления пользовательского диалогового окна 340Изменение свойств элементов управления 342

    Использование окна Properties 342Общие свойства 343Получение дополнительной информации о свойствах 343Советы по использованию клавиатуры 343

    Отображение и закрытие пользовательского диалогового окна 345Отображение пользовательского диалогового окна 345Закрытие пользовательского диалогового окна 346О процедурах обработки событий 347

    Пример создания пользовательского диалогового окна 347Создание пользовательского диалогового окна 348Создание кода для отображения диалогового окна 350Проверка 350Добавление процедур обработки событий 351Проверка правильности введенных данных 352Заработало! 353

    События объекта UserForm 353Получение дополнительной информации о событиях 353События объекта UserForm 354Пример: события элемента управления SpinButton 354Совместное использование элементов управления SpinButton и TextBox 356

    Ссылка на элементы управления пользовательского диалогового окна 358

    Настройка панели инструментов Toolbox 359Изменение значков или текста подсказок 359

    Содержание 15

  • Добавление новых страниц 360Настройка или комбинирование элементов управления 360Добавление элементов управления ActiveX 361

    Создание "шаблонов" диалоговых окон 362Список инструкций по созданию диалогового окна 362Резюме 363

    Глава 14. Примеры пользовательских форм 364

    Создание меню с помощью объекта UserForm 364Использование элементов управления CommandButton 364Использование элемента управления ListBox. 365

    Выбор диапазона 366Создание заставки 367Отключение кнопки закрытия пользовательского диалогового окна 368Изменение размера диалогового окна 369Масштабирование и прокрутка листа в пользовательском диалоговом окне 370Использование элемента управления ListBox 372

    Об элементе управления ListBox 372Добавление опций в элемент управления ListBox 373Определение выделенной опции 376Определение нескольких выделенных опции 376Несколько списков в одном элементе управления ListBox 377Передача опций элемента управления ListBox 378Перемещение опции в списке элемента управления ListBox 379Работа с элементами управления ListBox. содержащими несколько столбцов 380Использование элемента управления ListBox для выделения строк на листе 382Использование элемента управления ListBox для активизации листа 384

    Применение элемента управления MultiPage 385Резюме 386

    Глава 15. Использование диалоговых окон UserForm 387

    Отображение индикатора текущего состояния 387Создание отдельного индикатора текущего состояния 388Вывод информации о текущем состоянии с помощью элемента управления MultiPage 390Отображение индикатора текущего состояния без использования элемента управленияMultiPage 392

    Создание мастеров 393Настройка элемента управления MultiPage 393Добавление кнопок 394Программирование кнопок 394Программирование зависимостей 396Выполнение задачи 397Последние шаги 398

    Эмуляция функции MsgBox 398Код функции MyMsgBox 399Как это работает 400Использование функции MyMsgBox 401

    Немодальное диалоговое окно 401Несколько кнопок с одной процедурой обработки событий 404

    Процедура 404Адаптация кода 406

    Диалоговое окно выбора цвета 406Отображение диаграммы в пользовательском диалоговом окне 407

    16 Содержание

  • Метод 1: сохранение диаграммы в виде файла 408Метод 2: использование элемента управления OWC ChanSpace 409

    Отображение листа в пользовательском л налоговом окне 4-12Расширенное диалоговое окно формы данных 415

    Описание 415Установка надстройки 416Использование расширенного диалогового окна формы данных 416

    Резюме 416

    ЧАСТЬ V. СОВЕРШЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ 417

    Глава 16. Разработка утилит Excel с помощью VBA 418

    Об утилитах Excel 418Использование VBA для разработки утилит 419Из чего состоит хорошая утилита 419Текстовые инструменты: анатомия утилит 420

    Обоснование 420Цели проекта утилиты Text Tools 420Как работает утилита 421Рабочая книга утилиты Text Tools 421Диалоговое окно FormMain 422Модуль modMain 423Процедура ApplyButton_Click 426Процедуры выполнения задач 427Методика отмены выполненных действий 434Процедура ShowStats 435Техника предоставления пользователю справки 437Процедуры создания и удаления команд меню 438Оценка проекта 438Принципы работы утилиты Text Tools 439

    Резюме 439

    Глава 17. Работа со сводными таблицами 440

    Вступительный пример 440Создание сводной таблицы 441Просмотр созданного кода 442Очистка записанного кода 442

    Создание сложной сводной таблицы 443Данные 443Сводная таблица 445Код создания сводной таблицы 445Как это работает 446

    Создание сводной таблицы на основе внешней базы данных 447Создание нескольких сводных таблиц 448Модификация сводных таблиц 451Резюме 452

    Глава 18. Управление диаграммами 453

    О диаграммах 453Расположение диаграмм 453Объектная модель диаграммы 454

    Запись макроса 455Результат записи макроса 456

    Содержание 17

  • Подкорректированный код 457Распространенные методы управления диаграммами в VBA 458

    Активизация диаграммы 458Деактивизация диаграммы 460Определение активности диаграммы 460Удаление объектов ChartObject или диаграмм 461Форматирование диаграмм 461Циклический просмотр диаграмм 462Изменение размера и взаимного расположения объектов ChartQbject 463

    Дополнительные методы управления диаграммами 464Использование имен в формуле РЯД 464Определение данных, которые используются диаграммой 466Изменение диаграммы с помощью элемента управления ComboBox 467Определение источника данных для диа]р;шмы: первый метод 468Второй метод определения источника данных для диаграммы 473Отображение подписей для данных на диаграмме 476Отображение диаграммы в пользовательском диалоговом окне 478

    События диаграмм 481Пример использования событий объекта Chart 481Поддержка событий для встроенных диаграмм 484Пример использования событий объекта Chart во встроенной диаграмме 485

    Хитрости создания диаграмм 487Печать встроенных диаграмм на всю страницу 487Создание "мертвой" диаграммы 487Управление последовательностями методом скрытия данных 488Хранение нескольких диаграмм на одном листе диаграммы 490Использование в диаграмме связанных изображений 491Анимированные диаграммы 492Создание диаграммы с графиком гипоциклоиды 492Создание диаграммы "часов" 494Рисование с помощью графика 495

    Резюме 496

    Глава 19. Концепция событий Excel 497

    Типы событий Excel 498Что необходимо знать о событиях 498

    Понимание последовательностей событий 498Размещение процедур обработки событий 499Отключение событий 499Ввод кода процедуры обработки события 501Процедуры обработки событий, которые используют аргументы 502

    События объекта Workbook 503Событие Open . 504Событие Activate 504Событие SheetActivate 505Событие NewSheet 505Событие BeforeSave 505Событие Deactivate 506Событие BeforePrint 506Событие BeforeClose 507

    События объекта Worksheet 509Событие Change 509Отслеживание изменений в определенном диапазоне 510Событие SeleclionChange 514

    18 Содержание

  • Событие BeforeRightClick 5 ] 5События объекта Chart 515События объекта Application 516

    Включение событий уровня объекта Application . 518Определение факта открытия рабочей книги 518Отслеживание событий уровня объекта Application 519

    События объекта UserForm 520События, не связанные с конкретными объектами 521

    Событие OnTime 522Событие OnKey 523

    Резюме 524

    Глава 20. Взаимодействие с другими приложениями 525Запуск другого приложения 525Активизация другого приложения 528Запуск аплетов папки Панель управления и мастеров 529Автоматизация 530

    Работа с внешними объектами 530Ранняя и поздняя привязка 530Простой пример 533Управление приложением Word из Excel 533Управление Excel из другого приложения 536

    Работа с ADO 537Использование метода SendKeys 540Резюме 541

    Глава 21. Создание и использование надстроек 542Что такое надстройка 542

    Сравнение надстройки со стандартной рабочей книгой 542Основные причины создания надстройки 543

    Использование менеджера надстроек Excel 544Создание надстройки 545Пример надстройки 546

    Настройка рабочей книги 546Тестирование рабочей книги 546Добавление описательной информации 547Создание надстройки 547Установка надстройки 548Распространение надстройки 549Изменение надстройки 549

    Сравнение файлов XLA и XLS 550Структура и размер файлов 550Членство в коллекциях 550Окна 550Листы 551Получение доступа к процедурам VBA надстройки 551

    Управление надстройками с помощью кода VBA 553Коллекция Addlns 553Свойства объекта Addln 555События объекта Addln 557

    Оптимизация производительности надстроек 558Скорость выполнения кода 558Размер файлов 559

    Содержание 19

  • Особые проблемы, связанные с использованием надстроек 559Правильная установка 559Ссылки на другие файлы 561Указание правильной версии Excel 561

    Резюме 562

    ЧАСТЬ VI. РАЗРАБОТКА ПРИЛОЖЕНИЙ 563

    Глава 22. Создание собственных панелей инструментов 564О командных панелях 564Управление панелями инструментов 565Как Excel обрабатывает панели инструментов 565

    Хранение панелей инструментов 565Когда панели инструментов работают некорректно 566

    Ручное управление панелями инструментов и кнопками 567О режиме модификации командных панелей 567Распространение панелей инструментов 570

    Управление коллекцией CommandBars 572Типы командных панелей 572Просмотр списка объектов CommandBar 573Создание командной панели 574Ссылки на командные панели 574Удаление командных панелей 575Свойства командных панелей 575Ссылка на элементы управления командной панели 580Перечисление элементов управления на командной панели 581Перечисление элементов управления на всех панелях инструментов 581Добавление элементов управления на командную панель 582Удаление элемента управления из командной панели 583Свойства элементов управления командных панелей 583

    Резюме 590

    Глава 23. Создание пользовательских меню 591

    Несколько слов о строке меню Excel 591Операции с меню Excel 592

    Терминология 592Удаление элементов меню 593Добавление элементов меню 594Изменение опций меню 594

    Примеры кода VBA 595Вывод информации о меню 595Добавление нового меню в строку меню 596Удаление меню со строки меню 598Добавление опций в меню 599Отображение комбинации клавиш вместе с опцией меню 602Исправление восстановленного меню 604

    Работа с событиями 604Автоматическое добавление и удаление меню 604Отключение или скрытие меню 605Работа с установленными опциями меню 606

    Простой способ создания пользовательских меню 609Замена строки меню листа , 611Работа с контекстными меню 612

    20 Содержание

  • Добавление опций в контекстное меню 614Удаление опций из контекстного меню 615Отключение опций контекстного меню 615Отключение контекстных меню 615Сброс контекстных меню 616Создание нового контекстного меню 616

    Резюме 618

    Глава 24. Предоставление справки в приложениях 619

    Справка в приложениях Excel 619Справочная система, построенная с помощью компонентов Excel 621

    Использование комментариев к ячейкам для предоставления справки 621Применение текстового поля для предоставления справки 622Использование рабочего листа для сохранения текста справочного руководства 623Отображение справочной информации в пользовательском диалоговом окне 624Использование помощника по Office для отображения справочного руководства 626

    Использование средств WinHelp System и HTML Help System 629WinHelp 629HTML Help 630

    Связывание файлов справочного руководства с приложением 631Другие способы отображения справочного руководства в формате WinHelp илиHTML Help 633

    Использование метода Help 633Отображение справочной информации в окне сообщения 633Отображение справочной информации в окне ввода данных 634

    Резюме 634

    Глава 25. Разработка приложений для пользователей 635

    Определение приложения, ориентированного на пользователя 635Мастер расчета займа 635

    Использование приложения 636Структура рабочей книги 637Как это работает 638Потенциальные улучшения 642

    Концепции разработки приложений 642Заключение 643Резюме 644

    ЧАСТЬ VII. ДРУГИЕ ТЕМЫ 645

    Глава 26. Вопросы совместимости 646

    Что такое совместимость 646Проблемы совместимости 647Поддерживаемые форматы файлов Excel 648Избегайте использования новых возможностей 649Приложения, которые используют функции Windows API 649Поддержка платформы Мас 650Создание интернациональных приложений 651

    Многоязыковые приложения 653Язык в VBA 654Использование "локальных" свойств 654Идентификация настроек системы 654

    Содержание 21

  • Параметры настройки даты и времени 656Резюме 657

    Глава 27. Управление файлами с помощью VBA 658

    Часто выполняемые операции 658Команды VBA по управлению файлами 659Использование объекта FileSearch 661Поиск файлов, которые содержат определенный текст 663Использование объекта FileSystemObject 663

    Работа с текстовыми файлами 665Открытие текстового файла 666Чтение текстового файла 666Запись в текстовый файл 667Получение номера файла 667Определение или установка позиции в файле 667Операторы чтения и записи 668

    Примеры управления текстовыми файлами 668Импортирование данных из текстового файла 668Экспортирование диапазона в текстовый файл 669Импортирование текстового файла в диапазон 670Протоколирование операций в Excel 671Фильтрация текстового файла 671Импортирование более 256 столбцов данных 672Экспорт диапазона в формат HTML 674

    Резюме 676

    Глава 28. Управление компонентами Visual Basic 677

    Введение в IDE 677Объектная модель IDE 678

    Коллекция VBProjects 679Первый пример 680Замещение модуля обновленной версией 681Использование VBA для создания кода VBА 683Добавление элементов управления в диалоговое окно UserForm на этапе разработки 685

    Управление диалоговыми окнами UserForm на этапе разработки и на этапе выполнения 686Добавление 100 элементов управления CommandButton на этапе разработки 687

    Программное создание диалоговых окон UserForm 688Простой пример 689

    -, Сложный пример 690Резюме 694

    Глава 29. Принципы управления модулями классов 695Что такое модуль класса 695Пример: создание класса NumLock 696

    Вставка модуля класса 696Добавление кода VBA 697Использование класса NumLock 698

    Еще о модулях классов 698Именование класса объектов 698Программирование свойств 698Методы программирования 700События модуля класса 700

    Пример: класс CSVFile 701

    22 Содержание

  • Переменные уровня модуля класса 701Процедуры свойств 701Процедуры методов 702Использование объекта CSVFileClass 704

    Резюме 705

    Глава 30. Часто задаваемые вопросы о программировании в Excel 706

    Общие вопросы об Excel 707Редактор Visual Basic 711Процедуры 714Функции 718Объекты, свойства, методы и события 720Пользовательские диалоговые окна 728Надстройки 733Объекты CommandBar 735

    Приложение А. Информационные ресурсы, посвященные Excel 738

    Техническая поддержка со стороны фирмы Microsoft 738Варианты поддержки 738Microsoft Knowledge Base 739Начальная страница Microsoft Excel 739Обновления Microsoft Office 739

    Группы новостей 739Группы новостей, посвященные электронным таблицам 740Конференции Microsoft 740Поиск в группах новостей 741

    Web-узлы 742Spreadsheet Page 742Web-узел Чипа Пирсона (Chip Pearson), посвященный Excel 742Web-узел Стивена Булина (Stephen Bullen), посвященный Excel 742Список часто задаваемых вопросов, касающихся электронных таблиц 742

    Приложение Б. Справочник по функциям и операторам VBA 743

    Приложение В. Коды ошибок VBA 751

    Приложение Г. Справочник но кодам ANSI 755

    Приложение Д. Материалы на Web-узле 763

    Обзор 763Примеры из глав 763Power Utility Рак 773

    Удаление Power Utility Рак 773Sound-Proof 2000 773

    Удаление Sound-Proof 2000 774

    Предметный указатель 775

    Содержание 23

  • Об авторе

    Джон Уокенбах (John Walkenbach) — известный автор книг, посвященных электроннымтаблицам; он также является главой компании JWalk and Associates, Inc. — небольшой кон-салтинговой фирмы, расположенной в Сан-Диего и специализирующейся в области разработ-ки приложений электронных таблиц. Его перу принадлежит около 30 книг и 300 статей, по-священных электронным таблицам. Новые идеи Джона изложены в таких журналах, как PCWorld, InfoWorld, PC Magazine, Windows и PC/Computing. Он также является ответственным запубликацию страницы The Spreadsheet Page популярного Web-узла w w w . j - w a l k . c o m / s s / .Одно из наиболее значительных достижений Джона — это разработка надстройки PowerUtility Pak, получившей приз корпорации Microsoft.

    Джон Уокенбах окончил университет в штате Миссури: и защитил диссертацию на соис-кание ученой степени доктора философии в университете штата Монтана.

    24 Об авторе

  • Предисловие

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

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

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

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

    Что надо знатьКнига не предназначена для начинающих пользователей Excel. Если у вас нет опыта рабо-

    ты с этим приложением, то прочтите сначала какую-либо из следующих книг.

    • Excel 2002 для "чайников" Грега Харвея— написана для пользователей, которые хо-тят знать ровно столько, чтобы сдать экзамен, или решили приступить к работе с этимпрограммным продуктом.

    • Excel 2002. Библия пользователя (вашего покорного слуги) подробно рассказывает обовсех возможностях Excel. Предназначена для пользователей всех уровней.

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

    • создавать рабочие книги, вставлять листы, сохранять файлы и т.д.;

    • перемещаться по рабочей книге;

    • пользоваться меню и комбинациями клавиш;

    • управлять панелями инструментов Excel;

    Предисловие 25

  • • использовать функции рабочих листов Excel;

    • давать имена ячейкам и диапазонам;

    • применять основные возможности Windows, такие, например, как буфер обмена иприемы управления файлами.

    Если вы не знаете, как все это делать, то, возможно, некоторая информация окажется длявас довольно сложной. Итак, считайте, что вис предупредили. Если же вы опытный пользова-тель электронных таблиц, но еще не работали с Excel 2002, то краткий обзор возможностейэтого продукта можно найти в главе 2.

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

    данное издание посвящено Excel 2002, большинство изложенной информации также отно-сится к Excel 2000 и Excel 97. Если же вы пользуетесь еще более ранней версией Excel, то этакнига точно не для вас. Кроме того, материал книги, в основном, применим также и к Excelдля Macintosh. Впрочем, испытания на совместимость с версией для Мас я не проводил и ос-тавляю это для вас.

    Достаточно иметь компьютерную систему, на основе платформы Windows, но лучшеиметь компьютер на базе процессора Pentium Ш/4 и с большим количеством памяти. Excel —это сложная программа, и использование ее в низко производительной системе или в системес небольшим объемом памяти не принесет вам радости в работе.

    Рекомендую использовать высокое разрешение экрана (800x600 — достаточно, 1 024x768 —прекрасно, а 1 бООх 1 024 — это "выше крыши"). В крайнем случае, подойдет и стандартноеразрешение 640x480.

    Соглашения, используемые в этой книгеУделите лишнюю минуту, чтобы просмотреть этот раздел, и узнайте о некоторых согла-

    шениях, которые используются по всей книге.

    Соглашения, относящиеся к клавиатуреДля ввода данных вам нужна клавиатура. Кроме того, работать с меню и диалоговыми ок-

    нами можно с помощью клавиатуры.

    ВводВсе, что вводится с клавиатуры, отображается полужирным шрифтом, например, "введите

    =СУММ(В2:В50) в ячейку В51".Длинное вводимое значение располагается в отдельной строке и для него используется мо-

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

    =(СРЗНАЧ(А1:А8)+СРЗНАЧ(В1:В8))/25

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

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

    26 Предисловие

  • отступы, заданные с помощью символов табуляции. Конечно, задавать отступы не обязатель-но, но они помогают отделять друг от друга операторы, находящиеся рядом.

    Если строка кода не помещается в одной строке книги, то используется стандартный дляVBA метод продолжения строки: в конце строки вводится пробел, после которого располага-ется символ подчеркивания. Это означает, что данная строка кода продолжается следующимфрагментом. Например, приведенные ниже две строки текста представляют одну строку кода.If R i g h t ( A c t i v e C e l l , 1) = " ! " Then A c t i v e C e l l

    = L e f t ( A c t i v e C e l l , L e n ( A c t i v e C e l l ) - 1)

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

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

    ринного шрифта, например, "В ячейку С2 0 введите формулу СУММ". Имена, свойства, мето-ды и объекты процедур VBA отображаются моноширинным шрифтом: "Выполните процеду-ру G e t T o t a l s " . В таких именах, чтобы они легче читались, нередко одновременно исполь-зуется и нижний, и верхний регистр.

    Соглашения, относящиеся к мышиЕсли вы читаете эту книгу, то, значит, хорошо знаете, как пользоваться мышью. Вся

    "мышиная" терминология является достаточно стандартной: "указание", "щелчок", "щелчокправой кнопкой", "перетаскивание" и т.д.

    Что означают пиктограммыПовсеместно в книге слева от абзацев можно встретить пиктограммы. Они используются

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

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

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

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

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

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

    Предисловие 27

  • Структура книгиГлавы данной книги сгруппированы в семь основных частей. Дополнительная информа-

    ция приводится в нескольких приложениях.

    Часть IВ этой части представлены основы изучаемой программы. В главе 1 излагается краткая

    история электронных таблиц — таким образом, вы сможете определить место Excel в мирепрограммного обеспечения. В главе 2 изложен концептуальный анализ Excel 2002 — дос-таточно полезный для тех опытных пользователей электронных таблиц, которые переходятк использованию Excel. Что же касается главы 3, то в ней вкратце рассматриваются фор-мулы, кроме того, рассказывается о некоторых новых приемах. В главе 4 отмечены досто-инства и недостатки разных форматов файлов, поддерживаемых и создаваемых в Excel.

    Часть IIДанная часть состоит из двух глав. В главе 5 в общих чертах обсуждается тема создания

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

    Часть IIIВ эту часть входят главы с 7 по 11. В ней речь пойдет о подготовке к изучению VBA. Вы

    ознакомитесь с VBA, с основами программирования и более подробно — с разработкой про-цедур и функций VBA. Глава 11 предлагает рассмотреть полезные примеры использованияVBA для решения ежедневных задач.

    Часть IVВ четырех главах этой части речь идет о пользовательских диалоговых окнах (называе-

    мых также пользовательскими формами UserForm). В главе 12 описываются альтернатив-ные методы создания пользовательских форм. О пользовательских формах и различных эле-ментах управления, используемых при создании этих форм, рассказывается в главе 13. В гла-вах 14 и 15 приведены примеры пользовательских диалоговых окон, начиная от простыхи заканчивая достаточно сложными.

    Часть VВ этой части рассматриваются дополнительные методы программирования, которые на первый

    взгляд невероятно сложные для понимания. В первых трех главах говорится о том, как создаватьутилиты и как использовать VBA для работы со сводными таблицами и диаграммами. В главе 19рассказывается о процессе обработки событий, который позволяет выполнять процедуры автома-тически, причем выполнять именно тогда, когда произойдут определенные события. В главе 20речь идет о способах взаимодействия с другими приложениями (такими, например, как Word).Часть V заканчивается главой 21 где подробно обсуждается вопрос создания надстроек.

    Часть VIГлавы этой части посвящены важным этапам создания приложений, ориентированных на

    конечных пользователей. В главах 22 и 23 речь идет о создании пользовательских меню и пане-

    28 Предисловие

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

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

    Информация по совместимости приведена в главе 26. В главе 27 обсуждаются разные способыприменения VBA для работы с файлами. Что же касается главы 28, то в ней объясняется, как с по-мощью VBA управлять такими компонентами Visual Basic, как пользовательские формы и модули.В главе 29 рассмотрена тема модулей классов. Завершается данная часть полезной главой, в кото-рой даются ответы на многие часто задаваемые вопросы о программировании в Excel.

    ПриложенияЗавершают книгу пять приложений. В приложении А вы найдете полезную информацию о

    ресурсах Internet, посвященных Excel. Приложение Б— это справочное руководство по воемключевым словам VBA (операторам и функциям). Коды ошибок VBA приведены в приложе-нии В, а что касается приложения Г, то оно содержит справочную таблицу кодов ANSI. На-конец, в последнем приложении описаны файлы, которые можно загрузить с Web-узла изда-тельства "Диалектика" ( h t t p : / / w w w . d i a l e k t i k a . c o m ) .

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

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

    Как меня найтиХотелось бы, чтобы вы контактировали с издателем и лично мною. После прочтения на-

    стоящей книги загляните, пожалуйста, на Web-узел издательства и оставьте свои коммента-рии. Давая свою оценку, будьте, честными. И если вы считаете, что в определенной главе не-достаточно информации — дайте мне знать. Конечно, мне бы хотелось, чтобы приходили га-кие отзывы, как "Это лучшая из прочитанных мною книг" или "Благодаря этой книге яполучил повышение и теперь имею 90 000 долларов в год".

    От тех, кто читал мои книги, я получаю каждый день по электронной почте не меньше де-сятка вопросов. Благодарю за сотрудничество. К сожалению, у меня просто нет времени от-вечать на все вопросы. В приложении А приведен полный список источников, которые помо-гут вам ответить на возникающие вопросы.

    Кроме того, приглашаю вас на свой Web-узел ( h t t p : //vww. j - w a l k . c o m / s s / ) , гдесодержится много материала, относящегося к Excel.

    Предисловие 29

  • Благодарности

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

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

    Данной книги не было бы в ваших руках, если бы не такие талантливые люди, как СьюзенКристоферсен (Susan Christophersen), редактор моего проекта. Особая благодарность БиллуМэнвиллу (Bill Manville), моему техническому редактору. Билл часто сотрудничает со мной,предлагает много прекрасных идей и часто направляет на правильный путь.

    И наконец, благодарю Кэтлин (Kathlyn), мою прекрасную дочурку и радость моей жизни.

    Джон Уокенбах (John Walkenbach)

    Ла-Джолла, Калифорния

    30 Благодарности

  • Введение в Excel

    В четырех главах этой части приведены важные и по-лезные сведения об Excel и о процессорах электрон-ных таблиц в целом. В главе 1 изложена краткая историяэлектронных таблиц, а также приведены предположения о том,почему Excel является для разработчиков таким превосходнымпродуктом. Глава 2 представляет собой краткий обзор функ-ций Excel и содержит много полезных советов. В главе 3 выузнаете о некоторых специальных методах использованияформул, которые к собирал не один год. В главе 4 изложеныподробности управления файлами, используемыми и созда-ваемыми в Excel — информация, достаточно важная для раз-работчиков.

  • Excel 2002: еепроисхождение

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

    Краткая история процессоровэлектронных таблиц

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

    Все начиналось с VisiCalcПервая в мире программа электронных таблиц— VisiCalc —

    создана Дэном Бриклином (Е)ал Bricklin) и Бобом Фрэнксто-ном (Bob Frarikston) в 1978 году, когда в офисах еще даже неслыхивали о персональных компьютерах. VisiCalc была напи-сана для компьютера Apple II — интересного маленькогокомпьютера, игрушки по нынешним меркам. (Правда, в своевремя Apple II днями напролет держала меня в состоянии гип-ноза.) VisiCalc в целом стала основой будущих электронныхтаблиц, а се структуру строк и столбцов, а также синтаксисформул до сих нор можно видеть в современных электронныхтаблицах. VisiCalc быстро стала востребованной, и многие

  • дальновидные компании приобретали Apple II лишь для того, чтобы создавать свои бюджетныепланы с помощью этой программы. Со временем программе VisiCalc часто ставили в заслугу,что именно она обеспечила компьютерам Apple II большую часть их первоначального успеха.

    Тем временем появился новый вид персональных компьютеров; на этих ПК работала опе-рационная система СР/М. Компания Sorcitn разработала SuperCalc— программу электрон-ных таблиц, которая также привлекла многих последователей.

    И когда в 1981 году на сцене появился компьютер IBМ PC, который узаконил персональ-ные компьютеры, то компания VisiCorp не стала медлить с переносом VisiCalc в эту новуюаппаратную среду. Вскоре за ней последовала и Sorcin с версией SuperCalc, специально соз-данной для PC.

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

    Lotus 1-2-3Оценив успех VisiCalc, небольшая группа компьютерных гениев из компании, только что

    основанной в Кембридже, штат Массачусетс, усовершенствовала концепцию