ProcessFromFolder secondaire ()
'Ce macro ouvre chaque dossier alternativement et extrait les données à partir de lui, l'enregistre dans la base de données,
'ferme le dossier, et passe au prochain dossier. Le macro enregistre également le nom de fichier de sorte que
'il traitera seulement un dossier s'il n'a pas été traité avant. Il emploie une « collection » pour
'les noms de dossier.
Faible fso comme objet, fld comme objet, fil comme objet
Faible coll en tant que nouvelle collection
Faible FileListWs comme feuille de travail
Faible SourceWs comme feuille de travail
Faible SourceWb comme cahier de travail
Faible DestWs comme feuille de travail
Faible TotFiles en tant que longtemps
Faible compteur en tant que longtemps
Faible WasOpen comme booléen
Obscurcir I en tant que longtemps
Obscurcir le rowe en tant que longtemps
Obscurcir la colonne en tant que longtemps
Obscurcir le lastrow en tant que longtemps
Obscurcir l'errorflag comme corde
Application.ScreenUpdating = faux
errorflag = ""
'Déterminer les dossiers traités déjà
Placer FileListWs = ThisWorkbook.Worksheets (la « liste de dossier »)
Placer DestWs = ThisWorkbook.Worksheets (la « base de données »)
Avec FileListWs
TotFiles = Application.CountA (. [a : a])
Si TotFiles > 0 puis
Pour le compteur = 1 à TotFiles
coll. Ajouter. Cellules (contre-, 1). Cellules (contre-, 1)
Après
Finir si
Finir avec
'regarder la chemise
Placer le fso = le CreateObject (« Scripting.FileSystemObject »)
'mettre le plein chemin à la chemise contenant des fichiers de données dans la prochaine ligne du code
Placer le fld = le fso.GetFolder (« C:\Documents and Settings\Patrick et Thuc-Nghi \ mes documents \ dossiers de Patrick \ Excel \ CaptG \ ")
Pour chaque fil dans le fld. Dossiers
Sur le résumé d'erreur après
coll. Ajouter le fil. Nom, fil. Nom
Si errent <> 0 alors
le 'dossier déjà traité, ne font rien
Err.Clear
Autrement
'non traité encore ; le traiter
Avec FileListWs
Si TotFiles = 0 puis
. [A2] = fil. Nom
Autrement
'. Cellules (. Rows.Count, 1).End (xlUp). Excentrage (1, 0) = fil. Nom
. Cellules (65536, 1).End (xlUp). Excentrage (1, 0) = fil. Nom
Finir si
Finir avec
'voir s'il est déjà ouvert
Placer SourceWb = cahiers de travail (fil. Nom)
Si errent <> 0 alors
'n'était pas ouvert
WasOpen = faux
Placer SourceWb = Workbooks.Open (fil. Chemin)
Autrement
WasOpen = rectifient
Finir si
Placer SourceWs = SourceWb.Sheets (1)
Avec SourceWs
. Gamme (. Cellules (2, « A »). Cellules (. Rows.Count, « A »). Extrémité (xlUp). Excentrage (0, 14)). Copier le _
DestWs.Cells (DestWs.Rows.Count, « A »). Extrémité (xlUp). Excentrage (1, 0)
Extrémité avec
errorflag = ""
Sinon WasOpen puis SourceWb.Close faux
Finir si
Après
Placer le coll = rien
Placer le fil = rien
Placer le fld = rien
Placer le fso = rien
Application.ScreenUpdating = rectifient
MsgBox « fait »
Sous-marin d'extrémité
|