Radjah

Exel_vs.pas

Aug 2nd, 2012
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.14 KB | None | 0 0
  1. unit Exel_vs;
  2.  
  3. interface
  4. uses
  5.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  6.   Dialogs, StdCtrls, Spin,ComObj,ActiveX,ExtCtrls;
  7. const ExcelApp = 'Excel.Application';
  8.  
  9. {Функции для работы с Exel}
  10. function CheckExcelInstall:boolean;
  11. function CheckExcelRun: boolean;
  12. function RunExcel(DisableAlerts:boolean=true; Visible: boolean=false): boolean;
  13. function AddWorkBook(AutoRun:boolean=true):boolean;
  14. function StopExcel:boolean;
  15. var
  16. {Переменные для работы с листами Exel}
  17. MyExcel: OleVariant;
  18. excel_adress:String;
  19. implementation
  20. uses vagon_ch,basa,profil_basa;
  21. {Функции для работы с EXEL}
  22. //Проверка установлен ли Excel;
  23. function CheckExcelInstall:boolean;
  24. var
  25.   ClassID: TCLSID;
  26.   Rez : HRESULT;
  27. begin
  28. // Ищем CLSID OLE-объекта
  29.   Rez := CLSIDFromProgID(PWideChar(WideString(ExcelApp)), ClassID);
  30.   if Rez = S_OK then  // Объект найден
  31.     Result := true
  32.   else
  33.     Result := false;
  34. end;
  35. //Определяем запущен ли Excel
  36. function CheckExcelRun: boolean;
  37. begin
  38.   try
  39.      MyExcel:=GetActiveOleObject(ExcelApp);
  40.     Result:=True;
  41.   except
  42.     Result:=false;
  43.   end;
  44. end;
  45.  
  46. // Запуск Excel с проверкой установки и открытия
  47. function RunExcel(DisableAlerts:boolean=true; Visible: boolean=false): boolean;
  48. begin
  49.   try
  50. {проверяем установлен ли Excel}
  51.     if CheckExcelInstall then
  52.       begin
  53.         MyExcel:=CreateOleObject(ExcelApp);
  54. //показывать/не показывать системные сообщения Excel (лучше не показывать)
  55.         MyExcel.Application.EnableEvents:=DisableAlerts;
  56.         MyExcel.Visible:=Visible;
  57.         Result:=true;
  58.       end
  59.     else
  60.       begin
  61.         MessageBox(0,'Приложение MS Excel не установлено на этом компьютере','Ошибка',MB_OK+MB_ICONERROR);
  62.         Result:=false;
  63.       end;
  64.   except
  65.     Result:=false;
  66.   end;
  67. end;
  68.  
  69. //проверяю запущен ли Excel и, если он не запущен,
  70. //то либо запускаю и добавляю книгу, либо просто выхожу – всё зависит от ситуации.
  71. function AddWorkBook(AutoRun:boolean=true):boolean;
  72. begin
  73.   if CheckExcelRun then
  74.     begin
  75.       MyExcel.WorkBooks.Add;
  76.       Result:=true;
  77.     end
  78.   else
  79.    if AutoRun then
  80.      begin
  81.        RunExcel;
  82.        MyExcel.WorkBooks.Add;
  83.        Result:=true;
  84.      end
  85.    else
  86.      Result:=false;
  87. end;
  88.  
  89. //Сохраняем рабочую книгу
  90. function SaveWorkBook(FileName:TFileName; WBIndex:integer):boolean;
  91. begin
  92.   try
  93.     MyExcel.WorkBooks.Item[WBIndex].SaveAs(FileName);
  94.     if MyExcel.WorkBooks.Item[WBIndex].Saved then
  95.       Result:=true
  96.     else
  97.       Result:=false;
  98.   except
  99.     Result:=false;
  100.   end;
  101. end;
  102. //Закрытие Excel
  103. function StopExcel:boolean;
  104. begin
  105.   try
  106.     if MyExcel.Visible then MyExcel.Visible:=false;
  107.     MyExcel.Quit;
  108.     MyExcel:=Unassigned;
  109.     Result:=True;
  110.   except
  111.     Result:=false;
  112.   end;
  113. end;
  114. end.
Advertisement
Add Comment
Please, Sign In to add comment