Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Автоматический запуск Excel


Руль ©   (2002-07-15 19:11:00) 

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


Tornado   (2002-07-16 16:09:00) [1]

Данный пример ищет активный экземпляр Excel и делает его видимым

var
ExcelApp : Variant;
begin
try
// Ищем запущеный экземплят Excel, если он не найден, вызывается исключение
ExcelApp := GetActiveOleObject("Excel.Application");

// Делаем его видимым
ExcelApp.Visible := true;
except
end;


olookin   (2002-07-16 15:39:00) [2]

У меня, кстати, такая фига: я могу проверить наличие запущенного Excel, но только при независимой от Delphi работе программы. Т.е. если я компилирую, то ошибка "Процесс недоступен", а если просто запускаю, то все ОК. Причем стоит проверка на ошибку типа EOleSysError. Но это я так, для справки.
А вообще можно получить список уже запущенных процессов, а если среди них есть EXCEL.EXE, то ясно, что он уже запущен (использовать надо Snapshot-ы).


Emfi   (2002-07-16 14:07:00) [3]

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


BAY   (2002-07-16 10:06:00) [4]

А как сделать тоже, но при ранем связывании?


Tornado   (2002-07-16 08:03:00) [5]

Установлен ли Excel на машине?

Функция возвращает True если найден OLE-объект
Пример использования

if not IsOLEObjectInstalled("Excel.Application") then
ShowMessage("Класс не зарегистрирован")
else
ShowMessage("Класс найден");


function IsOLEObjectInstalled(Name: String): boolean;
var
ClassID: TCLSID;
Rez : HRESULT;
begin
// Ищем CLSID OLE-объекта
Rez := CLSIDFromProgID(PWideChar(WideString(Name)), ClassID);

if Rez = S_OK then // Объект найден
Result := true
else
Result := false;
end;


Если нужна более подробная информация об объекте, можно почитать хелп по функции API CLSIDFromProgID.


Pingo   (2002-07-16 05:06:00) [6]

Если ты идешь через палитру Servers, то у них есть свойство:
ConnectKind.

Если через OLE, то существуют функции типа
ConnectionResult, Connection.
Дальше в зависимости от ситуации либо работа с Excel,
либо CreateOleObject("Excel.Application"), а затем работа с Excel.


Наверх

Титульная страница Поиск, карта сайта Написать письмо