![]() |
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; |
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