Împărțiți fiecare foaie Excel în fișiere separate (pas cu pas)

Vizionați videoclipuri - Cum să împărțiți fiecare foaie Excel în fișiere separate

Dacă aveți un registru de lucru Excel cu multe foi de lucru, nu există o modalitate ușoară de a împărți fiecare dintre aceste foi în fișiere Excel separate și de a salva separat.

Acest lucru ar putea fi necesar atunci când coliți pentru diferite luni sau regiuni sau produse / clienți și doriți să obțineți rapid un registru de lucru separat pentru fiecare coală (ca fișier Excel sau PDF).

Deși există o modalitate manuală de a împărți foile în registre de lucru separate și apoi de a le salva, este ineficientă și predispusă la erori.

În acest tutorial, vă voi oferi un cod VBA simplu pe care îl puteți utiliza pentru a împărți rapid (în câteva secunde) toate foile de lucru în propriile lor fișiere separate și apoi le salvați în orice folder specificat.

Împărțiți fiecare foaie de lucru într-un fișier Excel separat

Să presupunem că aveți un registru de lucru așa cum se arată mai jos, unde aveți o foaie de lucru pentru fiecare lună.

Pentru a împărți aceste foi într-un fișier Excel separat, puteți utiliza codul VBA de mai jos:

'Cod creat de Sumit Bansal de la trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False pentru fiecare ws din ThisWorkbook.Sheets ws.Copy Application.ActiveWorkbook.Save Numele fișierului: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Există câteva lucruri pe care trebuie să le asigurați înainte de a utiliza codul VBA de mai sus:

  1. Creați un folder în care doriți să obțineți toate fișierele rezultate.
  2. Salvați fișierul principal Excel (care conține toate foile de lucru pe care le doriți ca fișiere separate) în acest folder.

După ce ați făcut acest lucru, puteți pune codul VBA de mai sus în fișier și puteți rula codul.

Codul de mai sus este scris astfel încât să preia locația folderului folosind calea fișierului (în care este rulat codul). Acesta este motivul pentru care este important să salvați mai întâi fișierul în dosar și apoi să utilizați acest cod.

Cum funcționează codul VBA - Codul de mai sus utilizează o buclă simplă For Next care trece prin fiecare foaie de lucru, creează o copie a foii de lucru într-un registru de lucru Excel și apoi salvează acest registru de lucru Excel în folderul specificat (care este același care are fișierul principal cu toate foi).

Mai jos sunt pașii pentru plasarea acestui cod VBA în registrul de lucru Excel (aceștia vor fi aceiași pentru toate celelalte metode prezentate în acest tutorial):

Unde se pune acest cod?

Mai jos sunt pașii pentru a plasa codul în Editorul Visual Basic unde poate fi executat:

  • Faceți clic pe fila Dezvoltator.
  • În grupul Cod, faceți clic pe opțiunea Visual Basic. Aceasta va deschide Editorul VB. [Puteți utiliza și comanda rapidă de la tastatură - ALT + F11]
  • În Editorul VB, faceți clic dreapta pe oricare dintre obiectele din registrul de lucru la care lucrați.
  • Plasați cursorul peste opțiunea Insert
  • Faceți clic pe Modul. Aceasta va insera un nou modul
  • Faceți dublu clic pe obiectul Module. aceasta va deschide fereastra de cod pentru modul
  • Copiați codul VBA furnizat mai sus și lipiți-l în fereastra codului modulului.
  • Selectați orice linie din cod și faceți clic pe butonul verde de redare din bara de instrumente pentru a rula codul macro VBA.

Pașii de mai sus ar împărți instantaneu foile de lucru în fișiere Excel separate și le-ar salva. Durează doar o secundă dacă aveți un număr mai mic de foi de lucru. În cazul în care aveți multe, poate dura ceva timp.

Numele fiecărui fișier salvat este același cu cel al numelui foii pe care îl avea în fișierul principal.

Deoarece ați plasat un cod VBA în registrul de lucru Excel, trebuie să salvați acest lucru cu un format .XLSM (care este formatul activat pentru macro). Acest lucru vă va asigura că macro-ul este salvat și funcționează atunci când deschideți acest fișier.

Rețineți că am folosit liniile Application.ScreenUpdating = Fals și Application.DisplayAlerts = Fals în cod, astfel încât totul să se întâmple în backend și să nu vadă lucrurile care se întâmplă pe ecran. Odată ce codul rulează și împarte foile și le salvează, le întoarcem la TRUE.

Ca o bună practică, este recomandat să creați o copie de rezervă a fișierului principal (care are foile pe care doriți să le împărțiți). Acest lucru vă va asigura că nu vă pierdeți datele în cazul în care ceva nu merge bine sau dacă Excel decide să devină lent sau să se blocheze.

Împărțiți fiecare foaie de lucru și salvați ca fișiere PDF separate

În cazul în care doriți să împărțiți foile de lucru și să le salvați ca fișiere PDF în loc de fișiere Excel, puteți utiliza codul de mai jos:

'Cod creat de Sumit Bansal de la trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False pentru fiecare ws din ThisWorkbook.Sheets ws.Copy Application.ActiveSheetedExportAx Tastați: = xlTypePDF, Filename: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Lucruri pe care trebuie să le asigurați înainte de a utiliza acest cod:

  1. Creați un folder în care doriți să obțineți toate fișierele rezultate.
  2. Salvați fișierul principal Excel (care conține toate foile de lucru pe care le doriți ca fișiere separate) în acest folder.

Codul de mai sus împarte fiecare foaie în fișierul Excel și salvați-o ca PDF în același folder în care ați salvat fișierul Excel principal.

Împarte numai acele foi de lucru care conțin un cuvânt / o expresie în fișiere Excel separate

În cazul în care aveți o mulțime de foi într-un registru de lucru și doriți să împărțiți doar acele foi care au un anumit text, puteți face și asta.

De exemplu, să presupunem că aveți un fișier Excel în care datele pentru mai mulți ani și fiecare foaie din fișier are numărul de an ca prefix. Ceva așa cum se arată mai jos:

Acum, să presupunem că doriți să împărțiți toate foile pentru 2021-2022 și să le salvați ca fișiere Excel separate. Pentru a face acest lucru, trebuie să verificați cumva numele fiecărei foi de lucru și numai acele foi care au numărul 2021-2022 ar trebui să fie împărțite și salvate, iar restul ar trebui lăsate neatinse.

Acest lucru se poate face folosind următorul cod macro VBA:

'Code Created by Sumit Bansal from trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String Dim TexttoFind As String TexttoFind = "2020" FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For each ws In ThisWorkbook. Sheets If InStr (1, ws.Name, TexttoFind, vbBinaryCompare) 0 Apoi ws.Copy Application.ActiveWorkbook.SaveAs Filename: = FPath & "\" & ws.Name & ".xlsx" Application.ActiveWorkbook.Close False End If Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

În codul de mai sus, am folosit o variabilă TexttoFind, care a fost atribuită la „2020” la început.

Codul VBA folosește apoi bucla For Next din VBA pentru a parcurge fiecare foaie de lucru și apoi verifica numele fiecărei funcții INSTR a foii de lucru. Această funcție verifică dacă numele foii de lucru are sau nu cuvântul 2021-2022. Dacă o face, va returna un număr de poziție unde găsește acest text (care este 2021-2022 în acest caz).

Și dacă nu găsește textul pe care îl căutăm, returnează 0.

Acesta este utilizat cu condiția IF Then. Deci, dacă un nume de coală are șirul de text 2021-2022 în el, acesta va fi împărțit și salvat ca un fișier separat. Și dacă nu are acest șir de text, condiția IF nu ar fi îndeplinită și nu s-ar întâmpla nimic.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave