Через тернии к звездам!

На пыльных тропинках далеких планет останутся наши следы!

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Delphi. Работа с Excel

E-mail Печать PDF

UNIT SAV_XLS10;
INTERFACE

Uses
Graphics, Controls, Forms, Dialogs, StdCtrls, Grids,
ComObj, ActiveX, Variants, Windows, Messages, SysUtils, Classes,
Excel2000;

const
ExcelApp = 'Excel.Application';

var
Excel: TExcelApplication;
XL,Wb,Ws,Ws2: OleVariant;
Sel,Sl: Variant;
CurWb: word;

function CheckExcelInstall: boolean;
function CheckExcelRun: boolean;
function GetExcel: boolean;
function CheckLoadWorkBook(fn: String; mode : boolean): boolean;

IMPLEMENTATION

//Установлен ли Excel
function CheckExcelInstall: boolean;
var
ClassID: TCLSID;
Rez : HRESULT;
begin
// Ищем CLSID OLE-объекта
Rez:=CLSIDFromProgID(PWideChar(WideString(ExcelApp)),ClassID);
if Rez=S_OK then Result:=true else Result:=false;
end;

//Запущен ли Excel
function CheckExcelRun: boolean;
var
res: boolean;
begin
try
XL:=GetActiveOleObject(ExcelApp);

//При отладке будет выходить сообщение

//При запуске ехе-шника все будет нормально
Res:=True;
except
Res:=false;
end;

if Res then
begin
XL.Visible:=true;
Application.CreateForm(TExcelApplication, Excel);
end;

CheckExcelRun:=Res;
end;

//Запускаем Excel
function RunExcel: boolean;
var
res: boolean;
begin
try
XL:=CreateOleObject(ExcelApp);
Res:=true;
except
Res:=false;
end;

if Res then
begin
XL.Visible:=true;
Application.CreateForm(TExcelApplication, Excel);
//    Wb:=Excel.ActiveWorkbook;
//    Ws:=Wb.WorkSheets[1];
end;

RunExcel:=res;
end;

//Общая процедура получения Excel
function GetExcel: boolean;
begin
GetExcel:=false;

if not CheckExcelInstall then     //Установлен ли Excel
begin
ShowMessage('Excel на компьютере не установлен!');
exit;
end;

if not CheckExcelRun then     //Если не запущен, запускаем
if not RunExcel then exit;    //Если не удалось запустить-выход

GetExcel:=true;
end;

//Загружен ли файл с именем fn
function CheckLoadWorkBook(fn: String; mode : boolean): boolean;
var
i: word;
St: String;
begin
CheckLoadWorkBook:=false;

if GetExcel then
begin
for i:=1 to Excel.Workbooks.Count do
begin
St:=Excel.Workbooks[i].Name;
if St=fn then
begin
if not Mode then ShowMessage('Файл '+fn+' уже загружен. Вам необходимо его закрыть');
CheckLoadWorkBook:=true;
Break;
end;
end;
Excel.Destroy;
exit;
end;
end;


END.

 
Интересная статья? Поделись ей с другими:

Добавить комментарий

Обои рабочего стола

Борис Валеджио

Красиво

Фото-Приколы

Фото-Забавные животные

Рекомендую

Рекомендую

Глобально

Великая Отечественная

История

Оружие

Познавательно

Юмор

Прочее

Война

Оружие


Свежие записи

Счетчики

Яндекс.Метрика