Mõelge olukorrale, kus puutute igapäevaselt kokku paljude Exceli failidega ja soovite kiiret mehhanismi, mis aitaks teil leida igas töövihikus leiduvate töölehtede arvu. Kui teil on sarnane probleem, siis ärge jätke seda artiklit kasutamata, sest see aitab teid palju.
Selles artiklis õpime arvutama töölehti mitmes VBA -koodiga failis.
Küsimus:Mul on vaja makro, mis suudab lugeda failinimede loendit ja tagastada igas failis olevate töölehtede arvu (see on kontrollimehhanism, mis tagab, et failide seerias on õige arv töölehti teine protsess). Makro peaks kindlaks määrama selle kausta tee, kus failid asuvad (kõik samas kaustas), seejärel leidke esimene fail, tuvastage töölehtede arv ja korrake seda järgmise faili jaoks jne.
Arvasin, et saan seda teha valemiga, viidates lihtsalt failinimedele, kuid usun, et Excelil pole töölehtede loendamiseks otsest valemit. Tänan!
Kui soovite esialgset küsimust lugeda, klõpsake siin
Järgnevalt on ülevaade failidest, mis on salvestatud laiendiga .xlsx
Märkus. Parooliga kaitstud faile pole.
Koodi saamiseks peame VB redaktori käivitamiseks toimima järgmiselt.
- Klõpsake vahekaarti Arendaja
- Valige koodirühmas Visual Basic
- Kopeerige allolev kood standardmoodulisse
Sub ListSheetCounts () Dim Cell kui vahemik Dim Conn nagu objekt Dim Cat nagu objekt Dim ConnStr kui string Dim n nagu pikk Dim Rng nagu vahemik Dim RngLõpuks kui vahemik Dim WkbPath kui variant Dim Wks kui tööleht 'Kausta tee, kus töövihikud asuvad. WkbPath = "C: \ Users \ Test" 'Töölehe nimi koos töövihikute loendiga. Määra Wks = Töölehed ("Sheet1") 'Töövihikute loendi alguslahtrit. Määra Rng = Wks.Range ("A2") 'Hangi töövihiku nimede loendist lahtrite vahemik. Määra RngEnd = Wks.Cells (Rows.Count, Rng.Column). End (xlUp) Kui RngEnd.Row> = Rng.Row Seejärel määra Rng = Wks.Range (Rng, RngEnd) 'Loo sellest makrost vajalikud ADO -objektid . Määra Conn = CreateObject ("ADODB.Connection") Set Cat = CreateObject ("ADOX.Catalog") 'Lisa vajadusel lõplik tagasilöögikraan. WkbPath = IIf (Paremal (WkbPath, 1) "\", WkbPath & "\", WkbPath) 'Astuge läbi töövihikute loendi igast lahtrist. Iga lahtri jaoks Rng 'Hankige töövihiku töölehtede arv. ConnStr = "Provider = Microsoft.ACE.OLEDB.12.0; Andmeallikas =" _ & WkbPath & Cell _ & "; Extended Properties =" "Excel 12.0 Xml; HDR = YES; IMEX = 1;" "" Conn.Open ConnStr Määrake Cat.ActiveConnection = Conn 'Kopeerige loend loendis töövihiku nimest paremale jäävasse lahtrisse. Lahter.Nihke (n, 1) = Cat.Tables.Count Conn.Close Next Cell 'Clean. Set Cat = Nothing Set Conn = Nothing End Sub
- Makro käivitamisel saame töölehtede arvu. Vaadake allolevat hetktõmmist:
Märkus. Ülaltoodud makro töötab laiendite .xlsx ja .xls puhul ning mitte .xlsm makropõhiste laiendite puhul.
- Kõik ülaltoodud failid on laiendiga .xlsx
- Lisagem näiv Exceli leht, st leht 10
- Kui meil on sama nimega fail, millel on laiendid .xlsx & .xls, peame oma katsefailis (veerg A) mainima ka faili nime koos vastavate laienditega, et makro saaks tuvastada faili, mida me oleme viidates ja andke meile õige tulemus
- Kui me pole sama nimega faili laiendit maininud või jätnud mainimata, siis annab makro meile laiendi .xlsx. Vaadake allolevat hetktõmmist:
- Lehe 10 lehtede arvu leidmiseks laienditega .xlsx ja .xls peame mainima failinime koos vastavate laienditega
Lõpptulemuse ülevaade on kujutatud allpool:
Järeldus: Ülaltoodud makrokoodi abil saame loendada töölehtede arvu mitmes failis ja kohandatud tulemuse saamiseks saame VBA -koodi veidi muuta.
Kui teile meeldisid meie ajaveebid, jagage seda oma sõpradega Facebookis. Samuti saate meid jälgida Twitteris ja Facebookis.
Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd täiustada, täiendada või uuendada ning muuta see teie jaoks paremaks. Kirjuta meile meilisaidile