Razmislite o situaciji u kojoj se svakodnevno susrećete s brojem Excel datoteka i želite brzi mehanizam koji će vam pomoći u pronalaženju broja radnih listova prisutnih u svakoj radnoj knjizi. Ako imate sličan problem, ne smijete propustiti ovaj članak jer će vam puno pomoći.
U ovom ćemo članku naučiti kako brojati radne listove u više datoteka s VBA kodom.
Pitanje:Moram makronaredbu koja može čitati popis imena datoteka i vratiti broj radnih listova koji su prisutni u svakoj od datoteka (ovo je mehanizam revizije kako bi se osiguralo da je točan broj radnih listova prisutan u nizu datoteka stvorenih putem drugi proces). Makronaredba bi trebala utvrditi put do mape u kojoj se nalaze datoteke (sve u istoj mapi), zatim locirati prvu datoteku, identificirati broj radnih listova i ponoviti za sljedeću datoteku itd.
Mislio sam da bih to mogao učiniti formulom jednostavnim pozivanjem na nazive datoteka, ali vjerujem da Excel nema jednostavnu formulu za brojanje radnih listova. Hvala!
Ako želite pročitati izvorno pitanje, kliknite ovdje
Slijedi snimak datoteka spremljenih u mapu s .xlsx nastavkom
Napomena: Nema datoteka zaštićenih lozinkom.
Da bismo dobili kod, moramo slijediti korake u nastavku za pokretanje VB uređivača:
- Kliknite karticu Developer
- Iz grupe kodova odaberite Visual Basic
- Kopirajte donji kod u standardni modul
Sub ListSheetCounts () Dim Cell As Range Dim Conn Kao Object Dim Cat Kao Object Dim ConnStr As String Dim n As Long Dim Rng As Range Dim RngEnd As Range Dim WkbPath Kao Variant Dim Wks As Worksheet 'Putanja mape na kojoj se nalaze radne knjige. WkbPath = "C: \ Users \ Test" 'Naziv radnog lista s popisom radne knjige. Set Wks = Worksheets ("Sheet1") 'Početna ćelija popisa radnih knjiga. Postavi Rng = Wks.Range ("A2") 'Preuzmite raspon ćelija na popisu naziva radne knjige. Postavi RngEnd = Wks.Cells (Rows.Count, Rng.Column) .End (xlUp) If RngEnd.Row> = Rng.Row Zatim postavite Rng = Wks.Range (Rng, RngEnd) 'Stvorite potrebne ADO objekte iz ove makronaredbe . Postavi Conn = CreateObject ("ADODB.Connection") Postavi Cat = CreateObject ("ADOX.Catalog") 'Dodajte zadnju kosu crtu ako je potrebno. WkbPath = IIf (Desno (WkbPath, 1) "\", WkbPath & "\", WkbPath) 'Prođite kroz svaku ćeliju na popisu radne knjige. Za svaku ćeliju u nizu 'Dobijte broj radnih listova za radnu knjigu. ConnStr = "Provider = Microsoft.ACE.OLEDB.12.0; Izvor podataka =" _ & WkbPath & Cell _ & "; Proširena svojstva =" "Excel 12.0 Xml; HDR = DA; IMEX = 1;" "" Conn.Otvorite ConnStr Set Cat.ActiveConnection = Conn 'Kopirajte broj u ćeliju jedan stupac desno od naziva radne knjige na popisu. Cell.Offset (n, 1) = Cat.Tables.Count Conn.Close Next Cell 'Clean up. Set Cat = Ništa Postavljeno Conn = Ništa Kraj Sub
- Dok pokrećemo makro, dobit ćemo broj radnih listova. Snimku ispod pogledajte:
Napomena: gornji makro funkcionirat će za .xlsx & .xls proširenje, a ne za .xlsm proširenje s omogućenim makronaredbama.
- Sve gore navedene datoteke su .xlsx ekstenzija
- Dodajmo lažni Excel list, tj. List 10
- U slučaju da imamo datoteku istog imena s ekstenzijama .xlsx i .xls, tada moramo spomenuti naziv datoteke s pripadajućim ekstenzijama u našoj testnoj datoteci (stupac A) kako bi makronaredba mogla identificirati datoteku upućujući na i dajte nam točan rezultat
- Ako nismo spomenuli ili smo propustili spomenuti ekstenziju za datoteku s istim imenom, tada će nam makro dati broj ekstenzije .xlsx. Snimku ispod pogledajte:
- Da bismo dobili broj listova za List 10 s ekstenzijama .xlsx i .xls, moramo spomenuti naziv datoteke s pripadajućim nastavcima.
Snimka konačnog rezultata prikazana je u nastavku:
Zaključak: Pomoću gornjeg makro koda možemo izbrojati broj radnih listova u više datoteka, a ako je potrebno za dobivanje prilagođenog rezultata, možemo učiniti malo izmjena u VBA kodu.
Ako vam se sviđaju naši blogovi, podijelite ih sa svojim prijateljima na Facebooku. Također nas možete pratiti na Twitteru i Facebooku.
Voljeli bismo čuti vaše mišljenje, javite nam kako možemo poboljšati, nadopuniti ili inovirati svoj rad i učiniti ga boljim za vas. Pišite nam na web stranici e -pošte