Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Combining XLS files into one workbook
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
COM/DCOM et OLE Automation
Versions des environnements
Visual FoxPro:
VFP 6 SP5
OS:
Windows XP SP2
Network:
Windows 2000 Server
Database:
Visual FoxPro
Divers
Thread ID:
01035967
Message ID:
01102412
Vues:
17
>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
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform