Как да комбинирате няколко Excel файла в една работна книга на Excel

Получих обаждане от приятел, който искаше да комбинира няколко Excel файла в една работна книга на Excel. Той имаше много файлове в папка и искаше да обедини всички работни листове от всички работни книги в една работна книга.

Въпреки че това може да се направи ръчно, би отнело много време и е склонно към грешки.

Един прост VBA код обаче може да направи това за няколко секунди.

Комбинирайте няколко Excel файла в един файл

Ето кода, който може да комбинира няколко работни книги на Excel в определена папка в една работна книга на Excel:

Sub ConslidateWorkbooks () 'Създадено от Sumit Bansal от https://trumpexcel.com Dim FolderPath As String Dim Filename As String Dim Sheet Като работен лист Application.ScreenUpdating = False FolderPath = Environ ("userprofile") & "DesktopTest" Filename = Dir ( FolderPath & "*.xls*") Do While Filename "" Workbooks.Open Filename: = FolderPath & Filename, ReadOnly: = True за всеки лист в ActiveWorkbook.Sheets Sheet.Copy After: = ThisWorkbook.Sheets (1) Следващ лист (Име на файл). Затворете Име на файл = Dir () Приложение за цикъл. ScreenUpdating = True End Sub

Как да използвате този код?

Ето стъпките за използване на този код:

  • Поставете всички файлове на Excel, които искате да комбинирате, в папка. За целите на този урок създадох папка с име Test и в нея има шест файла (по 4 работни книги на Excel и по 1 Power Point и Word всяка).
  • Отворете нова работна книга на Excel.
  • Натиснете ALT + F11 (или отидете на Developer -> Code -> Visual Basic). Това ще отвори редактора на Visual Basic.
  • В VB Editor, в Project Editor, щракнете с десния бутон върху някой от обектите на работната книга и отидете на Insert -> Module. Това ще вмъкне модул за работната книга.
  • Щракнете двукратно върху модула. Той ще отвори прозореца с код вдясно.
  • Копирайте и поставете горния код в кодовия прозорец.
  • В кода трябва да промените следния ред код:
    FolderPath = Environ ("userprofile") & "DesktopTest"

    В този ред променете частта в двойни кавички (маркирана в оранжево) с местоположението на папката, в която имате файловете, които искате да комбинирате. В кода, използван по -горе, папката е на работния плот. В случай, че го имате на друго място, посочете този път тук.

  • Поставете курсора навсякъде в кода и кликнете върху зеления бутон за възпроизвеждане в опциите на лентата с инструменти (или натиснете клавиша F5).

Това ще стартира кода и всички работни листове от всички файлове на Excel в папката ще бъдат консолидирани в една работна книга.

Как работи този код?

  • Кодът използва функцията DIR, за да получи имената на файловете от посочената папка.
  • Следващият ред присвоява първото име на excel файл на променливата „Име на файл“.
    Име на файла = Dir (FolderPath & “*.xls*”)
  • След това цикълът До докато се използва за проверка дали всички файлове са покрити.
  • В рамките на цикъла „Do While“ цикълът „For Each“ се използва за копиране на всички работни листове в работната книга, в която изпълняваме кода.
  • В края на Do Loop се използва следният ред код: Filename = Dir (). Той присвоява следващото име на Excel файл на променливата Filename и цикълът започва отново.
  • Когато всички файлове са покрити, функцията DIR връща празен низ, когато цикълът приключва.

Ето обяснение на функцията DIR в библиотеката на MSDN:

Реж връща първото име на файла, което съответства на pathname. За да получите допълнителни имена на файлове, които съответстват на името на пътя, обадете се Реж отново без аргументи. Когато повече имена на файлове не съвпадат, Реж връща низ с нулева дължина („”).

Опитвали ли сте нещо подобно с помощта на VBA? Споделете какво сте направили и всички можем да се поучим от него.

Спестете лудо време, използвайки VBA. Проверете Курс Excel VBA.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave