ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Printing leaves EXCEL.EXE process in Task Manager (https://www.excelbanter.com/excel-discussion-misc-queries/73340-printing-leaves-excel-exe-process-task-manager.html)

eeidfn

Printing leaves EXCEL.EXE process in Task Manager
 
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;


exceluserforeman

Printing leaves EXCEL.EXE process in Task Manager
 
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

"eeidfn" wrote:

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;



All times are GMT +1. The time now is 08:11 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com