Date, date, date – fără ele o bază de date ar fi destul de inutilă. Deci nu este de mirare că unul dintre most Întrebările frecvente când vine vorba de introducerea acestor date în tabelele dvs. de acces sunt: cum îmi pot face viața mai ușoară când trebuie să import în mod regulat o mulțime (și o mulțime!) de fișiere? Deoarece este o sarcină atât de comună, există, evident, o serie de moduri de jupuire a acelei pisici, dar aici ne vom uita la doar una – după părerea mea cea mai ușoară – mai ales dacă faci asta în mod obișnuit, sau chiar interval de timp programat. Puțină planificare (și mă refer un pic!) și puțină magie VBA și veți fi bine să mergeți – citiți mai departe pentru a obținetarted…
Importul tuturor fișierelor Excel dintr-un folder
Pentru acest articol, ne vom uita la importarea unui număr de fișiere Excel într-un folder dat, dar ați putea importa la fel de ușor fișiere csv etc. Vom discuta cum să schimbați codul pentru a gestiona fișierele csv în scurt timp.
În primul rând, să definim ce vrem să facă codul:
„Vrem să importăm toate fișierele dintr-un folder dat într-un tabel existent – vrem, de asemenea, să specificăm dacă fișierele au o linie de antet sau nu”
Pare destul de simplu, așa că să ne uităm la cod pentru a face acest lucru:
Sub ImportfromPath(calea ca șir, intoTable ca șir, hasHeader ca boolean) Dim fileName ca șir 'Recurgeți folderul și importați fiecare fișier fileName = Dir(cale & "\*.xls") While fileName <> "" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, intoTable, path & fileName, hasHeader „verificați dacă mai sunt fișiere de importat fileName = Dir() Wend End Sub
Se verifică probleme...
Înainte de a intra în detalii despre modul în care funcționează acest cod, este important să rețineți că nu există nicio verificare a erorilor inclusă în codul de mai sus - aceasta este deliberată, astfel încât codul să fie păstrat ușor de citit, dar vă sugerez cu tărie să adăugați cod de gestionare a erorilor. în baza de date, astfel încât să păstrați șansele de a Accesați corupția bazei de date la minim!
OK – primul lucru este mai întâi. Pentru a păstra codul cât mai utilizabil în diferite circumstanțe posibil, vă solicităm numele căii (unde sunt stocate fișierele), numele tabelului în care doriți să importați aceste fișiere și dacă fișierele din acest folder au toate un antet sau nu (adică numele câmpurilor apar pe primul rând al foii de calcul).
Veți observa că partea de cod care caută fișiere – Dir(cale & „\*.xls”) – adaugă un wildcard și o extensie de fișier la calea furnizată. Menționez acest lucru deoarece ar fi foarte ușor să modificați codul dacă, de exemplu, doriți să importați numai fișiere care corespund unei anumite convenții de denumire (de exemplu toate fișierele care au „ianuarie” sau „2017” ca parte a numelui fișierului ). Ați putea, dacă doriți, chiar să adăugați acel filtru ca parametru la apelul subrutinei.
Oricum, dacă un fișier care se potrivește cu criteriile date (orice fișier „.xls” din dosar folosind în acest caz), acesta încearcă imediat să importe acel fișier folosind comanda TransferSpreadsheet.
Unde să schimbați codul pentru a se potrivi nevoilor dvs....
În acest moment, puteți modifica codul astfel încât, în loc să importe o foaie de calcul, să importe fișiere csv (folosind comanda „TransferText”) etc.
Codul se face apoi în buclă până când nu mai există fișiere de importat în acel folder.
Este o bucată mică de cod, dar una pe care o veți găsi să-l folosiți din nou și din nou, sunt sigur!
Introducerea autorului:
Mitchell Pond este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv reparați corupția SQL și produse software de recuperare Excel. Pentru mai multe informații vizitați www.datanumen.com