Apsveriet situāciju, kad ikdienā sastopaties ar vairākiem Excel failiem un vēlaties ātru mehānismu, kas palīdzētu atrast katrā darbgrāmatā esošo darblapu skaitu. Ja jums ir līdzīga problēma, tad nepalaidiet garām šo rakstu, jo tas jums ļoti palīdzēs.
Šajā rakstā mēs iemācīsimies saskaitīt darblapas vairākos failos ar VBA kodu.
Jautājums:Man ir nepieciešams makro, lai varētu izlasīt failu nosaukumu sarakstu un atgriezt katrā failā esošo darblapu skaitu (tas ir audita mehānisms, lai nodrošinātu, ka virknē failu, kas izveidoti, izmantojot cits process). Makro vajadzētu noteikt mapes ceļu, kurā atrodas faili (visi vienā mapē), pēc tam atrodiet pirmo failu, identificējiet darblapu skaitu un atkārtojiet nākamo failu utt.
Es domāju, ka es varētu to izdarīt ar formulu, vienkārši atsaucoties uz failu nosaukumiem, bet es uzskatu, ka programmai Excel nav tiešas formulas darblapu skaitīšanai. Paldies!
Ja vēlaties izlasīt sākotnējo jautājumu, noklikšķiniet šeit
Tālāk ir redzams failu, kas saglabāti mapē ar paplašinājumu .xlsx, momentuzņēmums
Piezīme. Nav ar paroli aizsargātu failu.
Lai iegūtu kodu, mums ir jāveic šādas darbības, lai palaistu VB redaktoru:
- Noklikšķiniet uz cilnes Izstrādātājs
- Kodu grupā atlasiet Visual Basic
- Nokopējiet zemāk esošo kodu standarta modulī
Sub ListSheetCounts () Dim šūna kā diapazons Dim Conn kā objekts Dim Cat Kā objekts Dim ConnStr kā virkne Dim n kā garš Dim Rng kā diapazons Dim RngEnd kā diapazons Dim WkbPath kā variants Dim Wks kā darblapa 'Mapes ceļš, kurā atrodas darbgrāmatas. WkbPath = "C: \ Users \ Test" 'Darblapas nosaukums ar darbgrāmatu sarakstu. Iestatīt Wks = Worksheets ("Sheet1") 'Darbgrāmatu saraksta sākuma šūna. Iestatiet Rng = Wks.Range ("A2") 'Iegūstiet šūnu diapazonu darbgrāmatas nosaukumu sarakstā. Iestatīt RngEnd = Wks.Cells (Rows.Count, Rng.Column). End (xlUp) If RngEnd.Row> = Rng.Row then Set Rng = Wks.Range (Rng, RngEnd) 'Izveidojiet nepieciešamos ADO objektus no šī makro . Set Conn = CreateObject ("ADODB.Connection") Set Cat = CreateObject ("ADOX.Catalog") 'Ja nepieciešams, pievienojiet pēdējo slīpsvītru. WkbPath = IIf (Pa labi (WkbPath, 1) "\", WkbPath & "\", WkbPath) 'Iet cauri katrai darbgrāmatu saraksta šūnai. Katrai rindas šūnai 'Iegūstiet darbgrāmatas darblapu skaitu. ConnStr = "Provider = Microsoft.ACE.OLEDB.12.0; Datu avots =" _ & WkbPath & Cell _ & "; Paplašinātie rekvizīti =" "Excel 12.0 Xml; HDR = YES; IMEX = 1;" "" Conn.Open ConnStr Iestatiet Cat.ActiveConnection = Conn 'Kopējiet skaitu šūnā vienā kolonnā pa labi no darbgrāmatas nosaukuma sarakstā. Šūna.Pārbīdes (n, 1) = Cat.Tables.Count Conn. Close Next Cell 'Clean. Set Cat = Nothing Set Conn = Nothing End Sub
- Palaižot makro, mēs iegūsim darblapu skaitu. Skatiet zemāk esošo momentuzņēmumu:
Piezīme. Iepriekš minētais makro darbosies paplašinājumiem .xlsx & .xls, bet ne .xlsm paplašinājumiem, kas iespējo makro.
- Visi iepriekš minētie faili ir .xlsx paplašinājums
- Pievienosim fiktīvu Excel lapu, t.i., 10. lapu
- Ja mums ir fails ar tādu pašu nosaukumu ar paplašinājumiem .xlsx & .xls, tad testa failā (A slejā) ir jānorāda faila nosaukums ar attiecīgajiem paplašinājumiem, lai makro varētu identificēt failu atsaucoties uz un sniedziet mums pareizo rezultātu
- Ja mēs neesam minējuši vai neesam pieminējuši faila paplašinājumu ar tādu pašu nosaukumu, tad makro dos mums .xlsx paplašinājuma skaitu. Skatiet zemāk esošo momentuzņēmumu:
- Lai iegūtu lapu skaitu 10. lapai ar paplašinājumiem .xlsx un .xls, mums ir jāpiemin faila nosaukums ar attiecīgajiem paplašinājumiem
Galīgās produkcijas momentuzņēmums ir parādīts zemāk:
Secinājums: Izmantojot iepriekš minēto makro kodu, mēs varam saskaitīt darblapu skaitu vairākos failos, un, ja nepieciešams, lai iegūtu pielāgotu rezultātu, mēs varam nedaudz mainīt VBA kodu.
Ja jums patika mūsu emuāri, kopīgojiet to ar saviem draugiem Facebook. Un arī jūs varat sekot mums Twitter un Facebook.
Mēs labprāt uzklausītu jūsu viedokli, dariet mums zināmu, kā mēs varam uzlabot, papildināt vai ieviest jauninājumus mūsu darbā un uzlabot to jūsu labā. Rakstiet mums e -pasta vietnē