Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Combining XLS files into one workbook
Message
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Environment versions
Visual FoxPro:
VFP 6 SP5
OS:
Windows XP SP2
Network:
Windows 2000 Server
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01035967
Message ID:
01102412
Views:
16
>Looks like Borislav already gave you your solution... but here's the function I use to combine the first sheet of multiple excel files and delete the orginals:
>
DIMENSION aryFiles(3)
>aryFiles(1) = "C:\Excel1.xls"
>aryFiles(2) = "C:\Excel2.xls"
>aryFiles(3) = "C:\Excel3.xls"
>
>CombineExcelFiles(@aryFiles, "C:\ExcelCombined.xls")
>
>FUNCTION CombineExcelFiles (taXLSFiles, tcDestination)
>	EXTERNAL ARRAY taXLSFiles
>	LOCAL loDestinationWrkBk as Excel.Application, ;
loSourceWrkBk, lnCounter, ;
lnSheetCount, loWorkSheet, lcValidChars
lcValidChars = ;
 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 "
>	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),lcValidChars,"")," ")), 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
>

Craig,

This function seems to not take into account tcDestination. Also it seems to expect the taXLSFiles as a multi-dimensional array, though your sample indicates otherwise.

I'm trying to accomodate your function as is and I'm having some problems....
If it's not broken, fix it until it is.


My Blog
Previous
Reply
Map
View

Click here to load this message in the networking platform