Information générale
Catégorie:
COM/DCOM et 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.
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement