Ossza fel az egyes Excel-lapokat külön fájlokba (lépésről lépésre)

Videó megtekintése - Hogyan lehet felosztani az egyes Excel -lapokat külön fájlokba?

Ha Excel munkafüzete sok munkalappal rendelkezik, nincs egyszerű módja annak, hogy mindegyik lapot különálló Excel fájlokká ossza fel, és külön mentse.

Erre akkor lehet szükség, ha különböző hónapokra vagy régiókra vagy termékekre/ügyfelekre vonatkozó lapokat készít, és gyorsan szeretne külön munkafüzetet szerezni minden laphoz (Excel -fájlként vagy PDF -ként).

Bár van egy kézi módszer a lapok különálló munkafüzetekre történő felosztására, majd mentésére, ez nem hatékony és hibalehetőséget jelent.

Ebben az oktatóanyagban egy egyszerű VBA -kódot adok, amellyel gyorsan (néhány másodperc alatt) feloszthatja az összes munkalapot saját fájljaira, majd elmentheti őket bármely megadott mappába.

Ossza fel minden munkalapot egy különálló Excel fájlba

Tegyük fel, hogy van egy munkafüzete az alábbiak szerint, ahol van egy munkalapja minden hónapra.

Ha ezeket a lapokat külön Excel fájlba szeretné osztani, használja az alábbi VBA kódot:

'A kódot Sumit Bansal készítette a trumpexcel.com -tól. Sub SplitEachWorksheet () Dim FPath As String Fájlnév: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

A fenti VBA -kód használata előtt néhány dolgot meg kell győződnie:

  1. Hozzon létre egy mappát, ahová az összes kapott fájlt be szeretné szerezni.
  2. Mentse a fő Excel fájlt (amely tartalmazza az összes kívánt munkalapot külön fájlként) ebbe a mappába.

Ha ez megtörtént, akkor a fenti VBA kódot behelyezheti a fájlba, és futtathatja a kódot.

A fenti kód úgy van írva, hogy a fájl elérési útján (a kód futtatásakor) felveszi a mappa helyét. Ezért fontos, hogy először mentse el a fájlt a mappába, majd használja ezt a kódot.

Hogyan működik a VBA kód? - A fenti kód egy egyszerű For Next ciklust használ, amely végigmegy minden munkalapon, létrehoz egy másolatot a munkalapról egy Excel munkafüzetben, majd elmenti ezt az Excel munkafüzetet a megadott mappába (amely ugyanaz, amely tartalmazza a fő fájlt ágynemű).

Az alábbiakban bemutatjuk a lépéseket ennek a VBA -kódnak az Excel -munkafüzetben történő elhelyezéséhez (ezek ugyanazok lesznek az oktatóanyagban bemutatott összes többi módszer esetében is):

Hova tegyem ezt a kódot?

Az alábbiakban bemutatjuk a kód elhelyezésének lépéseit a Visual Basic Editorban, ahol végrehajtható:

  • Kattintson a Fejlesztő fülre.
  • A Kód csoportban kattintson a Visual Basic lehetőségre. Ez megnyitja a VB szerkesztőt. [Használhatja a billentyűparancsot is - ALT + F11]
  • A VB szerkesztőben kattintson a jobb gombbal a munkafüzet bármelyik objektumára, amelyen dolgozik.
  • Vigye a kurzort a Beszúrás lehetőségre
  • Kattintson a Modul elemre. Ezzel új modult helyez be
  • Kattintson duplán a Module objektumra. ez megnyitja a modul kódablakát
  • Másolja a fent megadott VBA kódot, és illessze be a modulkód ablakba.
  • Válassza ki a kód bármelyik sorát, és kattintson a zöld lejátszás gombra az eszköztáron a VBA makrókód futtatásához.

A fenti lépések azonnal felosztják a munkalapokat különálló Excel fájlokba, és elmennek. Csak egy másodpercig tart, ha kevesebb munkalapja van. Ha sok van, akkor eltarthat egy ideig.

Minden mentett fájl neve megegyezik a fő fájlban lévő munkalap nevével.

Mivel elhelyezett egy VBA-kódot az Excel munkafüzetben, ezt el kell mentenie .XLSM formátumban (ez a makró-engedélyezett formátum). Ez biztosítja, hogy a makró mentésre kerüljön, és a fájl következő megnyitásakor is működjön.

Vegye figyelembe, hogy a vonalakat használtam Application.ScreenUpdating = Hamis és Application.DisplayAlerts = Hamis a kódban, hogy minden a háttérben történjen, és ne a dolgok történjenek a képernyőn. Amint a kód lefut, felosztja a lapokat és elmenti ezeket, visszaállítjuk ezeket az IGAZ értékre.

A legjobb gyakorlat szerint ajánlott biztonsági másolatot készíteni a fő fájlról (amely a felosztani kívánt lapokat tartalmazza). Ez biztosítja, hogy ne veszítse el adatait arra az esetre, ha valami baj történne, vagy ha az Excel úgy dönt, hogy lassú lesz vagy összeomlik.

Ossza fel a munkalapokat, és mentse külön PDF -ként

Ha fel szeretné osztani a munkalapokat, és PDF fájlként szeretné menteni ezeket az Excel fájlok helyett, akkor használja az alábbi kódot:

'Kód: Sumit Bansal készítette a trumpexcel.com -tól Típus: = xlTypePDF, Fájlnév: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Amit a kód használata előtt meg kell győződnie:

  1. Hozzon létre egy mappát, ahová az összes kapott fájlt be szeretné szerezni.
  2. Mentse a fő Excel fájlt (amely tartalmazza az összes kívánt munkalapot külön fájlként) ebbe a mappába.

A fenti kód minden lapot feldarabolt az Excel fájlban, és PDF formátumban mentette ugyanabba a mappába, ahová a fő Excel fájlt mentette.

Csak azokat a munkalapokat ossza szét külön Excel -fájlokba, amelyek egy szót/kifejezést tartalmaznak

Ha sok munkalap van a munkafüzetben, és csak azokat a lapokat szeretné felosztani, amelyekben egy adott szöveg szerepel, akkor azt is megteheti.

Tegyük fel például, hogy van egy Excel -fájlja, amelyben több évre vonatkozó adatokat ad meg, és a fájl minden lapjának előtagja az évszám. Valami az alábbiak szerint:

Tegyük fel, hogy fel szeretné osztani a 2021–2022 közötti időszak összes lapját, és el szeretné menteni ezeket külön Excel-fájlként. Ehhez valahogy ellenőriznie kell az egyes munkalapok nevét, és csak azokat a lapokat kell felosztani és menteni, amelyek száma 2021-2022, a többit pedig érintetlenül kell hagyni.

Ezt a következő VBA makrókód segítségével teheti meg:

'A kódot Sumit Bansal készítette a trumpexcel.com -tól Sub SplitEachWorksheet () Dim FPath mint karakterlánc Dim TexttoFind As String TexttoFind = "2020" FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False Minden munkalapban. Táblázatok Ha InStr (1, ws.Name, TexttoFind, vbBinaryCompare) 0 Akkor ws.Copy Application.ActiveWorkbook.SaveAs Fájlnév: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close hamis vége Ha Application.DisplayAlerts = True Application.ScreenUpdating = Igaz vég al

A fenti kódban egy TexttoFind változót használtam, amelyet az elején „2020” -hoz rendeltek.

A VBA kód ezután a VBA For Next ciklusa segítségével végigmegy az egyes munkalapokon, majd ellenőrzi az egyes munkalapok INSTR függvényének nevét. Ez a funkció ellenőrzi, hogy a munkalap nevében szerepel-e a 2021-2022 szó, vagy sem. Ha igen, akkor egy pozíciószámot ad vissza, ahol megtalálja ezt a szöveget (ami ebben az esetben 2021-2022).

Ha pedig nem találja a keresett szöveget, 0 -t ad vissza.

Ezt az IF Majd feltétellel használják. Tehát ha egy lap nevében szerepel a 2021-2022 karakterlánc, akkor felosztja és külön fájlként menti. És ha nincs meg ez a szöveges karakterlánc, akkor az IF feltétel nem teljesül, és semmi sem történik.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave