General information
Category:
COM/DCOM and OLE Automation
With CREATEOBJECT you initialize the EXCEL.exe. Therefore when you close the workbook, the Excel is still running. After closing workbook, you need to add:
.hoExcelApp.QUIT
Actually I can not see the reason here to use Workbook.close method because you are not going to change/save the xls file.
Also just a precaution to avoid any Excel messages that require user interaction, add in the beginning:
.hoExcelApp.DisplayAlerts = .f.
>I've got a little utility that uses OLE to open and interogate an Excel spreadsheet in VFP.
>
>An abstract of my methodology:
>
>WITH THIS
> m.lcSrcXLS = GETFILE('XLS')
>
> .hoExcelApp = CREATEOBJECT("Excel.Application")
>
> IF NOT ISNULL(.hoExcelApp)
> WITH .hoExcelApp
> .Workbooks.Open(m.lcSrcXLS, .F., .T.) && readonly
> .Workbooks[THIS.pnXlsWorkbook].Activate()
> .Worksheets[THIS.pnXlsSpreadsheet].Activate()
> ENDWITH
>
> *** get information from the Excel spreadsheet
>
> .hoExcelApp.WorkBooks(.pnXlsWorkbook).Close()
> .hoExcelApp = .NULL.
> ENDIF
>ENDWITH
>
>My problem is that when I leave the program, VFP still has a lock on the XLS file. I would have thought that the Closee() method would have broken the link into the XLS file, and NULLing the Excel object should have broken any ties to Excel.
>
>What's missing?
>
>TIA
>Thom C.
Previous
Next
Reply
View the map of this thread
View the map of this thread starting from this message only
View all messages of this thread
View all messages of this thread starting from this message only