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 ENDFUNC