Printing leaves EXCEL.EXE process in Task Manager

G

Guest

Hi,

As you can see xlApp.Quit does not kill the process. I've tried in
desperation in the last few lines to force the process to quit, which also
does not work.

As many times as I call printWithExcel, I get the same number of processes
that are not exited, even the whole Delphi App exits.

I have the following code in Delphi:
procedure printWithExcel(fileName: String);
var
xlApp, workbook: Variant;
ptrToXlApp, ptrToWorkbook: PVarData;
begin
WriteToLogFile('Output.printWithExcel() --->');
if (fileName <> '') then
begin
xlApp := CreateOleObject('Excel.Application');
xlApp.Visible := False;
// Arguments to the Open function
{
function Open(const Filename: WideString; UpdateLinks: OleVariant;
ReadOnly: OleVariant;
Format: OleVariant; Password: OleVariant;
WriteResPassword: OleVariant;
IgnoreReadOnlyRecommended: OleVariant; Origin: OleVariant;
Delimiter: OleVariant;
Editable: OleVariant; Notify: OleVariant; Converter:
OleVariant;
AddToMru: OleVariant; lcid: Integer): ExcelWorkbook;
safecall;
}
workbook := xlApp.Workbooks.Open(fileName, EmptyParam, True);
workbook.Printout;
workbook.Close(False);
xlApp.Quit;
ptrToWorkbook := FindVarData(workbook);
ptrToWorkbook := nil;
ptrToXlApp := FindVarData(xlApp);
ptrToXlApp := nil;
workbook := Unassigned;
xlApp := Unassigned;
end;
WriteToLogFile('Output.printWithExcel() <---');
end;
 
G

Guest

As you are writing in Delphi and this Discussion Group deals with Excel, I
doubt you will get response.

Perhaps you would be best to write a macro inside the workbook module that
does the print job.

Or include in your Delphi code to "Print to File" ...


- -Mark
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top