Padalinkite kiekvieną „Excel“ lapą į atskirus failus (žingsnis po žingsnio)

Žiūrėti vaizdo įrašą - kaip suskaidyti kiekvieną „Excel“ lapą į atskirus failus

Jei turite „Excel“ darbaknygę su daugybe darbalapių, nėra paprasto būdo padalinti kiekvieną iš šių lapų į atskirus „Excel“ failus ir išsaugoti atskirai.

To gali prireikti, kai pateikiate skirtingų mėnesių ar regionų ar produktų/klientų lapus ir norite greitai gauti atskirą darbo knygą kiekvienam lapui (kaip „Excel“ failą arba kaip PDF).

Nors yra rankinis būdas padalinti lapus į atskiras darbaknyges ir tada juos išsaugoti, jis yra neefektyvus ir linkęs į klaidas.

Šioje pamokoje aš jums pateiksiu paprastą VBA kodą, kurį galite naudoti norėdami greitai (per kelias sekundes) padalinti visus darbalapius į atskirus failus ir išsaugoti juos bet kuriame nurodytu aplanku.

Padalinkite kiekvieną darbalapį į atskirą „Excel“ failą

Tarkime, kad turite darbaknygę, kaip parodyta žemiau, kur turite kiekvieno mėnesio darbalapį.

Norėdami padalinti šiuos lapus į atskirą „Excel“ failą, galite naudoti žemiau esantį VBA kodą:

„Kodą sukūrė Sumitas Bansalis iš trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveWorkbook.Save Failo pavadinimas: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = Tikroji pabaiga

Prieš naudodami aukščiau pateiktą VBA kodą, turite įsitikinti keliais dalykais:

  1. Sukurkite aplanką, kuriame norite gauti visus gautus failus.
  2. Išsaugokite pagrindinį „Excel“ failą (kuriame yra visi norimi darbalapiai kaip atskiri failai) šiame aplanke.

Kai tai padarysite, galite įdėti aukščiau pateiktą VBA kodą į failą ir paleisti kodą.

Aukščiau pateiktas kodas parašytas taip, kad jis nustatytų aplanko vietą naudodamas failo kelią (kuriame kodas vykdomas). Štai kodėl svarbu pirmiausia išsaugoti failą aplanke, o tada naudoti šį kodą.

Kaip veikia VBA kodas - Pirmiau pateiktas kodas naudoja paprastą „For Next“ ciklą, kuris eina per kiekvieną darbalapį, sukuria darbalapio kopiją „Excel“ darbaknygėje ir išsaugo šią „Excel“ darbaknygę nurodytame aplanke (kuris yra tas pats, kuriame yra pagrindinis failas su visais lakštai).

Žemiau pateikiami veiksmai, kaip šį VBA kodą įdėti į „Excel“ darbaknygę (jie bus vienodi visiems kitiems metodams, parodytiems šioje pamokoje):

Kur dėti šį kodą?

Toliau pateikiami kodo įdėjimo į „Visual Basic“ redaktorių, kuriame jį galima vykdyti, veiksmai:

  • Spustelėkite skirtuką Kūrėjas.
  • Grupėje „Kodas“ spustelėkite parinktį „Visual Basic“. Tai atidarys VB redaktorių. [Taip pat galite naudoti sparčiuosius klavišus - ALT + F11]
  • VB redaktoriuje dešiniuoju pelės mygtuku spustelėkite bet kurį darbaknygės, prie kurios dirbate, objektą.
  • Užveskite pelės žymeklį ant parinkties Įterpti
  • Spustelėkite Modulis. Tai įterps naują modulį
  • Dukart spustelėkite Module objektą. tai atvers modulio kodo langą
  • Nukopijuokite aukščiau pateiktą VBA kodą ir įklijuokite jį į modulio kodo langą.
  • Pasirinkite bet kurią kodo eilutę ir įrankių juostoje spustelėkite žalią paleidimo mygtuką, kad paleistumėte VBA makro kodą.

Pirmiau minėti veiksmai akimirksniu padalintų darbalapius į atskirus „Excel“ failus ir juos išsaugotų. Tai užtrunka tik sekundę, jei turite mažiau darbalapių. Jei turite daug, tai gali užtrukti.

Kiekvieno išsaugoto failo pavadinimas yra toks pat kaip lapo pavadinimo, kurį jis turėjo pagrindiniame faile.

Kadangi įdėjote VBA kodą į „Excel“ darbaknygę, turite jį išsaugoti .XLSM formatu (kuris yra makrokomandų formatas). Tai užtikrins, kad makrokomanda bus išsaugota ir veiks, kai kitą kartą atidarysite šį failą.

Atkreipkite dėmesį, kad aš naudoju linijas Application.ScreenUpdating = Netiesa ir Application.DisplayAlerts = Netiesa kodą, kad viskas vyktų užpakalinėje sistemoje ir nematytų, kas vyksta jūsų ekrane. Kai kodas paleidžiamas ir padalijami lapai bei išsaugomi, mes juos vėl perkeliame į TRUE.

Kaip geriausia praktika rekomenduojama sukurti atsarginę pagrindinio failo kopiją (kurioje yra lapai, kuriuos norite padalyti). Tai užtikrins, kad neprarasite savo duomenų, jei kas nors nutiktų blogai arba jei „Excel“ nuspręstų sulėtėti ar sugesti.

Padalinkite kiekvieną darbalapį ir išsaugokite kaip atskirus PDF failus

Jei norite padalinti darbalapius ir išsaugoti juos kaip PDF failus, o ne „Excel“ failus, galite naudoti žemiau esantį kodą:

'Kodas, kurį sukūrė Sumitas Bansalis iš trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveSatFExportActiveSat.Export Tipas: = xlTypePDF, Failo pavadinimas: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Prieš naudodami šį kodą turite įsitikinti:

  1. Sukurkite aplanką, kuriame norite gauti visus gautus failus.
  2. Išsaugokite pagrindinį „Excel“ failą (kuriame yra visi norimi darbalapiai kaip atskiri failai) šiame aplanke.

Aukščiau pateiktas kodas padalijo kiekvieną „Excel“ failo lapą ir išsaugojo jį kaip PDF tame pačiame aplanke, kuriame išsaugojote pagrindinį „Excel“ failą.

Skirstykite tik tuos darbalapius, kuriuose yra žodis/frazė, į atskirus „Excel“ failus

Jei darbaknygėje yra daug lapų ir norite suskaidyti tik tuos lapus, kuriuose yra tam tikras tekstas, galite tai padaryti.

Pvz., Tarkime, kad turite „Excel“ failą, kuriame kaupiate kelerių metų duomenis, o kiekvieno failo lapo priešdėlis yra metų numeris. Kažkas, kaip parodyta žemiau:

Tarkime, norite padalinti visus 2021–2022 m. Lapus ir išsaugoti juos kaip atskirus „Excel“ failus. Norėdami tai padaryti, turite kažkaip patikrinti kiekvieno darbalapio pavadinimą ir tik tuos lapus, kurių numeris yra 2021-2022, reikia padalyti ir išsaugoti, o likusius nepalikti.

Tai galima padaryti naudojant šį VBA makro kodą:

'Kodas, kurį sukūrė Sumitas Bansalis iš trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String Dim TexttoFind As String TexttoFind = "2020" FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False Už kiekvieną šios darbo knygos knygą. Skaičiuoklės If InStr (1, ws.Name, TexttoFind, vbBinaryCompare) 0 Tada ws.Copy Application.ActiveWorkbook.SaveAs Failo pavadinimas: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False End Application.DisplayAlerts = Tikra programa.ScreenUpdating = Tikroji pabaiga

Pirmiau pateiktame kode naudoju kintamąjį „TexttoFind“, kuris pradžioje buvo priskirtas „2020“.

Tada VBA kodas naudoja VBA ciklą „Kitas“, kad pereitų prie kiekvieno darbalapio ir patikrintų kiekvieno darbalapio INSTR funkcijos pavadinimą. Ši funkcija patikrina, ar darbalapio pavadinime yra žodis2021-2022, ar ne. Jei tai padarys, jis grąžins pozicijos numerį, kuriame randa šį tekstą (šiuo atveju 2021–2022).

Ir jei jis neranda ieškomo teksto, jis grąžina 0.

Tai naudojama su sąlyga IF IF. Taigi, jei lapo pavadinime yra teksto eilutė2021-2022, jis bus padalintas ir išsaugotas kaip atskiras failas. Ir jei ji neturi šios teksto eilutės, IF sąlyga nebūtų įvykdyta ir nieko neįvyktų.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave