Sadaliet katru Excel lapu atsevišķos failos (soli pa solim)

Noskatieties video - kā sadalīt katru Excel lapu atsevišķos failos

Ja jums ir Excel darbgrāmata ar daudzām darblapām, nav vienkāršs veids, kā sadalīt katru no šīm lapām atsevišķos Excel failos un saglabāt atsevišķi.

Tas varētu būt vajadzīgs, ja veidojat lapas dažādiem mēnešiem vai reģioniem vai produktiem/klientiem un vēlaties ātri iegūt atsevišķu darbgrāmatu katrai lapai (kā Excel failu vai kā PDF failu).

Lai gan ir manuāls veids, kā sadalīt lapas atsevišķās darbgrāmatās un pēc tam saglabāt, tas ir neefektīvs un pakļauts kļūdām.

Šajā apmācībā es jums sniegšu vienkāršu VBA kodu, kuru varat izmantot, lai ātri (dažu sekunžu laikā) sadalītu visas darblapas savos atsevišķos failos un pēc tam saglabātu tos jebkurā norādītajā mapē.

Sadaliet katru darblapu atsevišķā Excel failā

Pieņemsim, ka jums ir darbgrāmata, kā parādīts zemāk, kur jums ir darba lapa katram mēnesim.

Lai sadalītu šīs lapas atsevišķā Excel failā, varat izmantot zemāk redzamo VBA kodu:

'Kods, ko izveidoja Sumits Bansals no 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 Faila nosaukums: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Pirms izmantojat iepriekš minēto VBA kodu, ir jāpārliecinās par dažām lietām:

  1. Izveidojiet mapi, kurā vēlaties iegūt visus iegūtos failus.
  2. Saglabājiet galveno Excel failu (kurā ir visas darblapas, kuras vēlaties kā atsevišķus failus) šajā mapē.

Kad esat to izdarījis, varat ievietot iepriekš minēto VBA kodu failā un palaist kodu.

Iepriekš minētais kods ir uzrakstīts tā, ka tas nosaka mapes atrašanās vietu, izmantojot faila ceļu (kurā kods tiek palaists). Tāpēc ir svarīgi vispirms saglabāt failu mapē un pēc tam izmantot šo kodu.

Kā darbojas VBA kods - Iepriekš minētais kods izmanto vienkāršu cilni Tālāk, kas iet caur katru darblapu, izveido darblapas kopiju Excel darbgrāmatā un pēc tam saglabā šo Excel darbgrāmatu norādītajā mapē (kas ir tā pati, kurai ir galvenais fails ar visiem loksnes).

Tālāk ir norādītas darbības, kā ievietot šo VBA kodu Excel darbgrāmatā (tās būs vienādas ar visām citām šajā apmācībā parādītajām metodēm):

Kur ievietot šo kodu?

Tālāk ir norādītas darbības, kā ievietot kodu Visual Basic redaktorā, kur to var izpildīt.

  • Noklikšķiniet uz cilnes Izstrādātājs.
  • Grupā Kods noklikšķiniet uz opcijas Visual Basic. Tas atvērs VB redaktoru. [Varat arī izmantot īsinājumtaustiņu - ALT + F11]
  • VB redaktorā ar peles labo pogu noklikšķiniet uz jebkura darbgrāmatas objekta, pie kura strādājat.
  • Virziet kursoru virs opcijas Ievietot
  • Noklikšķiniet uz moduļa. Tādējādi tiks ievietots jauns modulis
  • Veiciet dubultklikšķi uz moduļa objekta. tas atvērs moduļa koda logu
  • Kopējiet iepriekš norādīto VBA kodu un ielīmējiet to moduļa koda logā.
  • Atlasiet jebkuru koda rindiņu un rīkjoslā noklikšķiniet uz zaļās atskaņošanas pogas, lai palaistu VBA makro kodu.

Iepriekš minētās darbības darblapas uzreiz sadalītu atsevišķos Excel failos un saglabātu. Tas aizņem tikai sekundi, ja jums ir mazāk darblapu. Ja jums ir daudz, tas var aizņemt kādu laiku.

Katra saglabātā faila nosaukums ir tāds pats kā lapas nosaukumam, kas tam bija galvenajā failā.

Tā kā esat ievietojis VBA kodu Excel darbgrāmatā, jums tas jāsaglabā .XLSM formātā (tas ir makro iespējots formāts). Tas nodrošinās, ka makro tiek saglabāts un darbojas, kad nākamreiz atverat šo failu.

Ņemiet vērā, ka esmu izmantojis līnijas Application.ScreenUpdating = Nepareizi un Application.DisplayAlerts = Nepareizi kodā, lai viss notiktu aizmugurē un neredzētu, kas notiek jūsu ekrānā. Kad kods ir palaists, lapas sadalītas un saglabātas, mēs tās atkal pārvēršam par TRUE.

Kā paraugprakse ieteicams izveidot galvenā faila (kurā ir lapas, kuras vēlaties sadalīt) rezerves kopiju. Tas nodrošinās, ka nepazaudēsit savus datus, ja kaut kas noiet greizi vai ja Excel nolemj kļūt lēns vai avarēt.

Sadaliet katru darblapu un saglabājiet kā atsevišķu PDF failu

Ja vēlaties sadalīt darblapas un saglabāt tās kā PDF failus, nevis Excel failus, varat izmantot tālāk norādīto kodu.

'Kods, ko izveidojis Sumit Bansal no 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.ActiveSatF.Axport.exe Tips: = xlTypePDF, Faila nosaukums: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Lietas, kas jums jāpārliecinās pirms šī koda lietošanas:

  1. Izveidojiet mapi, kurā vēlaties iegūt visus iegūtos failus.
  2. Saglabājiet galveno Excel failu (kurā ir visas darblapas, kuras vēlaties kā atsevišķus failus) šajā mapē.

Iepriekš minētais kods sadalīja katru lapu Excel failā un saglabāja to kā PDF failu tajā pašā mapē, kurā esat saglabājis galveno Excel failu.

Sadaliet tikai tās darblapas, kurās ir vārds/frāze, atsevišķos Excel failos

Ja darbgrāmatā ir daudz lapu un vēlaties sadalīt tikai tās lapas, kurās ir noteikts teksts, varat to arī izdarīt.

Piemēram, pieņemsim, ka jums ir Excel fails, kurā datus glabājat vairākus gadus, un katrai faila loksnei ir gada numurs kā prefikss. Kaut kas, kā parādīts zemāk:

Pieņemsim, ka vēlaties sadalīt visas lapas 2021. – 2022. Gadam un saglabāt tās kā atsevišķus Excel failus. Lai to izdarītu, jums kaut kā jāpārbauda katras darblapas nosaukums, un tikai tās lapas, kurām ir numurs 2021-2022, ir jāsadala un jāsaglabā, bet pārējās ir jāatstāj neskartas.

To var izdarīt, izmantojot šādu VBA makro kodu:

'Kods, ko izveidojis Sumits Bansals no trumpexcel.com Sub SplitEachWorksheet () Dim FPath kā ​​virkne Dim TexttoFind As String TexttoFind = "2020" FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False Par katru šīs darba grāmatas grāmatu. Izklājlapas If InStr (1, ws.Name, TexttoFind, vbBinaryCompare) 0 Tad ws.Copy Application.ActiveWorkbook.SaveAs Faila nosaukums: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False End If Next Application.DisplayAlerts = Patiesa lietojumprogramma.ScreenUpdating = Patiesas beigas

Iepriekš minētajā kodā esmu izmantojis mainīgo TexttoFind, kas sākumā tika piešķirts “2020”.

Pēc tam VBA kods izmanto cilni Nākamajā VBA, lai izietu cauri katrai darblapai un pēc tam pārbaudītu katras darblapas INSTR funkcijas nosaukumu. Šī funkcija pārbauda, ​​vai darblapas nosaukumā ir vārds 2021-2022. Ja tas tiek darīts, tas atgriež pozīcijas numuru, kurā atrod šo tekstu (kas šajā gadījumā ir 2021–2022).

Un, ja tas neatrod meklēto tekstu, tas atgriež 0.

To izmanto kopā ar IF IF nosacījumu. Tātad, ja lapas nosaukumā ir teksta virkne 2021-2022, tā tiks sadalīta un saglabāta kā atsevišķs fails. Un, ja tam nav šīs teksta virknes, IF nosacījums netiktu izpildīts un nekas nenotiktu.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave