Zvážte situáciu, v ktorej sa denne stretávate s počtom súborov programu Excel a chcete rýchly mechanizmus, ktorý vám pomôže nájsť počet pracovných hárkov prítomných v každom zošite. Ak máte podobný problém, tento článok vám nesmie ujsť, pretože vám veľmi pomôže.
V tomto článku sa naučíme počítať pracovné listy vo viacerých súboroch s kódom VBA.
Otázka:Potrebujem makro, ktoré dokáže prečítať zoznam názvov súborov a vrátiť počet pracovných hárkov, ktoré sú prítomné v každom zo súborov (toto je mechanizmus auditu, ktorý zabezpečí, aby bol v sérii súborov vytvorených prostredníctvom iný proces). Makro bude musieť určiť cestu k priečinku, v ktorom sa nachádzajú súbory (všetky v jednom priečinku), potom nájsť prvý súbor, identifikovať počet pracovných hárkov a opakovať pre ďalší súbor atď.
Myslel som si, že to môžem urobiť pomocou vzorca jednoduchým odkazovaním na názvy súborov, ale verím, že Excel nemá priamy vzorec na počítanie hárkov. Vďaka!
Ak si chcete prečítať pôvodnú otázku, kliknite sem
Nasleduje snímka súborov uložených v priečinku s príponou .xlsx
Poznámka: Neexistujú žiadne súbory chránené heslom.
Aby sme získali kód, musíme pri spustení editora VB vykonať nasledujúce kroky:
- Kliknite na kartu Vývojár
- V skupine Kód vyberte položku Visual Basic
- Skopírujte nižšie uvedený kód do štandardného modulu
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 Worksheet 'Cesta k priečinku, kde sú umiestnené zošity. WkbPath = "C: \ Users \ Test" 'Názov pracovného hárka so zoznamom zošita. Nastaviť Wks = Pracovné listy ("List1") 'Počiatočná bunka zoznamu zošita. Nastaviť Rng = Wks.Range ("A2") 'Získajte rozsah buniek v zozname názvov zošita. Nastaviť RngEnd = Wks.Cells (Rows.Count, Rng.Column) .End (xlUp) If RngEnd.Row> = Rng.Row Then Set Rng = Wks.Range (Rng, RngEnd) 'Vytvorte potrebné objekty ADO z tohto makra . Nastaviť Conn = CreateObject ("ADODB.Connection") Nastaviť Cat = CreateObject ("ADOX.Catalog") 'V prípade potreby pridajte poslednú cestu späť. WkbPath = IIf (Vpravo (WkbPath, 1) "\", WkbPath & "\", WkbPath) 'Prejdite každou bunkou v zozname zošita. Pre každú bunku v Rng 'Získajte počet pracovných hárkov pre zošit. ConnStr = "Poskytovateľ = Microsoft.ACE.OLEDB.12.0; Zdroj údajov =" _ & WkbPath & Cell _ & "; Rozšírené vlastnosti =" "Excel 12.0 Xml; HDR = ÁNO; IMEX = 1;" "" Conn.Open ConnStr Nastaviť Cat.ActiveConnection = Conn 'Skopírujte počet do bunky o jeden stĺpec vpravo od názvu zošita v zozname. Cell.Offset (n, 1) = Cat.Tables.Count Conn.Close Next Cell 'Clean up. Nastaviť mačku = nič Nastaviť pripojiť = nič Končiť Podrad
- Keď spustíme makro, zistíme počet pracovných hárkov. Pozrite si nižšie uvedenú snímku:
Poznámka: vyššie uvedené makro bude fungovať pre príponu .xlsx a .xls, a nie pre príponu s povoleným makrom .xlsm.
- Všetky vyššie uvedené súbory majú príponu .xlsx
- Pridajme fiktívny list Excelu, tj. List 10
- V prípade, že máme súbor s rovnakým názvom s príponami .xlsx & .xls, potom musíme v našom testovacom súbore (stĺpček A) uviesť aj názov súboru s príslušnými príponami, aby makro mohlo identifikovať súbor, v ktorom sa nachádzame. odkazovať na a poskytnúť nám správny výsledok
- Ak sme neuviedli alebo sme zabudli spomenúť príponu súboru s rovnakým názvom, potom nám makro poskytne počet prípony .xlsx. Pozrite si nižšie uvedenú snímku:
- Aby sme získali počet listov pre hárok 10 s príponami .xlsx & .xls, musíme uviesť názov súboru s príslušnými príponami.
Snímka konečného výstupu je zobrazená nižšie:
Záver: Pomocou vyššie uvedeného kódu makra môžeme spočítať počet pracovných hárkov vo viacerých súboroch a ak to vyžaduje vlastný výsledok, môžeme v kóde VBA vykonať malú úpravu.
Ak sa vám páčili naše blogy, zdieľajte ich so svojimi priateľmi na Facebooku. A tiež nás môžete sledovať na Twitteri a Facebooku.
Radi by sme vás počuli, dajte nám vedieť, ako môžeme zlepšiť, doplniť alebo inovovať našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku