- •Об авторе
- •Введение
- •Глава 1. Excel 2010: история программы
- •Краткая история электронных таблиц
- •Все начиналось с VisiCalc
- •Quattro Pro
- •Microsoft Excel
- •Почему программа Excel так удобна разработчикам
- •Место Excel в стратегии Microsoft
- •Объектное мышление
- •Рабочие книги
- •Рабочие листы
- •Листы диаграмм
- •Листы макросов XLM
- •Пользовательский интерфейс Excel
- •Ввод данных
- •Формулы, функции и имена
- •Выделение объектов
- •Форматирование
- •Глава 3. Особенности формул
- •О формулах
- •Вычисление формул
- •Ссылки на ячейки и диапазоны
- •Зачем нужны неотносительные ссылки
- •Ссылки на другие листы или рабочие книги
- •Применение имен к существующим ссылкам
- •Пересечение имен
- •Присвоение имен столбцам и строкам
- •Определение области действия
- •Присвоение имен константам
- •Присвоение имен объектам
- •Ошибки в формулах Excel
- •Формулы массивов
- •Пример формулы массива
- •Создание календаря с помощью формулы массива
- •Достоинства и недостатки формул массивов
- •Примеры формул суммирования
- •Другие инструменты подсчета
- •Работа со значениями даты и времени
- •Использование дат до 1900 года
- •Создание мегаформул
- •Глава 4. Файлы Excel
- •Запуск Excel
- •Типы файлов
- •Форматы файлов Excel
- •Форматы текстовых файлов
- •Форматы файлов баз данных
- •Другие форматы файлов
- •Создание шаблонов
- •Создание шаблонов рабочих книг
- •Файл XLB
- •Файлы надстроек
- •Настройки Excel
- •Глава 5. Приложения электронных таблиц
- •О приложениях электронных таблиц
- •Разработчик и конечный пользователь
- •Кто такие разработчики и чем они занимаются
- •Классификация пользователей электронных таблиц
- •Для кого предназначены приложения электронных таблиц
- •Решение проблем с помощью Excel
- •Основные типы электронных таблиц
- •Однопользовательские приложения
- •Приложения-утилиты
- •Надстройки с функциями рабочих листов
- •Одноблоковые бюджеты
- •Электронные таблицы для хранения данных и доступа к ним
- •Клиентские приложения баз данных
- •Глава 6. Принципы разработки приложений электронных таблиц
- •Этапы разработки приложения
- •Определение потребностей пользователя
- •Проектирование приложения с учетом потребностей пользователя
- •Определение удобного пользовательского интерфейса
- •Работа с конечным пользователем
- •Тестирование приложения
- •Создание привлекательных и интуитивно понятных приложений
- •Документирование усилий, затраченных на разработку
- •Распространение приложения среди пользователей
- •Обновление приложения
- •Другие вопросы разработки приложений
- •Версия Excel, установленная у пользователя
- •Трудности, касающиеся поддержки языка
- •Видеорежимы
- •Глава 7. Введение в VBA
- •Основы языка BASIC
- •Обзор VBA
- •Объектные модели
- •Сравнение VBA и XLM
- •Основы VBA
- •Работа с Project Explorer
- •Добавление нового модуля VBA
- •Удаление модуля VBA
- •Экспорт и импорт объектов
- •Работа с окнами кода
- •Сворачивание и восстановление окон
- •Сохранение кода VBA
- •Ввод кода VBA
- •Настройка среды VBE
- •Что записывается
- •Параметры записи
- •Улучшение записанных макросов
- •Об объектах и коллекциях
- •Иерархия объектов
- •О коллекциях
- •Ссылки на объекты
- •Свойства и методы
- •Свойства объекта
- •Методы объекта
- •Свойства объекта Comment
- •Методы объекта Comment
- •Коллекция Comments
- •Работа с объектами Range
- •Свойство Range
- •Свойство Offset
- •Что следует знать об объектах
- •Важные концепции для запоминания
- •Узнайте больше об объектах и свойствах
- •Обзор элементов и конструкций VBA
- •Комментарии
- •Переменные, типы данных и константы
- •Определение типов данных
- •Объявление переменных
- •Работа с константами
- •Операторы присваивания
- •Массивы
- •Объявление массивов
- •Объявление многомерных массивов
- •Объявление динамических массивов
- •Объектные переменные
- •Пользовательские типы данных
- •Встроенные функции
- •Управление объектами и коллекциями
- •Конструкция With - End With
- •Конструкция For Each - Next
- •Контроль за выполнением кода
- •Конструкция Select Case
- •Циклическая обработка инструкций
- •Глава 9. Работа с процедурами VBA
- •О процедурах
- •Объявление процедуры Sub
- •Область действия процедуры
- •Выполнение процедуры
- •Выполнение процедуры с помощью ленты
- •Выполнение процедуры из пользовательского контекстного меню
- •Выполнение процедуры из другой процедуры
- •Выполнение процедуры по щелчку на объекте
- •Выполнение процедуры по событию
- •Выполнение процедуры в окне отладки
- •Передача аргументов процедурам
- •Обработка ошибок
- •Перехват ошибок
- •Реальный пример
- •Цель
- •Требования к проекту
- •Исходные данные
- •Подход
- •Что необходимо знать
- •Написание кода
- •Создание процедуры сортировки
- •Устранение проблем
- •Доступность
- •Глава 10. Создание функций
- •Процедуры и функции
- •Назначение пользовательских функций
- •Простой пример функции
- •Анализ пользовательской функции
- •Синтаксис функции
- •Область действия функции
- •Аргументы функций
- •Примеры функций
- •Функции без аргументов
- •Функция с одним аргументом
- •Функция с двумя аргументами
- •Функция с аргументом в виде массива
- •Функция с необязательными аргументами
- •Функция VBA, возвращающая массив
- •Функция с неопределенным количеством аргументов
- •Расширенные функции для работы с датами
- •Отладка функций
- •Определение категории функции
- •Использование надстроек для хранения пользовательских функций
- •Использование функций Windows API
- •Примеры функций Windows API
- •Определение папки Windows
- •Определение состояния клавиши <Shift>
- •Дополнительная информация о функциях Windows API
- •Учимся на примерах
- •Работа с диапазонами
- •Копирование диапазона
- •Перемещение диапазона
- •Подсчет выделенных ячеек
- •Определение типа выделенного диапазона
- •Удаление всех пустых строк
- •Дублирование строк
- •Чтение и запись диапазонов
- •Перенесение одномерных массивов
- •Перенесение диапазона в массив типа Variant
- •Выбор ячеек по значению
- •Копирование несмежных диапазонов
- •Управление рабочими книгами и листами
- •Сохранение всех рабочих книг
- •Синхронизация рабочих книг
- •Методы программирования на VBA
- •Переключение значения булева свойства
- •Определение количества страниц для печати
- •Отображение списка шрифтов
- •Обработка последовательности файлов
- •Полезные функции для программ VBA
- •Функция FileExists
- •Функция FileNameOnly
- •Функция PathExists
- •Функция RangeNameExists
- •Функция SheetExists
- •Получение значения из закрытой рабочей книги
- •Полезные функции в формулах Excel
- •Получение информации о форматировании ячейки
- •Беседа с рабочим листом
- •Отображение даты сохранения файла или вывода файла на печать
- •Основы иерархии объектов
- •Подсчет количества ячеек между двумя значениями
- •Соответствует ли строка шаблону
- •Возвращение из строки n-го элемента
- •Возвращение максимального значения всех рабочих листов
- •Возвращение массива случайных целых чисел без повторов
- •Расположение значений диапазона в произвольном порядке
- •Определение текущего видеорежима
- •Чтение и запись параметров системного реестра
- •Глава 12. Создание собственных диалоговых окон
- •Перед созданием диалоговых окон...
- •Использование окон ввода данных
- •Функция VBA MsgBox
- •Отображение формы ввода данных с помощью VBA
- •CommandButton
- •Frame
- •Image
- •Label
- •ListBox
- •MultiPage
- •OptionButton
- •RefEdit
- •ScrollBar
- •SpinButton
- •TabStrip
- •TextBox
- •ToggleButton
- •Настройка элементов управления пользовательского диалогового окна
- •Общие свойства
- •Отображение пользовательского диалогового окна
- •Отображение немодальной формы
- •Отображение пользовательского диалогового окна на основе значения переменной
- •Загрузка пользовательского диалогового окна
- •О процедурах обработки событий
- •Закрытие пользовательского диалогового окна
- •Пример создания пользовательского диалогового окна
- •Создание пользовательской формы
- •Создание кода для отображения диалогового окна
- •Проверка правильности введенных данных
- •События объекта UserForm
- •События объекта UserForm
- •События элемента управления SpinButton
- •Ссылка на элементы управления пользовательского диалогового окна
- •Настройка панели инструментов Toolbox
- •Добавление новых страниц
- •Настройка или комбинирование элементов управления
- •Вопросы для самоконтроля
- •Создание заставки
- •Отключение кнопки закрытия пользовательского диалогового окна
- •Изменение размера диалогового окна
- •Добавление опций в элемент управления ListBox
- •Определение выделенного элемента списка
- •Определение нескольких выделенных элементов списка
- •Работа с многоколоночными элементами управления ListBox
- •Использование элемента управления ListBox для выделения строк на листе
- •Использование элемента управления ListBox для активизации листа
- •Использование внешних элементов управления
- •Глава 15. Дополнительные приемы работы с пользовательскими формами
- •Отображение индикатора текущего состояния
- •Создание мастеров
- •Программирование зависимостей
- •Выполнение задачи
- •Имитация работы функции MsgBox
- •Несколько кнопок с одной процедурой обработки событий
- •Глава 16. Разработка утилит Excel с помощью VBA
- •Об утилитах Excel
- •Создание утилит с помощью VBA
- •Признаки хорошей утилиты
- •Утилита Text Tools
- •Рабочая книга утилиты
- •Как работает утилита
- •Оценка проекта
- •Принципы работы утилиты
- •Дополнительно об утилитах Excel
- •Глава 17. Работа со сводными таблицами
- •Вводный пример
- •Просмотр созданного кода
- •Код сводной таблицы
- •Создание обратной сводной таблицы
- •Кратко о диаграммах
- •Создание внедренной диаграммы
- •Размещение диаграммы на листе диаграммы
- •Активизация диаграммы с помощью кода VBA
- •Деактивизация диаграммы
- •Определение активности диаграммы
- •Изменение размеров и выравнивание диаграмм
- •Экспорт диаграммы
- •События диаграмм
- •Поддержка событий для встроенных диаграмм
- •Тонкости создания диаграмм
- •Печать встроенных диаграмм на всю страницу
- •Отображение/сокрытие рядов данных
- •Создание фиксированной диаграммы
- •Анимирование диаграмм
- •Прокрутка диаграммы
- •Глава 19. Концепция событий Excel
- •Типы событий Excel
- •Понимание последовательности событий
- •Отключение событий
- •Ввод кода процедуры обработки события
- •События уровня объекта Workbook
- •Событие Open
- •Событие Activate
- •Событие SheetActivate
- •Событие NewSheet
- •Событие Deactivate
- •Событие BeforePrint
- •Событие Change
- •Включение событий уровня объекта Application
- •Определение факта открытия рабочей книги
- •События объекта UserForm
- •Запуск другого приложения из Excel
- •Использование функции Shell
- •Использование API-Функции ShellExecute
- •Инструкция AppActivate
- •Работа с внешними объектами
- •Раннее и позднее связывание
- •Простой пример позднего связывания
- •Использование метода SendKeys
- •Глава 21. Создание и использование надстроек
- •Определение надстройки
- •Основные причины создания надстроек
- •Создание надстройки
- •Пример надстройки
- •Установка надстройки
- •Тестирование надстройки
- •Распространение надстройки
- •Изменение надстройки
- •Членство в коллекциях
- •Получение доступа к VBA-процедурам надстройки
- •События объекта AddIn
- •Оптимизация производительности надстроек
- •Проблемы, связанные с использованием надстроек
- •Правильная установка
- •Ссылки на другие файлы
- •Указание правильной версии Excel
- •Глава 22. Работа с лентой
- •Начальные сведения о ленте
- •Активизация вкладки
- •Настройка ленты
- •Простой пример кода RibbonX
- •Некоторые замечания о настройке ленты
- •Код панели инструментов
- •Глава 23. Работа с контекстными меню
- •Обзор объекта CommandBar
- •Типы объектов CommandBar
- •Отображение контекстных меню
- •Настройка контекстных меню с помощью VBA
- •Сброс контекстных меню
- •Отключение контекстного меню
- •Отключение элементов контекстного меню
- •Добавление подменю в контекстное меню
- •Автоматическое добавление и удаление меню
- •Создание нового контекстного меню
- •Справка в приложениях Excel
- •Справочная система, созданная с помощью компонентов Excel
- •Использование примечаний к ячейке для предоставления справки
- •Использование средства HTML Help
- •Связывание файлов справочного руководства с приложением
- •Глава 25. Разработка пользовательских приложений
- •Что такое приложение, ориентированное на пользователя
- •Как это работает
- •Концепции разработки приложений
- •Концепция совместимости
- •Проблемы совместимости
- •Избегайте использования новых возможностей
- •Использование 64-разрядной версии Excel
- •Создание интернациональных приложений
- •Многоязычные приложения
- •Идентификация настроек системы
- •Параметры настройки даты и времени
- •Часто выполняемые операции с файлами
- •Управление файлами с помощью функций VBA
- •Использование объекта FileSystemObject
- •Открытие текстового файла
- •Чтение текстового файла
- •Запись в текстовый файл
- •Получение номера файла
- •Определение или установка позиции в файле
- •Примеры управления текстовыми файлами
- •Импортирование данных из текстового файла
- •Экспортирование диапазона в текстовый файл
- •Импортирование текстового файла в диапазон
- •Протоколирование операций в Excel
- •Фильтрация текстового файла
- •Экспортирование диапазона в формат HTML
- •Введение в IDE
- •Объектная модель IDE
- •Использование VBA для создания кода VBA
- •Простой пример
- •Глава 29. Модули классов
- •Определение модуля класса
- •Пример создания модуля класса
- •Дополнительные сведения о модулях классов
- •События модуля класса
- •Модуль класса CSVFileClass
- •Глава 30. Работа с цветом
- •Определение цвета
- •Цветовая модель RGB
- •Темы документа
- •Изменение цветов диаграммы
- •Списки часто задаваемых вопросов
- •Общие вопросы об Excel
- •Редактор Visual Basic
- •Процедуры
- •Функции
- •Объекты, свойства, методы и события
- •Пользовательские диалоговые окна
- •Надстройки
- •Пользовательский интерфейс
- •Справочная система Excel
- •Техническая поддержка со стороны компании Microsoft
- •Группы новостей
- •Веб-сайты
- •Сайт Йона Пелтиера
- •Системные требования
- •Использование компакт-диска
- •Файлы и программы, находящиеся на компакт-диске
- •Решение проблем
- •Предметный указатель
802 |
Часть VII. Дополнительные темы |
Примечание
Описанная выше процедура имеет один недостаток: она не может импорти ровать такие значения, как символы кавычек или запятой. Кроме того, импортированные значения даты окружены символами решетки, например
#2007-05-12#.
Протоколирование операций в Excel
Пример, приведенный в этом разделе, предназначен для записи данных в текстовый файл при каждом открытии и закрытии Excel. Для того чтобы эта процедура работала надежно, она должна находиться в рабочей книге, которая всегда открывается и закры вается вместе с Excel. Рекомендуется сохранять эту процедуру в персональной книге макросов.
Следующая процедура, которая находится в модуле кода объекта ThisW orkbook (ЭтаКнига), выполняется каждый раз при открытии файла.
P riv a te |
Sub |
Workbook_Open() |
|
Open |
A p p lic a tio n .P a th |
& " \e x c e lu s a g e .tx t" For Append As #1 |
|
P r in t |
#1, |
"Запущено " |
& Now |
Close |
#1 |
|
|
End Sub |
|
|
|
В результате выполнения этой процедуры в файл e x c e lu sa g e . t x t добавляется но вая строка. Эта строка содержит текущие значения даты и времени и может выглядеть следующим образом:
Запущено 1 1 /1 6 /1 0 9 :2 7 :4 3 РМ
Следующая процедура вызывается перед закрытием рабочей книги. В результате ее выполнения добавляется слово Остановлено, а также значения даты и времени.
P riv a te |
Sub |
W orkbook_B eforeC lose(C ancel |
As Boolean) |
||
Open |
A p p lic a tio n .P a th |
& |
" \e x c e lu s a g e .tx t" _ |
||
For Append As #1 |
|
|
|
||
P r in t |
#1, |
"Остановлено |
" |
& Now |
|
C lose |
#1 |
|
|
|
|
End Sub |
|
|
|
|
|
|
К о м п а к т-д и ск |
|
|
|
|
|
Рабочая книга под названием e x c e l |
usage lo g .x s lm включает все опи |
|||
|
санные в разделе процедуры и находится на прилагаемом компакт-диске. |
||||
П ерекрестная ссы лка
Обратитесь к главе 19, где содержатся дополнительные сведения о процедурах обработки событий, таких как Workbook_Open и W orkbook_Beforeclose.
Фильтрация текстового файла
Пример данного раздела демонстрирует одновременную работу с двумя текстовыми файлами. Процедура F i l t e r F i l e , которая приводится ниже, читает текстовый файл ( i n f i l e . t x t ) и копирует строки, содержащие определенный текст, во второй тексто вый файл ( o u tp u t. tx t) .
Sub F i l t e r F i l e ()
Open ThisW orkbook. P ath & " \ i n f i l e . t x t " For In p u t As #1
Глава 27. Управление файлами с помощью VBA |
803 |
|||||
Open A p p lic a tio n . D e fa u ltF ile P a th |
& " \ o u t p u t . t x t " _ |
|||||
For |
O utput |
As |
#2 |
|
|
|
T extT o F ind = "Январь" |
|
|
||||
Do U n t il |
EOF(1) |
|
|
|
||
L in e |
In p u t |
#1, |
d a ta |
Then |
|
|
I f |
I n S t r ( l, |
d a ta , T extToF ind) |
|
|||
|
P r in t #2, d a ta |
|
|
|||
End |
I f |
|
|
|
|
|
Loop |
|
|
|
|
|
|
Close |
#1 |
|
|
|
|
|
End Sub |
|
|
|
|
|
|
|
К о м п а к т-д и ск |
|
|
|||
|
Пример, |
рассматриваемый в этом |
разделе, находится на прилагаемом |
|||
|
к книге компакт-диске в файле f i l t e r |
te x t f i l e . xlsm . |
||||
Экспортирование диапазона в формат HTML
Рассматриваемый в этой главе пример демонстрирует порядок экспортирования диа пазона в файл HTML. Этот файл фактически представляет собой текстовый файл, вклю чающий специальные теги форматирования, описывающие способ представления ин формации в окне веб-браузера.
Что мешает использовать команду Excel Файл^Сохранить как веб-страницу
(File^Save As)? Процедура, приведенная в данном примере, имеет одно заметное пре имущество: она не создает “раздутый” код HTML. Например, процедура E x p o r t - ToHTML использовалась для экспорта диапазона из 70 ячеек. Результирующий файл име ет размер 2,6 Кбайт. Если выполнить команду Excel Файл^Сохранить как веб страницу (File^Save as Web Page), то результирующий файл будет иметь размер 15,8 Кбайт (в шесть раз больше).
С другой стороны, процедура E x p o r t ToHTML не сохраняет все параметры форма тирования ячеек. Она поддерживает только форматирование с помощью полужирного и курсивного начертания, а также выравнивание по горизонтали. Эта процедура также может применяться во многих ситуациях, а также служить основой для улучшений в дальнейшем.
Sub ExportToHTM L() |
V a ria n t |
|||
Dim |
Filenam e As |
|||
Dim |
TDOpenTag |
As |
S tr in g , TDCloseTag As S trin g |
|
Dim |
C e llC o n te n ts |
As |
S trin g |
|
Dim |
Rng As Range |
As |
In te g e r |
|
Dim |
r As Long, |
с |
||
'Использование выделенного диапазона ячеек
Set |
Rng |
= |
A p p lic a tio n . In te r s e c t( A c tiv e s h e e t. UsedRange, _ |
|
I f |
S e le c tio n ) |
Then |
||
Rng |
Is |
N o th in g |
||
MsgBox |
"Нечего |
э ксп о р ти р о в а ть .", v b C r it ic a l |
||
End |
E x it |
Sub |
|
|
I f |
|
|
|
|
'Получить имя файла
Filenam e = A p p lic a tio n .G e tS a v e A s F ile n a m e ( _
In itia lF ile N a m e := "m yrange. h tm ", |
_ |
f i l e F i l t e r := "HTML F ile s ( * . h tm ), |
* .h tm ") |
I f Filenam e = F alse Then E x it Sub
804 |
|
|
|
|
Часть VII. Дополнительные темы |
1 |
Открытие |
те к с то в о го файла |
#1 |
||
|
Open Filenam e For |
O u tp ut As |
|||
' |
Запись |
те го в |
|
|
|
|
P r in t |
#1, |
" <HTML>" |
BORDER=0 |
CELLPADDING=3 >" |
|
P r in t |
#1, |
"<TABLE |
||
'Циклический обход я чеек
For г |
= 1 |
To |
Rng. Rows. Count |
|
|
|
|
|||
P r in t |
#1, |
"<TR>" |
|
|
|
|
|
|
||
For |
с |
= 1 To Rng. Columns. Count |
|
|
||||||
|
S e le c t |
Case R n g .C e lls (r, |
c ) .H o riz o n ta lA lig n m e n t |
|||||||
|
Case x lH A lig n L e ft |
|
|
|
|
|||||
|
|
TDOpenTag = " <TD ALIGN=LEFT>" |
||||||||
|
Case x lH A lig n C e n te r |
|
|
|
|
|||||
|
|
TDOpenTag = " <TD ALIGN=CENTER>" |
||||||||
|
Case x lH A lig n G e n e ra l |
|
|
|
c ) ) Then |
|||||
|
|
I f |
Is N u m e ric (R n g .C e lls (r, |
|||||||
|
|
|
TDOpenTag |
= "<TD ALIGN=RIGHT>" |
||||||
|
|
E lse |
|
|
|
|
|
|
|
|
|
|
End |
TDOpenTag = " <TD ALIGN=LEFT>" |
|||||||
|
|
I f |
|
|
|
|
|
|
|
|
|
Case x lH A lig n R ig h t |
|
|
|
|
|||||
|
End |
TDOpenTag |
= |
"<TD ALIGN=RIGHT>" |
||||||
|
S e le c t |
|
|
|
|
|
|
|
||
|
TDCloseTag |
= |
"</TD>" |
|
|
|
Then |
|||
|
I f |
R n g .C e lls ( r / |
c ) .F o n t.B o ld |
|||||||
|
|
TDOpenTag = TDOpenTag & "<B>" |
||||||||
|
End |
TDCloseTag |
= |
"< /B > " |
& TDCloseTag |
|||||
|
I f |
|
|
|
c ) . F o n t. I t a |
l i c Then |
||||
|
I f |
R n g .C e lls (r, |
||||||||
|
|
TDOpenTag |
= TDOpenTag |
& |
" < I> " |
|||||
|
End |
TDCloseTag |
= |
" < /I> " |
& TDCloseTag |
|||||
|
I f |
|
|
|
|
|
|
|
|
|
|
C e llC o n te n ts |
= |
R n g .C e lls (r, |
|
c ) .T e x t |
|||||
|
P r in t |
#1, |
TDOpenTag & C e llC o n te n ts & TDCloseTag |
|||||||
N ext с |
#1, |
"</TR>" |
|
|
|
|
|
|||
P r in t |
|
|
|
|
|
|||||
N ext r |
|
|
|
|
|
|
|
|
|
|
'Закрытие таблицы
P r in t |
#1, |
"< /TABLE>" |
P r in t |
#1, |
"</HTML>" |
'Закрытие файла
Close #1
'Сообщение для пользователя
MsgBox Rng.Count & " Экспортируемые ячейки " & Filenam e End Sub
Процедура начинает свою работу с определения экспортируемого диапазона. Данный диапазон определяется как пересечение выделенного диапазона и используемой области рабочего листа. Это позволяет удостовериться, что не будет обрабатываться весь столбец или строка. Пользователь видит на экране диалоговое окно с просьбой указать имя фай ла. Далее открывается указанный текстовый файл. Основная работа выполняется в двух циклах F or-N ext. Код генерирует соответствующий код HTML (записывает необходи мые дескрипторы) и заносит в файл экспортируемые данные. Наконец, файл закрывает ся, и пользователь может увидеть окно сообщения с итоговой информацией.
Глава 27. Управление файлами с помощью VBA |
807 |
П р и м еч ан и е
Хотя, начиная с версии Excel 2003, появилась улучшенная поддержка XMLфайлов, даже в Excel 2010 невозможно создание XML-файла на основе про извольного диапазона данных без наличия файла карты (схемы) для данных.
Ниже приведен код процедуры E xportT oX M L . Как видите, она имеет много общего с процедурой E xportT oH T M L, рассмотренной в предыдущем разделе.
Sub ExportToXM L() |
|
V a ria n t |
|
Dim |
Filenam e As |
||
Dim |
Rng As Range |
As Long |
|
Dim |
r As Long, |
с |
|
'Настройка диапазона
Set Rng = Range( "T a b le l[# A 1 1 ] ")
'Получение имени файла
Filenam e = A p p lic a tio n .G e tS a v e A s F ile n a m e ( _
In itia lF ile N a m e := "m y ra n g e .x m l", |
_ |
||
f i l e F i l t e |
r : ="XML |
F ile s ( * . x m l) , |
* .x m l") |
I f Filenam e |
= F a lse |
Then E x it Sub |
|
'Открытие те ксто во го файла
Open Filenam e For O utput As #1
1 Запись |
тего в |
<xml> |
|
P r in t |
#1, |
"<?xm l v e rs io n = "" 1 .0 " " encoding= _ |
|
""U T F -8 |
"" |
s ta n d a lo n e = "" y e s " "?>" |
|
P r in t |
#1, |
"< E m ploye e List |
|
x m ln s :x s i= |
" " h t t p : //w w w .w 3. org/2001/X M LS chem a -instance" ">" |
||
'Циклический обход ячеек
For г |
= 2 |
To |
Rng. Rows. Count |
|
|
|
|||
P r in t |
#1, |
"<Employee>" |
|
|
|
||||
For |
с |
= 1 |
To |
Rng. Columns. Count |
c) |
& |
"> "; |
||
|
P r in t |
#1, |
"< " |
Sc |
R n g .C e lls (1, |
||||
|
I f |
Is D a te (R n g . C e lls ( r , c ) ) Then |
c) , "yyyy-m m -dd") ; |
||||||
|
|
P r in t |
#1, |
Form at(R ng. C e lls ( r , |
|||||
|
E lse |
|
#1, |
R n g .C e lls ( r / c ) .T e x t; |
|
||||
|
End |
P r in t |
|
||||||
|
I f |
#1, |
" < /" |
Sc R n g .C e lls (1, |
c) |
& |
">" |
||
|
P r in t |
||||||||
N ext с |
#1, |
"</E m ployee>" |
|
|
|
||||
P r in t |
|
|
|
||||||
N ext r |
|
|
|
|
|
|
|
|
|
'Закрытие таблицы
P r in t |
#1, |
"< /E m p lo y e e L is t> " |
1 Закрытие |
файла |
|
Close |
#1 |
|
'Сообщение для пользователя
MsgBox |
Rng. Rows. Count - 1 & " записей экспортировано в " _ |
Sc |
Filenam e |
End Sub |
|
|
К о м п а к т-д и ск |
|
Этот пример находится на прилагаемом компакт-диске в файле e x p o rt to |
|
XML.xlsm. |
812 |
|
Часть VII. Дополнительные темы |
1 Информация |
о |
б азе данных |
DBFullName |
= |
ThisW orkbook. Path & "\b u d g e t d a ta .a c c d b " |
'Открытие соединения
Set |
C on ne ction |
= New ADODB. C on ne ction |
Cnct |
= "P ro vid e r= M icro so ft.A C E .O L E D B .1 2 .0 ;" |
|
Cnct |
= Cnct & "D ata Source=" & DBFullName & " ; " |
|
C onnection.O pen |
C o n n e c tio n S trin g : =Cnct |
|
1 Создание набора |
записей |
|
Set |
R ecordset = New ADODB. R ecordset |
|
W ith |
R ecordset |
|
'Фильтр
|
Src |
= |
"SELECT * |
FROM Budget |
WHERE Ite m |
= |
'L e a se ' " |
|||
|
Src |
= |
Src |
Sc |
"and |
D iv is io n = |
'N . A m e rica ' |
" |
||
|
Src |
= |
Src |
Sc |
"and |
Year = |
'2 0 0 8 '" |
|
|
|
|
.Open |
S o u rce := S rc, A c tiv e C o n n e c tio n : =C onnection |
||||||||
' |
Запись имени |
поля |
|
|
|
|
||||
|
For |
Col = |
0 |
To R e c o rd s e t. F ie ld s . Count |
- |
1 |
||||
|
|
Range( " A l" ) . O f f s e t (0, |
C o l).V a lu e = |
_ |
|
|||||
|
Next |
R e c o rd s e t. F ie ld s (C o l).N a m e |
|
|
||||||
|
|
|
|
|
|
|
|
|
||
'Запись набора записей
|
Range( " A l" ) . O f f s e t (1, |
0 ) . CopyFromRecordset |
R ecordset |
End |
W ith |
|
|
Set |
R ecordset = N o th in g |
|
|
C o n n e c tio n . C lose |
|
|
|
Set |
C on ne ction = N o th in g |
|
|
End Sub |
|
|
|
|
К о м п а к т-д и ск |
|
|
|
Рассматриваемый в этом разделе пример (sim p le ado exam ple .xlsm ) на |
||
|
ряду с файлом базы данных Access (budget |
d a ta .a ccd b ) находится на |
|
|
прилагаемом к книге компакт-диске. Также на этом компакт-диске можно |
||
|
найти пример использования технологии ADO для запроса текстового файла |
||
|
CSV. Файл sim p le ado |
exam ple2 .xlsm использует большой CSV-файл под |
|
именем m usic lis t . c s v .
