у меня есть така процедура:
procedure TfmMain.SaveButtonClick(Sender: TObject);
var
exsel: OleVariant;
WorkBook, Sheet: Variant;
fileName: String;
ffield,fvalue,cmd: string;
npp,str:integer;
begin
try
//Получаем имя шаблона Excel-файла
fileName:= ExtractFilePath(Application.EXEName)+'Sample.xls';
//Создаем объект интерфейса для доступа к серверу COM
exsel := CreateOleObject('Excel.Application');
//Создаем книгу и обращаемся к первому листу
WorkBook := exsel.Workbooks.Add(fileName);
Sheet := WorkBook.WorkSheets[1];
npp:=1;
str:=17;
cmd:='';
SaveDialog1.FileName:= 'КП '+ MEN.Text;
if SaveDialog1.Execute then
begin
ADO_KP.First;
while not ADO_KP.Eof do
begin // начало фор
Sheet.Cells(str,2) := IntToStr(npp);
npp := npp + 1;
Sheet.Cells(str,3) := ADO_KP.FieldByName('IZDELIE').AsString;
Sheet.Cells[str,3].HorizontalAlignment := -4131;
Sheet.Cells(str,4) := ADO_KP.FieldByName('KOLVO').AsString;
Sheet.Cells(str,5) := ADO_KP.FieldByName('COST').AsString;
ffield:='=Sum(D'+IntToStr(str)+'*E'+IntToStr(str)+')';
Sheet.Cells[str,6].Formula := ffield;
Sheet.Cells(str,7) := ADO_KP.FieldByName('SKIDKA').AsString;
fvalue:='=F'+IntToStr(str)+'-G'+IntToStr(str)+'/100*F'+IntToStr(str);
Sheet.Cells[str,8].Formula := fvalue;
ADO_KP.Next;
str:=str+1;
end; // конец фор
cmd:='B17:H'+IntToStr(str);
ffield:='=Sum(D17:D'+IntToStr(str-1)+')';
Sheet.Cells[str,4].Formula := ffield;
ffield:='=Sum(f17:f'+IntToStr(str-1)+')';
Sheet.Cells[str,6].Formula := ffield;
Sheet.Cells(str,7) := 'Итого';
ffield:='=Sum(h17:h'+IntToStr(str-1)+')';
Sheet.Cells[str,8].Formula := ffield;
Sheet.Cells(13,5) := 'Менеджер: ' + ComboBox1.Text ;
Sheet.Cells(13,3) := 'Предложение № ' + MEN.Text ;
Sheet.Cells[13,3].Font.Bold := True;
Sheet.Cells[str,1].HorizontalAlignment := -4131;
exsel.Range[cmd].Borders.Weight := 3;
str:=str+2;
Sheet.Cells(str,1) := 'Срок действия КП - 20 дней.';
Sheet.Cells[str,1].HorizontalAlignment := -4131;
str:=str+1;
Sheet.Cells(str,1) := 'Срок поставки - 5 рабочих дней с момента оплаты (самовывоз из г Рязани)' ;
Sheet.Cells[str,1].HorizontalAlignment := -4131;
str:=str+1;
Sheet.Cells(str,3) := ' 7 рабочих дней с момента оплаты (самовывоз из г Москвы)' ;
Sheet.Cells[str,3].HorizontalAlignment := -4131;
str:=str+1;
Sheet.Cells(str,1) := 'Гарантийный срок - 3 года с момента отгрузки.' ;
Sheet.Cells[str,1].HorizontalAlignment := -4131;
str:=str+1;
Sheet.Cells(str,1) := 'Все цены приведены в USD.' ;
Sheet.Cells[str,1].HorizontalAlignment := -4131;
str:=str+1;
Sheet.Cells(str,1) := 'Все цены с НДС.' ;
Sheet.Cells[str,1].HorizontalAlignment := -4131;
str:=str+1;
exsel.Application.ActiveWorkBook.Saveas(SaveDialog1.FileName);
end;
exsel.Application.Quit;
finally
exsel.Application.Quit;
end; // try..finally
end;
если кроме программы где выполняется эта процедура были за пущены другие копии excel я то они как бы подвисают. Мож кто с этим сталкивался.
подскажите что нибудь.