Harkitse tilannetta, jossa kohtaat päivittäin useita Excel -tiedostoja ja haluat nopean mekanismin, joka auttaa sinua löytämään jokaisen työkirjan sisältämien laskentataulukoiden määrän. Jos sinulla on samanlainen ongelma, älä unohda tätä artikkelia, sillä se auttaa sinua paljon.
Tässä artikkelissa opimme laskemaan laskentataulukot useisiin tiedostoihin VBA -koodilla.
Kysymys:Minun täytyy käyttää makroa, joka pystyy lukemaan tiedostonimiluettelon ja palauttamaan kussakin tiedostossa olevien laskentataulukoiden määrän (tämä on tarkastusmekanismi, jolla varmistetaan, että oikeassa määrin laskentataulukoita on lähdössä luoduissa tiedostoissa toinen prosessi). Makron olisi määritettävä sen kansion polku, jossa tiedostot sijaitsevat (kaikki samassa kansiossa), ja etsi sitten ensimmäinen tiedosto, tunnista laskentataulukon määrä ja toista seuraava tiedosto jne.
Luulin, että voisin tehdä tämän kaavalla yksinkertaisesti viittaamalla tiedostonimiin, mutta uskon, että Excelillä ei ole suoraviivaista laskentataulukon laskentakaavaa. Kiitos!
Jos haluat lukea alkuperäisen kysymyksen, napsauta tätä
Seuraavassa on tilannekuva tiedostoista, jotka on tallennettu .xlsx -tiedostotunnisteeseen
Huomautus: Salasanasuojattuja tiedostoja ei ole.
Saadaksemme koodin meidän on suoritettava seuraavat vaiheet VB -editorin käynnistämiseksi:
- Napsauta Kehittäjä -välilehteä
- Valitse koodiryhmästä Visual Basic
- Kopioi alla oleva koodi vakiomoduuliin
Sub ListSheetCounts () Dim Sol kuten alue Dim Conn kuten Objektin Dim Cat Kuten Objektin Dim ConnStr Kuten merkkijono Dim n Niin pitkä Dim Rng Kuten alue Dim RngEnd As Range Dim WkbPath As Variant Dim Wks as Workheet 'Kansio polku, jossa työkirjat sijaitsevat. WkbPath = "C: \ Users \ Test" 'Työkirjan luettelon sisältävän laskentataulukon nimi. Aseta Wks = Worksheets ("Sheet1") 'Työkirjaluettelon aloitussolu. Aseta Rng = Wks.Range ("A2") 'Hae soluväli työkirjan nimiluettelosta. Aseta RngEnd = Wks.Cells (Rows.Count, Rng.Column) .End (xlUp) If RngEnd.Row> = Rng.Row Sitten Set Rng = Wks.Range (Rng, RngEnd) 'Luo tarvittavat ADO -objektit tältä makrolta . Aseta Conn = CreateObject ("ADODB.Connection") Set Cat = CreateObject ("ADOX.Catalog") 'Lisää tarvittaessa viimeinen vinoviiva. WkbPath = IIf (Oikea (WkbPath, 1) "\", WkbPath & "\", WkbPath) 'Selaa työkirjaluettelon jokaisen solun läpi. Jokaista solua varten Rng 'Hae työkirjan laskentataulukko. ConnStr = "Provider = Microsoft.ACE.OLEDB.12.0; Tietolähde =" _ & WkbPath & Cell _ & "; Extended Properties =" "Excel 12.0 Xml; HDR = YES; IMEX = 1;" "" Conn.Open ConnStr Aseta Cat.ActiveConnection = Conn 'Kopioi määrä solun yksi sarake oikealle luettelon työkirjan nimen vierestä. Solun siirtymä (n, 1) = Luettelo Taulukot Lask.Sulje Seuraava solu 'Puhdista. Set Cat = Nothing Set Conn = Nothing End Sub
- Kun suoritamme makroa, saamme laskentataulukoiden määrän. Katso alla oleva kuva:
Huomautus: yllä oleva makro toimii .xlsx- ja .xls -laajennuksilla eikä .xlsm -makroa käyttävillä laajennuksilla.
- Kaikki yllä olevat tiedostot ovat .xlsx laajennusta
- Lisäämme nuken Excel -taulukon eli taulukon 10
- Jos meillä on samanniminen tiedosto, jonka laajennukset ovat .xlsx & .xls, meidän on mainittava tiedoston nimi ja sen laajennukset myös testitiedostossamme (sarake A), jotta makro voi tunnistaa tiedostomme viitaten & anna meille oikea tulos
- Jos emme ole maininneet tai unohtaneet mainita saman nimisen tiedoston laajennusta, makro antaa meille .xlsx -laajennuksen määrän. Katso alla oleva kuva:
- Jotta saisimme taulukon 10 arkkien määrän .xlsx & .xls -laajennuksilla, meidän on mainittava tiedostonimi ja vastaavat laajennukset
Lopputuloksen tilannekuva on esitetty alla:
Johtopäätös: Käyttämällä yllä olevaa makrokoodia voimme laskea laskentataulukoiden lukumäärän useissa tiedostoissa, ja jos vaadimme mukautetun tuloksen saamista, voimme tehdä hieman muutoksia VBA -koodiin.
Jos pidit blogistamme, jaa se ystävillesi Facebookissa. Voit myös seurata meitä Twitterissä ja Facebookissa.
Haluaisimme kuulla sinusta, kerro meille, kuinka voimme parantaa, täydentää tai innovoida työtämme ja parantaa sitä sinulle. Kirjoita meille sähköpostitse