FUNCTION CombineExcelFiles (taXLSFiles) > EXTERNAL ARRAY taXLSFiles > LOCAL loDestinationWrkBk as Excel.Application, loSourceWrkBk, lnCounter, lnSheetCount, loWorkSheet > loDestinationWrkBk = NEWOBJECT("Excel.Application") > loDestinationWrkBk.ScreenUpdating = .F. > loDestinationWrkBk.DisplayAlerts = .F. > loDestinationWrkBk.Workbooks.Open(taXLSFiles(1,1)) > lnCounter = 0 > FOR EACH loWorkSheet IN loDestinationWrkBk.Workbooks(1).WorkSheets > lnCounter = lnCounter + 1 > IF lnCounter > 1 > loWorkSheet.Delete > ENDIF > ENDFOR > lnSheetCount = loDestinationWrkBk.Workbooks(1).Worksheets.Count > FOR lnCounter = 2 TO ALEN(taXLSFiles,1) > IF FILE(taXLSFiles(lnCounter, 1)) > loWorkBook = loDestinationWrkBk.Workbooks.Open(taXLSFiles(lnCounter, 1)) > loWorkBook.Worksheets(1).Copy(NULL, loDestinationWrkBk.Workbooks(1).Worksheets(loDestinationWrkBk.Workbooks(1).Worksheets.Count)) > loDestinationWrkBk.Workbooks(1).ActiveSheet.Name = RIGHT(ALLTRIM(CHRTRAN(taXLSFiles(lnCounter, 2),CHRTRAN(taXLSFiles(lnCounter, 2),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ","")," ")), 31) &&loWorkBook.Name > loWorkBook.Close(.F.) > ENDIF > ENDFOR > loDestinationWrkBk.Save() > loDestinationWrkBk.ScreenUpdating = .T. > loDestinationWrkBk.DisplayAlerts = .T. > loDestinationWrkBk.Quit() > FOR lnCounter = 2 TO ALEN(taXLSFiles,1) > IF FILE(taXLSFiles(lnCounter, 1)) > ERASE (taXLSFiles(lnCounter, 1)) > ENDIF > ENDFOR >ENDFUNCThanks Craig for your very comprehensive answer.
loDestinationWrkBk.Save()
OLE IDispatch exception code 0 from Microsoft Excel: Unable to get the Save property of the Application class..