Jak połączyć wiele plików Excela w jeden skoroszyt Excela

Dostałem telefon od znajomego, który chciał połączyć wiele plików Excela w jeden skoroszyt Excela. Miał wiele plików w folderze i chciał zebrać wszystkie arkusze ze wszystkich skoroszytów w jednym skoroszycie.

Chociaż można to zrobić ręcznie, byłoby to czasochłonne i podatne na błędy.

Jednak prosty kod VBA może to zrobić w kilka sekund.

Połącz wiele plików Excela w jeden plik

Oto kod, który może łączyć wiele skoroszytów programu Excel w określonym folderze w jeden skoroszyt programu Excel:

Sub ConslidateWorkbooks() 'Utworzony przez Sumit Bansal z https://trumpexcel.com Dim FolderPath As String Dim Filename As String Dim Sheet As Worksheet Application.ScreenUpdating = False FolderPath = Environ("userprofile") & "DesktopTest" Filename = Dir( FolderPath & "*.xls*") Wykonaj, gdy nazwa pliku "" Workbooks.Open Filename:=Ścieżka folderu i nazwa pliku, ReadOnly:=Prawda dla każdego arkusza w ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Skoroszyty następnego arkusza (Filename).Close Filename = Dir() Loop Application.ScreenUpdating = True End Sub

Jak korzystać z tego kodu?

Oto kroki, aby użyć tego kodu:

  • Umieść wszystkie pliki Excela, które chcesz połączyć, w folderze. Na potrzeby tego samouczka utworzyłem folder o nazwie Test i mam w nim sześć plików (4 skoroszyty programu Excel oraz po 1 Power Point i Word).
  • Otwórz nowy skoroszyt programu Excel.
  • Naciśnij ALT + F11 (lub przejdź do Deweloper -> Kod -> Visual Basic). Spowoduje to otwarcie Edytora Visual Basic.
  • W edytorze VB, w edytorze projektów, kliknij prawym przyciskiem myszy dowolny obiekt skoroszytu i przejdź do opcji Wstaw -> Moduł. Spowoduje to wstawienie modułu do skoroszytu.
  • Kliknij dwukrotnie moduł. Otworzy się okno kodu po prawej stronie.
  • Skopiuj i wklej powyższy kod do okna kodu.
  • W kodzie musisz zmienić następujący wiersz kodu:
    FolderPath = Środowisko("profil użytkownika") & "Test pulpitu"

    W tym wierszu zmień część w podwójnych cudzysłowach (podświetlonych na pomarańczowo) z lokalizacją folderu, w którym masz pliki, które chcesz połączyć. W powyższym kodzie folder znajduje się na pulpicie. Jeśli masz go w innej lokalizacji, podaj tutaj tę ścieżkę.

  • Umieść kursor w dowolnym miejscu w kodzie i kliknij zielony przycisk odtwarzania w opcjach paska narzędzi (lub naciśnij klawisz F5).

Spowoduje to uruchomienie kodu, a wszystkie arkusze robocze ze wszystkich plików programu Excel w folderze zostaną skonsolidowane w jeden skoroszyt.

Jak działa ten kod?

  • Kod wykorzystuje funkcję DIR, aby uzyskać nazwy plików z określonego folderu.
  • Poniższy wiersz przypisuje pierwszą nazwę pliku programu Excel do zmiennej „Nazwa pliku”.
    Nazwa pliku = Dir(ŚcieżkaFolderu & „*.xls*”)
  • Następnie pętla Do While jest używana do sprawdzenia, czy wszystkie pliki zostały pokryte.
  • W pętli „Do While” pętla „For Each” służy do kopiowania wszystkich arkuszy roboczych do skoroszytu, w którym uruchamiamy kod.
  • Na końcu pętli Do, używana jest następująca linia kodu: Filename = Dir(). Przypisuje następną nazwę pliku Excel do zmiennej Filename i pętla rozpoczyna się od nowa.
  • Gdy wszystkie pliki są pokryte, funkcja DIR zwraca pusty ciąg, co oznacza zakończenie pętli.

Oto wyjaśnienie funkcji DIR w bibliotece MSDN:

Dir zwraca pierwszą nazwę pliku, która pasuje do nazwy ścieżki. Aby uzyskać dodatkowe nazwy plików pasujące do ścieżki, zadzwoń Dir znowu bez argumentów. Gdy nie ma już zgodnych nazw plików, Dir zwraca ciąg o zerowej długości („”).

Czy kiedykolwiek próbowałeś czegoś takiego za pomocą VBA? Podziel się tym, co zrobiłeś, a wszyscy możemy się z tego nauczyć.

Zaoszczędź szaloną ilość czasu za pomocą VBA. Sprawdź KURS Excela VBA.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave