Jagage iga Exceli leht eraldi failideks (samm-sammult)

Vaadake videot - kuidas jagada iga Exceli leht eraldi failideks

Kui teil on Exceli töövihik, kus on palju töölehti, ei ole lihtne viis neid lehti eraldi Exceli failideks jagada ja eraldi salvestada.

Seda võib vaja minna, kui lehed erinevate kuude või piirkondade või toodete/klientide jaoks ja soovite kiiresti saada iga lehe jaoks eraldi töövihiku (Exceli failina või PDF -failina).

Kuigi on olemas käsitsi viis lehtede eraldamiseks eraldi töövihikuteks ja seejärel salvestamiseks, on see ebaefektiivne ja vigadeohtlik.

Selles õpetuses annan teile lihtsa VBA -koodi, mille abil saate kiiresti (mõne sekundi jooksul) jagada kõik töölehed eraldi failideks ja seejärel salvestada need mis tahes määratud kausta.

Jagage iga tööleht eraldi Exceli faili

Oletame, et teil on allpool näidatud töövihik, kus teil on iga kuu tööleht.

Nende lehtede jagamiseks eraldi Exceli failiks saate kasutada järgmist VBA -koodi:

'Koodi on loonud Sumit Bansal, aadressilt trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String Faili nimi: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = Tõsi lõpp alam

Enne ülaltoodud VBA -koodi kasutamist peate veenduma mõned asjad:

  1. Looge kaust, kuhu soovite saada kõik saadud failid.
  2. Salvestage sellesse kausta peamine Exceli fail (mis sisaldab kõiki soovitud töölehti eraldi failidena).

Kui olete selle teinud, saate ülaltoodud VBA -koodi faili panna ja koodi käivitada.

Ülaltoodud kood on kirjutatud nii, et see otsib üles kausta asukoha, kasutades faili teed (milles kood käivitatakse). Seetõttu on oluline fail kõigepealt kausta salvestada ja seejärel seda koodi kasutada.

Kuidas VBA kood töötab - Ülaltoodud kood kasutab lihtsat järgmiseks tsüklit, mis läbib iga töölehe, loob töölehe koopia Exceli töövihikusse ja salvestab seejärel selle Exceli töövihiku määratud kausta (mis on sama, millel on põhifail koos kõigi lehed).

Allpool on toodud sammud selle VBA -koodi paigutamiseks Exceli töövihikusse (need on samad kõigi teiste selles õpetuses näidatud meetodite puhul):

Kuhu see kood panna?

Allpool on toodud sammud koodi paigutamiseks Visual Basic Editorisse, kus seda saab käivitada.

  • Klõpsake vahekaarti Arendaja.
  • Klõpsake rühmas Kood suvandit Visual Basic. See avab VB redaktori. [Võite kasutada ka kiirklahvi - ALT + F11]
  • Paremklõpsake VB redaktoris mis tahes töövihiku objekte, millega töötate.
  • Hõljutage kursorit valiku Lisa kohal
  • Klõpsake moodulil. See lisab uue mooduli
  • Topeltklõpsake objekti Module. see avab mooduli koodi akna
  • Kopeerige ülaltoodud VBA -kood ja kleepige see mooduli koodi aknasse.
  • Valige koodis mis tahes rida ja klõpsake tööriistariba rohelist esitusnuppu, et käivitada VBA makrokood.

Ülaltoodud sammud jagaksid töölehed koheselt eraldi Exceli failideks ja salvestaksid need. Kui teil on vähem töölehti, kulub vaid sekund. Kui teil on palju, võib see aega võtta.

Iga salvestatud faili nimi on sama, mis lehe põhinimel.

Kuna olete paigutanud VBA-koodi Exceli töövihikusse, peate selle salvestama .XLSM-vorminguga (see on makropõhine vorming). See tagab, et makro salvestatakse ja töötab ka selle faili järgmisel avamisel.

Pange tähele, et olen ridu kasutanud Application.ScreenUpdating = Vale ja Application.DisplayAlerts = Vale koodis, nii et kõik juhtub taustaprogrammis ja ei näe asju ekraanil. Kui kood on käivitatud, lehed jagatud ja salvestatud, muudame need tagasi tõeks.

Hea tava kohaselt on soovitatav luua varukoopia põhifailist (millel on lehed, mida soovite jagada). See tagab, et te ei kaota oma andmeid, kui midagi läheb valesti või kui Excel otsustab aeglustuda või kokku kukkuda.

Jagage iga tööleht ja salvestage eraldi PDF -failidena

Kui soovite töölehed jagada ja need Exceli failide asemel PDF -failidena salvestada, võite kasutada järgmist koodi:

'Koodi on loonud Sumit Bansal (trumpexcel.com) Sub SplitEachWorksheet () Dim FPath As String Tüüp: = xlTypePDF, failinimi: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Mida peate enne selle koodi kasutamist veenduma:

  1. Looge kaust, kuhu soovite saada kõik saadud failid.
  2. Salvestage sellesse kausta Exceli peamine fail (mis sisaldab kõiki soovitud töölehti eraldi failidena).

Ülaltoodud kood jagas Exceli faili iga lehe ja salvestab selle PDF -failina samasse kausta, kuhu olete Exceli peamise faili salvestanud.

Jagage eraldi Exceli failideks ainult need töölehed, mis sisaldavad sõna/fraasi

Kui töövihikus on palju lehti ja soovite jagada ainult neid lehti, millel on konkreetne tekst, saate seda ka teha.

Oletame näiteks, et teil on Exceli fail, kus te andmeid mitme aasta jooksul ja iga faili lehel on eesliide aasta number. Midagi, nagu allpool näidatud:

Oletame, et soovite jagada kõik lehed aastateks 2021–2022 ja salvestada need eraldi Exceli failidena. Selleks peate kuidagi kontrollima iga töölehe nime ja tükeldama ja salvestama ainult need lehed, millel on number 2021-2022, ja ülejäänud tuleks puutumata jätta.

Seda saab teha järgmise VBA makrokoodi abil:

'Koodi on loonud Sumit Bansal saidilt trumpexcel.com Sub SplitEachWorksheet () Dim FPath kui string Dim TexttoFind As String TexttoFind = "2020" FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = Vale iga töövihiku jaoks. Arvutustabelid If InStr (1, ws.Name, TexttoFind, vbBinaryCompare) 0 Siis ws.Copy Application.ActiveWorkbook.SaveAs Failinimi: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Sulge vale lõpp Kui järgmine Application.DisplayAlerts = Tõeline rakendus.ScreenUpdating = Tõelise lõpu alam

Ülaltoodud koodis olen kasutanud muutujat TexttoFind, millele on alguses määratud “2020”.

Seejärel kasutab VBA kood iga töölehe läbimiseks VBA silmust Järgmiseks ja seejärel kontrollib iga töölehe INSTR funktsiooni nime. See funktsioon kontrollib, kas töölehe nimes on sõna 2021-2022 või mitte. Kui see juhtub, tagastab see positsiooni numbri, kust see tekst leiab (mis on antud juhul 2021–2022).

Ja kui see ei leia otsitud teksti, tagastab see 0.

Seda kasutatakse tingimusega IF Siis. Seega, kui lehe nimi sisaldab teksti string2021-2022, jagatakse see pooleks ja salvestatakse eraldi failina. Ja kui sellel pole seda tekstistringi, ei oleks IF tingimus täidetud ja midagi ei juhtuks.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave