Poniżej przyjrzymy się programowi w Excel VBA że importuje arkusze z innych plików Excela do jednego pliku Excel.
Pobierz Book4.xlsx, Book5.xlsx i dodaj je do "C:\test\"
Sytuacja:
Dodaj następujące wiersze kodu do przycisku polecenia:
1. Najpierw deklarujemy dwie zmienne typu String, obiekt Worksheet i jedną zmienną typu Integer.
Dim katalog As String, fileName As String, arkusz As Worksheet, suma As Integer
2. Wyłącz aktualizowanie ekranu i wyświetlanie alertów.
Application.ScreenUpdating = Fałsz
Application.DisplayAlerts = False
3. Zainicjuj katalog zmiennych. Używamy funkcji Dir, aby znaleźć pierwszy *.xl?? plik przechowywany w tym katalogu.
katalog = "c:\test\"
fileName = Dir(katalog & "*.xl??")
Uwaga: Funkcja Dir obsługuje użycie wieloznaków wieloznakowych (*) i jednoznakowych (?) do wyszukiwania wszystkich typów plików Excel.
4. Zmienna fileName zawiera teraz nazwę pierwszego pliku Excela znalezionego w katalogu. Dodaj pętlę Do While.
Wykonaj, gdy nazwa_pliku ""
Pętla
Dodaj następujące linie kodu (w 5, 6, 7 i 8) do pętli.
5. Nie ma prostego sposobu na skopiowanie arkuszy roboczych z zamkniętych plików Excela. Dlatego otwieramy plik Excel.
Workbooks.Open (katalog i nazwa pliku)
6. Zaimportuj arkusze z pliku Excel do import-sheet.xlsm.
Dla każdego arkusza w skoroszytach(nazwapliku).Worksheets
total = Skoroszyty("import-sheets.xlsm").Worksheets.count
Skoroszyty(nazwapliku).Arkusze(nazwa.arkusza).Kopiuj _
after:=Skoroszyty("import-sheets.xlsm").Arkusze (ogółem)
Następny arkusz
Wyjaśnienie: zmienna total przechowuje łączną liczbę arkuszy kalkulacyjnych import-sheet.xlsm. Używamy metody Copy obiektu Worksheet, aby skopiować każdy arkusz i wkleić go po ostatnim arkuszu import-sheets.xlsm.
7. Zamknij plik Excel.
Skoroszyty(nazwapliku).Zamknij
8. Funkcja Dir jest funkcją specjalną. Aby pobrać inne pliki Excela, możesz ponownie użyć funkcji Dir bez argumentów.
nazwa_pliku = katalog()
Uwaga: Gdy nie ma już zgodnych nazw plików, funkcja Dir zwraca ciąg o zerowej długości (""). W rezultacie Excel VBA opuści pętlę Do While.
9. Ponownie włącz aktualizowanie ekranu i wyświetlanie alertów (poza pętlą).
Application.ScreenUpdating = Prawda
Application.DisplayAlerts = Prawda
10. Przetestuj program.
Wynik: