Apsvarstykite situaciją, kai kasdien susiduriate su daugybe „Excel“ failų ir norite greito mechanizmo, padedančio rasti kiekvienoje darbaknygėje esančių darbalapių skaičių. Jei turite panašią problemą, neturėtumėte praleisti šio straipsnio, nes jis jums labai padės.
Šiame straipsnyje mes išmoksime skaičiuoti darbalapius keliuose failuose su VBA kodu.
Klausimas:Man reikia makrokomandos, kuri galėtų perskaityti failų pavadinimų sąrašą ir grąžinti kiekviename faile esančių darbalapių skaičių (tai yra tikrinimo mechanizmas, užtikrinantis, kad serijose sukurtų failų serijoje būtų teisingas darbalapių skaičius kitas procesas). Makrokomandai reikės nustatyti aplanko, kuriame yra failai, kelią (visi tame pačiame aplanke), tada suraskite pirmąjį failą, nustatykite darbalapių skaičių ir pakartokite kitą failą ir tt
Maniau, kad galėčiau tai padaryti naudodami formulę, tiesiog nurodydamas failų pavadinimus, bet manau, kad „Excel“ neturi tiesioginės darbo lapų skaičiavimo formulės. Dėkoju!
Jei norite perskaityti originalų klausimą, spustelėkite čia
Toliau pateikiama failų, išsaugotų aplanke su plėtiniu .xlsx, momentinė nuotrauka
Pastaba: nėra slaptažodžiu apsaugotų failų.
Norėdami gauti kodą, norėdami paleisti VB redaktorių, turime atlikti šiuos veiksmus:
- Spustelėkite skirtuką Kūrėjas
- Kodo grupėje pasirinkite „Visual Basic“
- Nukopijuokite žemiau esantį kodą į standartinį modulį
Sub ListSheetCounts () Dim Cell kaip diapazonas Dim Conn kaip objektas Dim Cat Kaip objektas Dim ConnStr kaip eilutė Dim n kaip ilgas Dim Rng kaip diapazonas Dim RngPasibaigti kaip diapazonas Dim WkbPath As Variant Dim Wks As Workheet 'Aplanko kelias, kuriame yra darbaknygės. WkbPath = "C: \ Users \ Test" 'Darbo lapo su darbaknygių sąrašu pavadinimas. Nustatykite Wks = Worksheets ("Sheet1") 'Pradinis darbaknygės sąrašo langelis. Nustatykite Rng = Wks.Range ("A2") 'Gaukite langelių diapazoną darbaknygės pavadinimų sąraše. Nustatykite RngEnd = Wks.Cells (Rows.Count, Rng.Column). End (xlUp) If RngEnd.Row> = Rng.Row Tada Set Rng = Wks.Range (Rng, RngEnd) 'Sukurkite reikiamus ADO objektus iš šios makrokomandos . Nustatykite Conn = CreateObject ("ADODB.Connection") Nustatykite Cat = CreateObject ("ADOX.Catalog") 'Jei reikia, pridėkite paskutinį pasvirąjį brūkšnį. WkbPath = IIf (Dešinė (WkbPath, 1) "\", WkbPath & "\", WkbPath) 'Žingsnis per kiekvieną langelį darbaknygės sąraše. Už kiekvieną langelį „Rng“ Gaukite darbo knygos darbalapio skaičių. ConnStr = "Provider = Microsoft.ACE.OLEDB.12.0; Duomenų šaltinis =" _ & WkbPath & Cell _ & "; Išplėstinės ypatybės =" "Excel 12.0 Xml; HDR = TAIP; IMEX = 1;" "" Conn.Open ConnStr Nustatykite Cat.ActiveConnection = Conn 'Nukopijuokite skaičių į langelį, esantį viename stulpelyje dešinėje nuo darbaknygės pavadinimo sąraše. Ląstelė. Poslinkis (n, 1) = Kat. Lentelės. Sąsaja Kon. Uždaryti kitą langelį „Išvalyti. Nustatyti katę = Nieko Nustatyti Conn = Nieko pabaigos sub
- Vykdydami makrokomandą gausime darbalapių skaičių. Žiūrėkite žemiau pateiktą momentinę nuotrauką:
Pastaba: aukščiau pateikta makrokomanda veiks „.xlsx“ ir „.xls“ plėtiniams, o ne .xlsm „Macro“ plėtiniams.
- Visi aukščiau išvardyti failai yra .xlsx plėtiniu
- Pridėkime manekeno „Excel“ lapą, ty 10 lapą
- Jei turime tą patį pavadinimą turintį failą su plėtiniais .xlsx ir .xls, bandymo faile (A stulpelis) turime paminėti failo pavadinimą ir atitinkamus plėtinius (A stulpelis), kad makrokomanda galėtų identifikuoti failą nurodydami ir pateikite mums teisingą rezultatą
- Jei nepaminėjome to paties pavadinimo failo plėtinio arba praleidome jį, makrokomanda suteiks mums .xlsx plėtinio skaičių. Žiūrėkite žemiau pateiktą momentinę nuotrauką:
- Norėdami gauti 10 lapo lapų su plėtiniais .xlsx ir .xls skaičių, turime paminėti failo pavadinimą su atitinkamais plėtiniais
Galutinio rezultato momentinė nuotrauka pavaizduota žemiau:
Išvada: Naudodami aukščiau esantį makro kodą, galime suskaičiuoti darbalapių skaičių keliuose failuose ir, jei reikia gauti pasirinktinį rezultatą, galime šiek tiek pakeisti VBA kodą.
Jei jums patiko mūsų tinklaraščiai, pasidalykite jais su draugais „Facebook“. Taip pat galite sekti mus „Twitter“ ir „Facebook“.
Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime patobulinti, papildyti ar naujovinti savo darbą ir padaryti jį geresnį. Parašykite mums el