Работа с Excel из Delphi. Часть 1
Подготовка
Откроем нашу среду разработки Delphi (в моем случае это Delphi 2010). Создадим новый проект. Должен сказать, что работа с Excel происходит через объекты COM. Поэтому нам надо подключить в раздел USES нашего проекта модуль COMObj. Так же нам понадобится модуль ActiveX. Это будет выглядеть примерно вот так:
Данная функция ищет CLSID. по соответствующему ProgID в реестре, в нашем случае мы ищем «Excel. Application». Если открыть реестр и перейти к ветке:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes
то там можно будет обнаружить много разделов. Среди них есть как раз нужный нам «Excel. Application» (при условии, что данное ПО установлено в системе). К сведению: у этого раздела имеется еще два подраздела:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel. Application\CurVer
Параметры функции:
- pszProgID. строка, содержащая ProgID.
- clsid. получает CLSID.
Возвращаемые значения:
- S_OK - CLSID создан успешно.
- E_OUTOFMEMORY - нет памяти.
- E_INVALIDARG - указывает что один или более аргументов неверны. Стоит проверить правильность строки pszProgID.
При загрузке приложения ищем наличие Excel в системе. Если не находим, то выводим сообщение пользователю и закрываем программу с помощью метода Halt. Если находим, то просто показываем форму.
Проверить, запущен ли Microsoft Excel
Далее давайте кинем на форму одну кнопку TButton. На событии OnClick будем писать код работы с Excel. Первое что мы сделаем, это добавим локальную переменную типа Variant для доступа к Excel с именем, например, FExcel :
Теперь определимся, что мы хотим. Я всегда создавал новый экземпляр экселя, даже если он был уже запущен в системе. Но я это не вы. Поэтому я покажу вам, как можно использовать уже запущенный Excel. Создадим функцию и объявим ее так же в секции private :