|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с кодом delphi 7
Пытаюсь разобраться по работе delphi с таблицами excel. Возникли проблемы с использованием некоторых функций. Собственно сами функции:
Модули ComObj, ActiveX подключены. var MyExcel: OleVariant; - глобальная переменная 1. Определяем запущен ли excel Код:
function CheckExcelRun: boolean; begin try MyExcel:=GetActiveOleObject(ExcelApp); Result:=True; except Result:=false; end; end; 2.После создания рабочей книги функцией Код:
function AddWorkBook(AutoRun:boolean=true):boolean; begin if CheckExcelRun then begin MyExcel.WorkBooks.Add; Result:=true; end else if AutoRun then begin RunExcel; MyExcel.WorkBooks.Add; Result:=true; end else Result:=false; end; пытаюсь ее сохранить вызовом функции Код:
function SaveWorkBook(FileName:TFileName; WBIndex:integer):boolean; begin try MyExcel.WorkBooks.Item[WBIndex].SaveAs(FileName); if MyExcel.WorkBooks.Item[WBIndex].Saved then Result:=true else Result:=false; except Result:=false; end; end; но компилятор выдает ошибку при вызове функции Not enought actual parameters Could not compile used unit ..... Последний раз редактировалось Admin, 18.05.2017 в 19:25. |
#2
|
|||
|
|||
try this:
Код:
uses ComObj, Excel; var Excel: OleVariant; Excel := CreateOleObject('EXCEL.Application'); Excel.Application.Workbooks.Add; Excel.Application.Workbooks[1].SaveAs('c:\test.xlsx', xlWorkbookDefault); // or xlOpenXMLWorkbook (51) Excel.Application.Quit; |
#3
|
|||
|
|||
Все равно та же ошибка.
Код:
unit Unit1; interface uses ComObj, ActiveX, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; MyExcel: OleVariant; const ExcelApp = 'Excel.Application'; implementation function CheckExcelInstall:boolean; var ClassID: TCLSID; Rez : HRESULT; begin Rez := CLSIDFromProgID(PWideChar(WideString(ExcelApp)), ClassID); if Rez = S_OK then Result := true else Result := false; end; function CheckExcelRun: boolean; begin try MyExcel:=GetActiveOleObject(ExcelApp); Result:=True; except Result:=false; end; end; function RunExcel(DisableAlerts:boolean=true; Visible: boolean=false): boolean; begin try if CheckExcelInstall then begin MyExcel:=CreateOleObject(ExcelApp); MyExcel.Application.EnableEvents:=DisableAlerts; MyExcel.Visible:=True; Result:=true; end else begin MessageBox(0,'Ïðèëîæåíèå MS Excel íå óñòàíîâëåíî íà âàøåì êîìïüþòåðå','Îøèáêà',MB_OK+MB_ICONERROR); Result:=false; end; except Result:=false; end; end; function AddWorkBook(AutoRun:boolean=true):boolean; begin if CheckExcelRun then begin MyExcel.WorkBooks.Add; Result:=true; end else if AutoRun then begin RunExcel; MyExcel.WorkBooks.Add; Result:=true; end else Result:=false; end; function SaveWorkBook(FileName:TFileName; WBIndex:integer):boolean; begin try MyExcel.WorkBooks[1].SaveAs('c:\test.xlsx',xlWorkbookDefault); if MyExcel.WorkBooks[1].Saved then Result:=true else Result:=false; except Result:=false; end; end; {$R *.dfm} procedure TForm1.FormActivate(Sender: TObject); begin CheckExcelInstall; end; procedure TForm1.Button1Click(Sender: TObject); begin RunExcel; AddWorkBook; end; procedure TForm1.Button2Click(Sender: TObject); begin SaveWorkBook; end; end. Последний раз редактировалось Admin, 20.05.2017 в 10:38. |
#4
|
|||
|
|||
Что не так ?
|
#5
|
|||
|
|||
Не так - код надо в посте правильно оформлять.
По поводу кода. У меня вот это работает: Код:
procedure TForm1.Button1Click(Sender: TObject); const xlWorkbookDefault = 51; var Excel : OleVariant; begin Excel := CreateOleObject('EXCEL.Application'); Excel.Application.Workbooks.Add; Excel.Application.Workbooks[1].SaveAs('C:\Users\Michael Nilov\Documents\test.xls', xlWorkbookDefault); Excel.Application.Quit; Excel := null; end; Последний раз редактировалось lmikle, 21.05.2017 в 00:35. |
#6
|
|||
|
|||
А как реализовать проверку программой наличия уже сохраненного файла ?
|
#7
|
|||
|
|||
Цитата:
Подскажите пожалуйста как сделать чтобы не выскакивало окно подтверждения сохранения ? А еще если нажать отмену сохранения - то вылетает ошибка. |
#8
|
|||
|
|||
1. Проверка файла:
Код:
if FileExists(FileName) Then ... Последний раз редактировалось lmikle, 22.05.2017 в 18:52. |