ExlApp:=CreateOleObject('Excel.Application');

0
procedure TSDIAppForm.doplikuarkuszaexcelxls1Click(Sender: TObject);
var i,j:integer;
begin
ExlApp:=CreateOleObject('Excel.Application');
ExlApp.Visible:=false;
ExlApp.Workbooks.Add;
begin
for j:=0 to form6.stringgrid1.ColCount-1 do
  for i:=1 to form6.stringgrid1.RowCount-1 do
  ExlApp.ActiveSheet.Cells(i,j+1):=strtofloat(form6.stringgrid1.Cells[j,i]);

 if SaveDialog1.execute then
  ExlApp.ActiveWorkbook.SaveAs(SaveDialog1.FileName);

end;
  ExlApp.close;
  end;

mam taką procedurkę, która coś tam sobie robi... rzecz w tym że gdy skończy, nie zamyka Excela... ktoś wie jak to zrobić?? prosze o pomoc

0

moze wyslij do excela komunikat zeby sie zamkna...?
(niestety nie wiem jak sie to robi ale to chyba proste:-P )

0
ExlApp.close;

Tylko zamyka aktualny dokument, ale nie program Excel. Należy dodać kod:

ExlApp.Quit;
ExlApp:=Unassigned;

To drugie przypisanie jest bardzo ważne, bo dopiero ono pozwala na usunięcie obiektu OLE.

0

Sprawa nie taka trudna


 var
  H:THandle;

i gdzies tam w kodzie

H:=FindWindow('XLMain',0); // szukam okienka po nazwie klasy aplikacji
SendMessage(H,WM_Close,0,0); //wysylam komunikat o zamkniecie

aby zznaleźć nazwe klasy dowolnej aplikacji sciągnij program
www.piotrekdp.cba.pl/Handle.rar (wklej link do przegladarki)

nazwa Klasy okna to pierwszy napis od góry

0

dzięki wielkie... działa!!!! :)

0

żeby nie było nieporozumień... te wcześniejsze podziękowania to dla Szczawika... Jeszcze raz dzięki... :d

0

Uff. Dobrze, że wyjaśniłeś, bo już chciałem się rzucić na Piotrekdp, by wyszarpać mu jego chwałę ;>

1 użytkowników online, w tym zalogowanych: 0, gości: 1