19
Содержание Об авторе 25 Введение 27 О чем эта книга 27 Что необходимо знать 27 Что вам понадобится 28 Соглашения, принятые в этой книге 28 Команды Excel 28 Команды редактора VBA 29 Клавиатура 29 Соглашения, относящиеся к мыши 30 Пиктограммы, используемые в книге 30 Структура книги 30 Часть I. Введение в Excel 30 Часть II. Visual Basic for Applications 31 Часть III. Пользовательские формы 31 Часть IV. Профессиональные методики программирования 31 Часть V. Разработка приложений 31 Часть VI. Дополнительные темы 31 Часть VII. Приложения 31 О сайте книги 32 О пакете Power Utility Pak 32 Как пользоваться этой книгой 32 Ждем ваших отзывов! 32 Часть I. Введение в Excel 33 Глава 1. Знакомство с Excel 35 Объектное мышление 36 Рабочие книги 36 Рабочие листы 37 Листы диаграмм 38 Листы макросов XLM 38 Диалоговые листы Excel 5/95 39 Интерфейс пользователя Excel 39 Знакомство с лентой 41 Панель быстрого доступа 44 Excel 2013 Power Programming with VBA.indb 6 Excel 2013 Power Programming with VBA.indb 6 08.04.2014 13:04:52 08.04.2014 13:04:52

Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

  • Upload
    ledung

  • View
    230

  • Download
    7

Embed Size (px)

Citation preview

Page 1: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание

Об авторе 25

Введение 27О чем эта книга 27Что необходимо знать 27Что вам понадобится 28Соглашения, принятые в этой книге 28

Команды Excel 28Команды редактора VBA 29Клавиатура 29Соглашения, относящиеся к мыши 30

Пиктограммы, используемые в книге 30Структура книги 30

Часть I. Введение в Excel 30Часть II. Visual Basic for Applications 31Часть III. Пользовательские формы 31Часть IV. Профессиональные методики программирования 31Часть V. Разработка приложений 31Часть VI. Дополнительные темы 31Часть VII. Приложения 31

О сайте книги 32О пакете Power Utility Pak 32Как пользоваться этой книгой 32Ждем ваших отзывов! 32

Часть I. Введение в Excel 33

Глава 1. Знакомство с Excel 35Объектное мышление 36

Рабочие книги 36Рабочие листы 37Листы диаграмм 38Листы макросов XLM 38Диалоговые листы Excel 5/95 39

Интерфейс пользователя Excel 39Знакомство с лентой 41Панель быстрого доступа 44

Excel 2013 Power Programming with VBA.indb 6Excel 2013 Power Programming with VBA.indb 6 08.04.2014 13:04:5208.04.2014 13:04:52

Page 2: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 7

Контекстные меню и мини-панель инструментов 47Диалоговые окна 47Область задач 49Комбинации клавиш 49

Ввод данных 50Формулы, функции и имена 51Выделение объектов 52Форматирование 53Параметры защиты 55

Защита формул от перезаписи 55Защита структуры рабочей книги 56Защита книги с помощью пароля 56Защита VBA-кода с помощью пароля 57

Диаграммы 58Фигуры и рисунки SmartArt 58Доступ к базам данных 59

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

Excel и Интернет 60Инструменты анализа 61Надстройки 63Макросы и программирование 63Файловые форматы 63Справочная система Excel 63

Глава 2. Работа с формулами 65О формулах 65Вычисление формул 66Ссылки на ячейки и диапазоны 67

Зачем нужны неотносительные ссылки 67О ссылках в стиле R1C1 69Ссылки на другие листы или рабочие книги 70

Использование имен 72Присвоение имен ячейкам и диапазонам 72Применение имен к существующим ссылкам 74Пересечение имен 74Присвоение имен столбцам и строкам 74Определение области действия 75Присвоение имен константам 75Присвоение имен формулам 76Присвоение имен объектам 77

Ошибки в формулах Excel 78Инструменты аудита Excel 79

Идентификация ячеек заданного типа 79Просмотр формул 80

Excel 2013 Power Programming with VBA.indb 7Excel 2013 Power Programming with VBA.indb 7 08.04.2014 13:04:5208.04.2014 13:04:52

Page 3: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание8

Отслеживание связей между ячейками 82Отслеживание ошибок в формулах 84Устранение циклических ссылок 84Фоновая проверка ошибок 84Использование средства вычисления формул Excel 86

Формулы массивов 87Пример формулы массива 88Создание календаря с помощью формулы массива 89Достоинства и недостатки формул массивов 89

Подсчет и суммирование 90Примеры формул подсчета 91Примеры формул суммирования 92Другие инструменты подсчета 93

Формулы ссылок и массивов 93Работа со значениями даты и времени 95

Ввод значений даты и времени 95Использование дат до 1900 года 96

Создание мегаформул 97

Глава 3. Файлы Excel 101Запуск Excel 101Типы файлов 102

Форматы файлов Excel 103Форматы текстовых файлов 104Форматы файлов баз данных 105Другие форматы файлов 105

Совместимость между файлами Excel 107Защищенный просмотр 108Использование автоматического восстановления 109

Восстановление версий текущей книги 109Восстановление несохраненных документов 109Настройка автоматического восстановления 110

Работа с файлами шаблонов 110Просмотр шаблонов 110Создание шаблонов 110Создание шаблонов рабочих книг 112

Содержимое файла Excel 113Структура файла 113Почему файловый формат столь важен 116

Файл Offi ceUI 117Файл XLB 118Файлы надстроек 118Настройки Excel в системном реестре 119

Кратко о системном реестре 119Настройки Excel 120

Excel 2013 Power Programming with VBA.indb 8Excel 2013 Power Programming with VBA.indb 8 08.04.2014 13:04:5208.04.2014 13:04:52

Page 4: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 9

Глава 4. Основы разработки приложений электронных таблиц 123О приложениях электронных таблиц 123Этапы разработки приложения 124Идентификация потребностей пользователя 125Проектирование приложения с учетом потребностей пользователей 126Разработка удобного пользовательского интерфейса 128

Настройка ленты 128Настройка контекстных меню 129Комбинации клавиш 129Создание пользовательских диалоговых окон 130Использование элементов управления ActiveX на рабочем листе 131Фактическая разработка приложения 133

Работа с конечным пользователем 133Тестирование приложения 133Как сделать приложение отказоустойчивым 134Создавайте привлекательные и интуитивно понятные приложения 136Создание пользовательской справочной системы 138Документирование усилий, затраченных на разработку 138Распространение приложения среди пользователей 139Обновление приложения 139

Другие вопросы разработки приложений 140Версия Excel, установленная у пользователя 140Трудности, касающиеся поддержки языка 140Быстродействие системы 140Видеорежимы 141

Часть II. Visual Basic for Applications 143

Глава 5. Введение в Visual Basic for Applications 145Основы языка BASIC 145Обзор VBA 146

Объектные модели 146Сравнение VBA и XLM 146

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

Отображение вкладки Разработчик 149Запуск VBE 151Окно VBE 151

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

Работа с окнами кода 155Сворачивание и восстановление окон 155Сохранение кода VBA 155

Excel 2013 Power Programming with VBA.indb 9Excel 2013 Power Programming with VBA.indb 9 08.04.2014 13:04:5308.04.2014 13:04:53

Page 5: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание10

Ввод кода VBA 156Настройка среды VBE 162

Вкладка Editor 162Вкладка Editor Format 165Вкладка General 166Вкладка Docking 167

Средство записи макросов 168Что создает средство записи макросов 168Абсолютный или относительный 169Параметры записи макроса 172Улучшение записанных макросов 173

Объекты и коллекции 175Иерархия объектов 175О коллекциях 175Ссылки на объекты 176

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

Практикум по объекту Comment 179Справка по объекту Comment 179Свойства объекта Comment 181Методы объекта Comment 181Коллекция Comments 182О свойстве Comment 183Объекты, вложенные в Comment 183Содержит ли ячейка примечание 184Добавление нового объекта Comment 185

Некоторые полезные свойства объекта Application 185Объекты Range 187

Свойство Range 187Свойство Cells 189Свойство Offset 191

Что следует знать об объектах 193Важные концепции 193Узнайте больше об объектах и свойствах 194Экспериментируйте с окном отладки 196

Глава 6. Основы программирования на VBA 197Обзор элементов и конструкций VBA 197Комментарии 200Переменные, типы данных и константы 201

Определение типов данных 202Объявление переменных 204Область действия переменной 207

Excel 2013 Power Programming with VBA.indb 10Excel 2013 Power Programming with VBA.indb 10 08.04.2014 13:04:5308.04.2014 13:04:53

Page 6: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 11

Использование констант 210Управление строками 212Работа с датами 212

Операторы присваивания 213Массивы 216

Объявление массивов 216Объявление многомерных массивов 216Объявление динамических массивов 217

Объектные переменные 217Пользовательские типы данных 218Встроенные функции 219Управление объектами и коллекциями 222

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

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

Глава 7. Работа с процедурами VBA 241О процедурах 241

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

Выполнение процедуры Sub 244Выполнение процедуры с помощью команды Run Sub/UserForm 244Выполнение процедуры в диалоговом окне Макрос 245Выполнение процедуры с помощью комбинации клавиш 245Выполнение процедуры с помощью ленты 246Выполнение процедуры из пользовательского контекстного меню 247Выполнение процедуры из другой процедуры 247Выполнение процедуры по щелчку на объекте 251Выполнение процедуры по событию 252Выполнение процедуры в окне отладки 253

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

Перехват ошибок 257Примеры обработки ошибок 259

Реальный пример 261Цель 262Требования к проекту 262Исходные данные 262Подход 263Что необходимо знать 263Некоторые предварительные соображения 263

Excel 2013 Power Programming with VBA.indb 11Excel 2013 Power Programming with VBA.indb 11 08.04.2014 13:04:5308.04.2014 13:04:53

Page 7: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание12

Подготовка 265Написание кода 266Создание процедуры сортировки 267Дополнительное тестирование 271Устранение проблем 271Доступность 275Оценка проекта 276

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

Использование функции на рабочем листе 279Использование функции в процедуре VBA 280Анализ пользовательской функции 280

Синтаксис функции 283Область действия функции 284Выполнение функций 284

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

Функции без аргументов 288Функция с одним аргументом 291Функция с двумя аргументами 293Функция с аргументом в виде массива 294Функция с необязательными аргументами 295Функция VBA, возвращающая массив 296Функция, возвращающая значение ошибки 299Функция с неопределенным количеством аргументов 300

Имитация функции Excel СУММ 301“Продвинутые” функции для работы с датами 304Отладка функций 306Работа с диалоговым окном Вставка функции 307

Использование метода MacroOptions 308Указание категории функции 310Добавление описания функции вручную 311

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

Примеры функций Windows API 312Идентификация папки Windows 313Определение состояния клавиши <Shift> 314Дополнительная информация о функциях Windows API 315

Глава 9. Приемы и методы программирования на VBA 317Учимся на примерах 317Работа с диапазонами 318

Excel 2013 Power Programming with VBA.indb 12Excel 2013 Power Programming with VBA.indb 12 08.04.2014 13:04:5308.04.2014 13:04:53

Page 8: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 13

Копирование диапазона 318Перемещение диапазона 319Копирование диапазона переменного размера 320Выделение либо идентификация диапазонов различного типа 321Изменение размеров диапазона 323Запрос значения ячейки 324Ввод значения в следующую пустую ячейку 325Приостановка работы макроса для определения диапазона пользователем 326Подсчет выделенных ячеек 328Идентификация типа выделенного диапазона 329Просмотр выделенного диапазона 330Удаление всех пустых строк 334Дублирование строк 334Определение диапазона, находящегося в другом диапазоне 336Идентификация типа данных ячейки 337Чтение и запись диапазонов 338Более быстрый способ записи в диапазон 339Перенос одномерных массивов 341Перенос диапазона в массив Variant 341Выбор ячеек по значению 342Копирование несмежных диапазонов 343

Управление рабочими книгами и листами 345Сохранение всех рабочих книг 345Сохранение и закрытие всех рабочих книг 346Частичное сокрытие элементов рабочего листа 346Создание содержания в форме списка гиперссылок 347Синхронизация рабочих книг 348

Приемы программирования на VBA 349Переключение значения булева свойства 349Отображение даты и времени 350Отображение времени в дружественном формате 351Отображение списка шрифтов 353Сортировка массива 353Обработка последовательности файлов 355

Полезные функции для программ VBA 357Функция FileExists 357Функция FileNameOnly 357Функция PathExists 358Функция RangeNameExists 358Функция SheetExists 359Функция WorkbookIsOpen 359Получение значения из закрытой рабочей книги 360

Полезные функции в формулах Excel 361Получение информации о форматировании ячейки 362

Excel 2013 Power Programming with VBA.indb 13Excel 2013 Power Programming with VBA.indb 13 08.04.2014 13:04:5408.04.2014 13:04:54

Page 9: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание14

Говорящий рабочий лист 363Отображение даты сохранения файла или вывода файла на печать 363Основы иерархии объектов 364Подсчет количества ячеек между двумя значениями 365Идентификация последней непустой ячейки в столбце или в строке 366Соответствует ли строка шаблону 367Возвращение n-го элемента из строки 368Преобразование чисел в текст 369Универсальная функция 369Функция SHEETOFFSET 370Возвращение максимального значения среди всех рабочих листов 371Возвращение массива случайных целых чисел без повторов 372Распределение значений диапазона в случайном порядке 373Сортировка диапазона 375

Вызов функций Windows API 377Определение файловых ассоциаций 377Определение буквы диска 378Определение параметров стандартного принтера 378Определение текущего видеорежима 379Чтение и запись параметров системного реестра 380

Часть III. Пользовательские формы 383

Глава 10. Создание собственных диалоговых окон 385Подготовка к созданию диалоговых окон 385Использование окон ввода данных 386

Функция InputBox в VBA 386Метод Excel InputBox 388

Функция VBA MsgBox 391Метод Excel GetOpenFilename 395Метод Excel GetSaveAsFilename 398Получение имени папки 399Отображение диалоговых окон Excel 399Отображение формы ввода данных 401

Доступ к формам ввода данных 403Отображение формы ввода данных с помощью VBA 403

Глава 11. Работа с пользовательскими формами 405Пользовательские диалоговые окна в Excel 405Вставка новой формы UserForm 406

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

CheckBox 407ComboBox 408CommandButton 408

Excel 2013 Power Programming with VBA.indb 14Excel 2013 Power Programming with VBA.indb 14 08.04.2014 13:04:5408.04.2014 13:04:54

Page 10: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 15

Frame 408Image 408Label 409ListBox 409MultiPage 409OptionButton 409RefEdit 409ScrollBar 409SpinButton 410TabStrip 410TextBox 410ToggleButton 410

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

Использование окна Properties 413Общие свойства 415Советы по использованию клавиатуры 415

Отображение формы UserForm 417Настройка позиции отображения формы 418Отображение немодальной формы 418Отображение пользовательского диалогового окна на основе значения переменной 419Загрузка пользовательского диалогового окна 419О процедурах обработки событий 419

Закрытие пользовательского диалогового окна 419Пример создания пользовательского диалогового окна 421

Создание пользовательской формы 421Создание кода для отображения диалогового окна 423Тестирование диалогового окна 424Добавление процедур обработки событий 425Проверка правильности введенных данных 426Ура, заработало! 427

События объекта UserForm 427Получение дополнительных сведений о событиях 427События объекта UserForm 428События элемента управления SpinButton 429Совместное использование элементов управления SpinButton и TextBox 430

Ссылка на элементы управления пользовательского диалогового окна 433Настройка панели инструментов Toolbox 434

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

Создание шаблонов диалоговых окон 437Инструкции по созданию диалогового окна 437

Excel 2013 Power Programming with VBA.indb 15Excel 2013 Power Programming with VBA.indb 15 08.04.2014 13:04:5408.04.2014 13:04:54

Page 11: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание16

Глава 12. Примеры пользовательских форм 439Создание “меню” с помощью объекта UserForm 439

Использование элементов управления CommandButton 440Использование элемента управления ListBox 440

Выбор диапазона в пользовательской форме 441Создание заставки 443Отключение кнопки закрытия пользовательского диалогового окна 445Изменение размеров формы UserForm 446Масштабирование и прокрутка листа в пользовательском диалоговом окне 447Использование элемента управления ListBox 449

Добавление пунктов в список ListBox 450Идентификация выделенного пункта списка ListBox 454Идентификация нескольких выделенных пунктов списка ListBox 455Несколько списков в одном элементе управления ListBox 456Копирование пунктов списка ListBox 457Перемещение пунктов в списке ListBox 458Работа с многоколоночными элементами управления ListBox 459Использование элемента управления ListBox для выделения строк на листе 461Использование элемента управления ListBox для активизации листа 463

Применение элемента управления MultiPage 466Использование внешних элементов управления 467Анимация элемента управления Label 469

Глава 13. Дополнительные приемы работы с пользовательскими формами 473Немодальные диалоговые окна 474Отображение индикатора текущего состояния 477

Создание отдельного индикатора текущего состояния 478Отображение сведений о текущем состоянии с помощью элемента управления MultiPage 481Отображение индикатора текущего состояния без применения элемента управления MultiPage 484

Создание мастеров 485Настройка элемента управления MultiPage 486Добавление кнопок 486Программирование кнопок 487Программирование зависимостей 489Выполнение задачи 490

Имитация функции MsgBox 491Код функции MyMsgBox 492Как это работает 493Использование функции MyMsgBox 495

Диалоговое окно с перемещаемыми элементами управления 495Пользовательское диалоговое окно UserForm без строки заголовка 496Имитация панели инструментов с помощью формы UserForm 498

Excel 2013 Power Programming with VBA.indb 16Excel 2013 Power Programming with VBA.indb 16 08.04.2014 13:04:5408.04.2014 13:04:54

Page 12: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 17

Имитация области задач с помощью окна UserForm 500Пользовательское диалоговое окно UserForm с изменяемыми размерами 501Несколько кнопок с одной процедурой обработки событий 505Диалоговое окно выбора цвета 507Отображение диаграммы в пользовательском диалоговом окне UserForm 509

Сохранение диаграммы в виде GIF-файла 510Изменение свойства Picture элемента управления Image 510

Создание полупрозрачного окна UserForm 511Расширенная форма ввода данных 512

Подробнее о расширенной форме ввода данных 514Установка надстройки Enhanced Data Form 515

Игра в “пятнашки” 515Играем в видеопокер в окне UserForm 516

Часть IV. Профессиональные методики программирования 517

Глава 14. Разработка утилит Excel с помощью VBA 519Об утилитах Excel 519Разработка утилит с помощью VBA 520Признаки хорошей утилиты 521Утилита Text Tools 521

Зачем нужна утилита Text Tools 522Назначение проекта утилиты Text Tools 522Рабочая книга утилиты Text Tools 523Как работает утилита 524Пользовательская форма утилиты Text Tools 525Модуль Module1 526Модуль кода UserForm1 528Усовершенствование утилиты Text Tools 529Сохранение настроек утилиты Text Tools 531Отмена ранее выполненных действий 532Отображение файла справки 535Добавление кода RibbonX 535Оценка проекта 536Принципы работы утилиты Text Tools 537

Дополнительно об утилитах Excel 538

Глава 15. Работа со сводными таблицами 539Ознакомительный пример 539

Создание сводной таблицы 540Просмотр кода VBA 541Усовершенствование записанного кода сводной таблицы 542

Создание сложных сводных таблиц 545Код сводной таблицы 546Принцип работы сводной таблицы 547

Excel 2013 Power Programming with VBA.indb 17Excel 2013 Power Programming with VBA.indb 17 08.04.2014 13:04:5408.04.2014 13:04:54

Page 13: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание18

Создание нескольких сводных таблиц 548Создание обратной сводной таблицы 552

Глава 16. Управление диаграммами 555Кратко о диаграммах 556

Расположение диаграмм 556Диаграммы и средство записи макросов 557Объектная модель диаграммы 557

Создание внедренной диаграммы 558Создание диаграммы на отдельном листе 560Изменение диаграмм 561Активизация диаграммы с помощью VBA 562Перемещение диаграммы 563Деактивизация диаграммы 564Идентификация активности диаграммы 564Удаление объектов из коллекции ChartObjects или Charts 565Циклический обход диаграмм 566Изменение размеров и выравнивание диаграмм 568Создание множества диаграмм 570Экспорт диаграммы 572

Экспорт всех изображений 572Изменение применяемых в диаграмме данных 573

Изменение данных диаграммы на основе активной ячейки 575Идентификация используемых в диаграмме диапазонов данных с помощью VBA 576

Отображение подписей данных на диаграмме 579Отображение диаграммы в пользовательском диалоговом окне 583События диаграмм 585

Пример использования событий объекта Chart 586Поддержка событий для внедренных диаграмм 589Пример использования событий объекта Chart во внедренной диаграмме 590

Приемы и трюки, используемые при создании диаграмм 592Печать внедренных диаграмм на всю страницу 592Отображение/сокрытие рядов данных 592Создание статической диаграммы 594Отображение подсказки с помощью события MouseOver 596

Анимирование диаграмм 598Прокрутка диаграммы 599Создание диаграммы с графиком гипоциклоиды 601Создание диаграммы часов 602

Создание интерактивной диаграммы без написания макросов 604Получение данных приложения 605Создание переключателей на рабочем листе 605Создание списка городов 605Создание диапазона данных для интерактивной диаграммы 606

Excel 2013 Power Programming with VBA.indb 18Excel 2013 Power Programming with VBA.indb 18 08.04.2014 13:04:5508.04.2014 13:04:55

Page 14: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 19

Создание интерактивной диаграммы 607Спарклайны 607

Глава 17. Концепция событий Excel 611Типы событий Excel 611

Последовательность событий 612Размещение процедур обработки событий 613Отключение событий 614Ввод кода процедуры обработки события 615Процедуры обработки событий, которые используют аргументы 616

События уровня объекта Workbook 618Событие Open 619Событие Activate 620Событие SheetActivate 620Событие NewSheet 620Событие BeforeSave 621Событие Deactivate 621Событие BeforePrint 622Событие BeforeClose 623

События объекта Worksheet 625Событие Change 625Событие SelectionChange 631Событие BeforeDoubleClick 632Событие BeforeRightClick 632

События объекта Chart 633События объекта Application 635

Включение событий уровня объекта Application 636Проверка факта открытия рабочей книги 636Отслеживание событий уровня объекта Application 637

События объекта UserForm 638События, не связанные с объектами 639

Событие OnTime 640Событие OnKey 641

Глава 18. Взаимодействие с другими приложениями 645Запуск другого приложения из Excel 645

Использование функции Shell 645Отображение окна папки 648Использование API-функции ShellExecute 648

Активизация другого приложения с помощью Excel 649Оператор AppActivate 649Активизация приложения Microsoft Office 650

Запуск диалоговых окон панели управления 650Применение автоматизации в Excel 652

Работа с внешними объектами с помощью автоматизации 652

Excel 2013 Power Programming with VBA.indb 19Excel 2013 Power Programming with VBA.indb 19 08.04.2014 13:04:5508.04.2014 13:04:55

Page 15: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание20

Раннее и позднее связывание 652Простой пример позднего связывания 655Управление приложением Word из Excel 656Управление программой Excel из другого приложения 659

Отправка почтовых сообщений с помощью Outlook 661Отправка почтовых вложений с помощью Excel 664

Глава 19. Создание и использование надстроек 667Знакомство с надстройками 667

Надстройки и стандартные рабочие книги 668Зачем нужны надстройки 669

Использование диспетчера надстроек Excel 670Создание надстройки 672Пример разработки надстройки 673

Добавление описания в надстройку 674Создание надстройки 674Установка надстройки 676Тестирование надстройки 677Распространение надстройки 677Изменение надстройки 677

Файлы XLAM и XLSM 679Членство в коллекциях 679Отображение окон файлов XSLM и XLAM 679Рабочие листы и листы диаграмм в файлах XLSM и XLAM 680Получение доступа к VBA-процедурам надстройки 680

Управление надстройками с помощью кода VBA 684Добавление элемента в коллекцию AddIns 684Удаление элемента из коллекции AddIns 685Свойства объекта AddIn 686Получение доступа к надстройке как к рабочей книге 688События объекта AddIn 689

Оптимизация надстроек 689Проблемы, возникающие при использовании надстроек 690

Корректная установка надстроек 690Ссылки на другие файлы 692Указание корректной версии Excel 693

Часть V. Разработка приложений 695

Глава 20. Работа с лентой 697Начальные сведения о ленте 697Управление лентой с помощью VBA 701

Доступ к элементам управления на ленте 702Работа с лентой 703Активизация вкладки 705

Excel 2013 Power Programming with VBA.indb 20Excel 2013 Power Programming with VBA.indb 20 08.04.2014 13:04:5508.04.2014 13:04:55

Page 16: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 21

Настройка ленты 705Простой пример кода RibbonX 706Усовершенствование простого примера кода RibbonX 709Другой пример кода RibbonX 714Демонстрация возможностей элементов управления ленты 716Пример элемента управления DynamicMenu 723Некоторые замечания о настройке ленты 725

Создание традиционных панелей инструментов 726Ограничения, присущие традиционным панелям в Excel 2007 и более поздних версиях 727Код панели инструментов 727

Глава 21. Работа с контекстными меню 731Обзор объекта CommandBar 731

Типы объектов CommandBar 732Отображение контекстных меню 732Ссылки на объекты CommandBar 733Установка ссылок на элементы управления в объекте CommandBar 734Свойства элементов управления CommandBar 735Отображение всех элементов контекстного меню 736

Настройка контекстных меню с помощью VBA 738Особенности версии Excel 2013 738Сброс контекстных меню 740Отключение контекстного меню 741Отключение элементов контекстного меню 741Добавление нового элемента в контекстное меню Cell 742Добавление подменю в контекстное меню 743Ограничение контекстных меню единственной книгой 746

Контекстные меню и события 746Автоматическое добавление и удаление меню 746Отключение или сокрытие элементов контекстного меню 747Создание контекстного меню 747

Глава 22. Создание справки для приложений 751Справка в приложениях Excel 751Справочная система, созданная с помощью компонентов Excel 754

Использование примечаний к ячейке для предоставления справки 754Применение текстового поля для предоставления справки 755Использование рабочего листа для отображения справки 756Отображение справки в пользовательском диалоговом окне 758

Отображение справки в окне веб-браузера 761Использование HTML-файлов 761Использование файла MHTML 762

Использование средства HTML Help 762Метод Help 764

Excel 2013 Power Programming with VBA.indb 21Excel 2013 Power Programming with VBA.indb 21 08.04.2014 13:04:5508.04.2014 13:04:55

Page 17: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание22

Связывание файлов справочного руководства с приложением 766Связывание раздела справочного руководства с функцией VBA 767

Глава 23. Разработка пользовательских приложений 769Что такое пользовательское приложение 769Мастер погашения по кредиту 769

Использование приложения 770Структура рабочей книги 771Как это работает 772

Концепции разработки приложений 779

Часть VI. Дополнительные темы 781

Глава 24. Вопросы совместимости 783Что такое совместимость 783Проблемы совместимости 784Избегайте использования новых средств 785Поддержка платформы Macintosh 787Использование 64-разрядной версии Excel 788Создание интернациональных приложений 789

Многоязычные приложения 791Язык в VBA 791Использование локализованных свойств 792Идентификация настроек системы 793Настройки даты и времени 795

Глава 25. Управление файлами с помощью VBA 797Часто выполняемые операции с файлами 797

Управление файлами с помощью функций VBA 798Использование объекта FileSystemObject 802

Отображение расширенной информации о файле 805Работа с текстовыми файлами 807

Открытие текстового файла 808Чтение текстового файла 809Запись в текстовый файл 809Получение номера файла 809Идентификация или установка позиции в файле 810Операторы чтения и записи в файл 810

Примеры управления текстовыми файлами 810Импорт данных из текстового файла 810Экспорт диапазона в текстовый файл 811Импорт текстового файла в диапазон 814Журнальная регистрация операций в Excel 815Фильтрация текстового файла 816Экспорт диапазона в формат HTML 816

Excel 2013 Power Programming with VBA.indb 22Excel 2013 Power Programming with VBA.indb 22 08.04.2014 13:04:5608.04.2014 13:04:56

Page 18: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание 23

Экспорт диапазона в XML-файл 819Архивирование и разархивирование файлов 822

Архивирование файлов 822Разархивирование файла 824

Модель ADO 825

Глава 26. Управление компонентами Visual Basic 827Знакомство с IDE 827Объектная модель IDE 830

Коллекция VBProjects 830Отображение всех компонентов проекта VBA 832Отображение всех процедур VBA, содержащихся в рабочей книге 834Замещение модуля обновленной версией 835Программное создание кода VBA 837Добавление элементов управления в диалоговое окно UserForm на этапе разработки 838

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

Программное создание диалоговых окон UserForm 842Простой пример 842Более сложный пример 844

Глава 27. Принципы управления модулями классов 849Определение модуля класса 849Пример создания модуля класса NumLock 850

Вставка модуля класса 851Добавление кода VBA 851Использование модуля класса NumLockClass 853

Дополнительные сведения о модулях классов 854Программирование свойств объектов 854Программирование методов объектов 856События модуля класса 857

Модуль класса CSVFileClass 857Переменные уровня модуля класса 858Процедуры свойств 858Процедуры методов 858Использование объекта CSVFileClass 860

Глава 28. Работа с цветом 863Определение цвета 863

Цветовая модель RGB 864Цветовая модель HSL 864Преобразование цветов 865

Excel 2013 Power Programming with VBA.indb 23Excel 2013 Power Programming with VBA.indb 23 08.04.2014 13:04:5608.04.2014 13:04:56

Page 19: Excel 2013 Power Programming with · PDF fileКоманды редактора VBA 29 ... Управление объектами и коллекциями 222 Конструкция

Содержание24

Работа с оттенками серого 867Преобразование цветов в оттенки серого 867

Экспериментирование с цветами 869Темы документа 870

Знакомство с темами документа 870Цвета темы документа 871Отображение всех цветов темы 874

Работа с фигурами 876Фоновый цвет фигуры 876Фигуры и цвета темы 879

Изменение цветов диаграммы 880

Глава 29. Часто задаваемые вопросы о программировании в Excel 885Предмет рассмотрения данной главы 885Общие вопросы об Excel 886Редактор Visual Basic 891Процедуры 893Функции 897Объекты, свойства, методы и события 899Вопросы, связанные с обеспечением безопасности 907Пользовательские формы UserForm 908Надстройки 912Пользовательский интерфейс 914

Часть VII. Приложения 917

Приложение А. Справочник по операторам и функциям VBA 919Вызов функций Excel с помощью операторов VBA 922

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

Приложение В. Сайт книги 933

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

Excel 2013 Power Programming with VBA.indb 24Excel 2013 Power Programming with VBA.indb 24 08.04.2014 13:04:5608.04.2014 13:04:56