Профессиональное на VBA в Excel 2002 · Excel 2002 Power Programming with VBA...
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, небольшая группа компьютерных гениев из компании, только что
основанной в Кембридже, штат Массачусетс, усовершенствовала концепцию