Luați în considerare o situație în care întâlniți zilnic un număr de fișiere Excel și doriți un mecanism rapid care să vă ajute să găsiți numărul de foi de lucru prezente în fiecare registru de lucru. Dacă aveți o problemă similară, atunci nu trebuie să ratați acest articol, deoarece vă va ajuta foarte mult.
În acest articol, vom învăța cum să numărăm foile de lucru în mai multe fișiere cu cod VBA.
Întrebare:Am nevoie de macro care poate citi printr-o listă de nume de fișiere și să returneze numărul de foi de lucru care sunt prezente în fiecare dintre fișiere (acesta este un mecanism de audit pentru a se asigura că numărul corect de foi de lucru sunt prezente într-o serie de fișiere create prin un alt proces). Macrocomanda ar trebui să stabilească calea folderului în care se află fișierele (toate în același folder), apoi să localizeze primul fișier, să identifice numărul de foi de lucru și să repete pentru fișierul următor etc.
Am crezut că pot face acest lucru cu o formulă prin simpla referire la numele fișierelor, dar cred că Excel nu are o formulă directă pentru numărarea foilor de lucru. Mulțumiri!
Dacă doriți să citiți întrebarea originală, faceți clic aici
Urmează instantaneul fișierelor salvate într-un folder cu extensia .xlsx
Notă: Nu există fișiere protejate prin parolă.
Pentru a obține codul, trebuie să urmăm pașii de mai jos pentru a lansa editorul VB:
- Faceți clic pe fila Dezvoltator
- Din grupul de coduri, selectați Visual Basic
- Copiați codul de mai jos în modulul standard
Sub ListSheetCounts () Dim Cell as Range Dim Conn As Object Dim Cat As Object Dim ConnStr As String Dim n As Long Dim Rng As Range Dim RngEnd As Range Dim WkbPath As Variant Dim Wks As Sheet Works 'Calea folderului în care se află registrele de lucru. WkbPath = "C: \ Users \ Test" 'Numele foii de lucru cu lista registrului de lucru. Set Wks = Worksheets ("Sheet1") 'Celula de pornire a listei registrului de lucru. Setați Rng = Wks.Range ("A2") 'Obțineți gama de celule din lista de nume a registrului de lucru. Set RngEnd = Wks.Cells (Rows.Count, Rng.Column) .End (xlUp) If RngEnd.Row> = Rng.Row, apoi Set Rng = Wks.Range (Rng, RngEnd) 'Creați obiectele ADO necesare din această macro . Set Conn = CreateObject ("ADODB.Connection") Set Cat = CreateObject ("ADOX.Catalog") 'Adăugați o bară inversă finală a căii, dacă este necesar. WkbPath = IIf (Dreapta (WkbPath, 1) "\", WkbPath & "\", WkbPath) 'Treceți prin fiecare celulă din lista registrului de lucru. Pentru fiecare celulă din Rng „Obțineți numărul de foi de lucru pentru registrul de lucru. ConnStr = "Furnizor = Microsoft.ACE.OLEDB.12.0; Sursa datelor =" _ & WkbPath & Cell _ & "; Proprietăți extinse =" "Excel 12.0 Xml; HDR = YES; IMEX = 1;" "" Conn.Open ConnStr Set Cat.ActiveConnection = Conn 'Copiați numărul în coloana celulei din dreapta numelui registrului de lucru din listă. Cell.Offset (n, 1) = Cat.Tables.Count Conn.Close Next Cell 'Clean up. Set Cat = Nothing Set Conn = Nothing End Sub
- Pe măsură ce rulăm macro-ul, vom obține numărul de foi de lucru. Consultați mai jos instantaneu:
Notă: macro-ul de mai sus va funcționa pentru extensia .xlsx și .xls și nu pentru extensia .xlsm activată pentru macro.
- Toate fișierele de mai sus sunt extensia .xlsx
- Permiteți-ne să adăugăm o foaie fictivă Excel, adică foaia 10
- În cazul în care avem un fișier cu același nume care are extensii .xlsx și .xls, atunci trebuie să menționăm numele fișierului cu extensiile respective și în fișierul nostru de testare (coloana A), astfel încât macrocomanda să poată identifica fișierul care suntem referindu-ne la & dă-ne rezultatul corect
- Dacă nu am menționat sau am omis să menționăm extensia pentru fișierul cu același nume, atunci macro-ul ne va da numărul de extensie .xlsx. Consultați mai jos instantaneu:
- Pentru a obține numărul de foi pentru foaia 10 cu extensii .xlsx și .xls, trebuie să menționăm numele fișierului cu extensiile respective.
Instantaneul rezultatului final este descris mai jos:
Concluzie: Folosind codul macro de mai sus putem număra numărul de foi de lucru în mai multe fișiere și dacă este necesar pentru a obține rezultatul personalizat, putem face puține modificări în codul VBA.
Dacă ți-au plăcut blogurile noastre, împărtășește-le prietenilor tăi de pe Facebook. Și, de asemenea, ne puteți urmări pe Twitter și Facebook.
Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți, completa sau inova munca noastră și să o îmbunătățim. Scrieți-ne pe site-ul de e-mail