我写了个函数f(var1;var2;var3).函数里面定义了一个excelapp:variant变量,函数末尾有excelapp.quit;ExcelApp:=UnAssigned;用来释放变量。
主程序中调用一次函数的时候,进程中不会出现excel.exe;但是调用2次函数的时候进程就会出现一个excel.exe进程。
请问这是什么原因?为什么调用一次没有出现问题,调用两次就会出现问题?函数结束时候不是已经释放了吗?
主程序中调用一次函数的时候,进程中不会出现excel.exe;但是调用2次函数的时候进程就会出现一个excel.exe进程。
请问这是什么原因?为什么调用一次没有出现问题,调用两次就会出现问题?函数结束时候不是已经释放了吗?
ExcelApp.activeworkbook.close;
ExcelApp.quit;
ExcelApp:=UnAssigned;
2楼的兄弟,你的方法我试了,不行!
程序末尾是这样释放的:
WorkBook.Close;
ExcelApp.Quit;
ExcelApp:=UnAssigned;
主程序中调用一次没问题,调用一次后马上再调用一次,进程中就会多一个excel进程。
大家能帮我看看是什么问题吗?我接触delphi还没一个月。不是很清楚细节问题。
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
ExcelApp: Variant;
begin
if SaveDialog1.Execute then begin ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.WorkBooks.Add;
try
for i :=0 to 14 do
ExcelApp.Cells[1,i+1].Value:='内容'; ExcelApp.activeworkbook.SaveAs(SaveDialog1.FileName); messagebox(0,'数据导出完毕','提示',MB_ICONINFORMATION);
end;
finally
ExcelApp.activeworkbook.close;
ExcelApp.quit;
end;
end;
end;
你看到嘛?从头到尾一个Variant变量ExcelApp;
procedure GetValue();
var
ExcelApp,WorkBook,ADOConnection:Variant;
begin
ExcelApp:=CreateOleObject('Excel.Application');
WorkBook:=CreateOleObject('Excel.Sheet');
WorkBook:=ExcelApp.WorkBooks.Open(ExcelFilePath)
ExcelApp.WorkSheets[1].Activate;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp:=UnAssigned;
end;
procedure GetValue();
var
ExcelApp,WorkBook,ADOConnection:Variant;
begin
ExcelApp:=CreateOleObject('Excel.Application'); //WorkBook:=CreateOleObject('Excel.Sheet');
//WorkBook:=ExcelApp.WorkBooks.Open(ExcelFilePath) ExcelApp.WorkBooks.Open(ExcelFilePath); //ExcelApp.WorkSheets[1].Activate;
//WorkBook.Close; ExcelApp.activeworkbook.close;
ExcelApp.Quit;
ExcelApp:=UnAssigned;
end;
从头到尾一个ExcelApp变量操作就够了.