W tym samouczku dowiesz się, jak używać VBA do otwierania i zamykania skoroszytu programu Excel na kilka sposobów.
VBA umożliwia otwieranie lub zamykanie plików przy użyciu standardowych metod .Otwarty oraz .Blisko.
Jeśli chcesz dowiedzieć się, jak sprawdzić, czy plik istnieje przed próbą otwarcia pliku, możesz kliknąć ten link: Plik VBA istnieje
Otwórz skoroszyt w VBA
Otwórz skoroszyt ze ścieżki
Jeśli wiesz, który plik chcesz otworzyć, możesz określić jego pełną nazwę ścieżki w funkcji. Oto kod:
1 | Skoroszyty. Otwórz "C:\VBA Folder\Przykładowy plik 1.xlsx" |
Ta linia kodu otwiera plik „Przykładowy plik 1” z „Folderu VBA”.
Otwórz skoroszyt - ActiveWorkbook
Po otwarciu skoroszytu automatycznie staje się on ActiveWorkbook. Możesz odwoływać się do nowo otwartego skoroszytu w następujący sposób:
1 | ActiveWorkbook.Zapisz |
Kiedy odwołujesz się do arkusza lub zakresu i pomijasz nazwę skoroszytu, VBA założy, że odwołujesz się do ActiveWorkbook:
1 | Arkusze("Arkusz1").Name = "Wejście" |
Otwórz skoroszyt i przypisz do zmiennej
Możesz także otworzyć skoroszyt i przypisać go bezpośrednio do zmiennej obiektu. Ta procedura otworzy skoroszyt do wb zmienna, a następnie zapisz skoroszyt.
123456 | Sub OpenWorkbookToVariable()Dim wb jako skoroszytSet wb = Workbooks.Open("C:\VBA Folder\Sample file 1.xlsx")wb.ZapiszNapis końcowy |
Przypisywanie skoroszytów do zmiennych po ich otwarciu to najlepszy sposób na śledzenie skoroszytów
Okno dialogowe otwierania pliku skoroszytu
Możesz także wywołać okno dialogowe Otwórz plik skoroszytu. Dzięki temu użytkownik może przejść do pliku i otworzyć go:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Aplikacja.PobierzOpenFilename()Workbooks.Open (strFile)Napis końcowy |
Jak widać na obrazku 1, dzięki temu podejściu użytkownicy mogą wybrać plik do otwarcia. Okno dialogowe Otwórz plik można w dużym stopniu dostosować. Możesz domyślnie wybrać określony folder, wybrać, które typy plików są widoczne (np. Tylko xlsx) i nie tylko. Przeczytaj nasz samouczek dotyczący okna dialogowego Otwórz plik, aby uzyskać szczegółowe przykłady.
Otwórz nowy skoroszyt
Ten wiersz kodu otworzy nowy skoroszyt:
1 | Skoroszyty.Dodaj |
Otwórz nowy skoroszyt do zmiennej
Ta procedura otworzy nowy skoroszyt, przypisując go do zmiennej wb:
1234 | Sub Otwórz nowy skoroszyt()Dim wb jako skoroszytUstaw wb = Skoroszyty.DodajNapis końcowy |
Otwórz składnię skoroszytu
Kiedy używasz Workbooks.Open możesz zauważyć, że podczas otwierania skoroszytu dostępnych jest wiele opcji:
Nazwa pliku jest wymagana. Wszystkie inne argumenty są opcjonalne - i prawdopodobnie nie będziesz musiał znać większości innych argumentów. Oto dwa najczęstsze:
Otwórz skoroszyt tylko do odczytu
Gdy skoroszyt jest otwarty tylko do odczytu, nie można zapisać oryginalnego pliku. Zapobiega to edycji pliku przez użytkownika.
1 | Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx", , True |
Otwórz skoroszyt chroniony hasłem
Skoroszyt może być chroniony hasłem. Użyj tego kodu, aby otworzyć skoroszyt chroniony hasłem:
1 | Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx", , , "hasło" |
Otwórz skoroszyt Uwagi do składni
Zauważ, że na powyższym obrazku umieściliśmy nawias „(”, aby pokazać składnię. Jeśli używasz nawiasów podczas pracy ze skoroszytami. Otwórz, musisz przypisać skoroszyt do zmiennej:
1234 | Sub OpenWB()Dim wb jako skoroszytSet wb = Workbooks.Open("C:\VBA Folder\Sample file 1.xlsx", True, True)Napis końcowy |
Zamknij skoroszyt w VBA
Zamknij określony skoroszyt
Podobnie jak w przypadku otwierania skoroszytu, istnieje kilka sposobów na zamknięcie pliku. Jeśli wiesz, który plik chcesz zamknąć, możesz użyć następującego kodu:
1 | Workbooks.Close ("C:\VBA Folder\Przykładowy plik 1.xlsx") |
Ten wiersz kodu zamyka plik „Przykładowy plik 1”, jeśli jest otwarty. Jeśli nie, zwróci błąd, więc powinieneś zadbać o obsługę błędów.
Zamknij aktywny skoroszyt
Jeśli chcesz zamknąć skoroszyt, który jest aktualnie aktywny, ten wiersz kodu pozwoli ci to zrobić:
1 | ActiveWorkbook.Zamknij |
Zamknij wszystkie otwarte skoroszyty
Aby zamknąć wszystkie otwarte skoroszyty, możesz po prostu użyć tego kodu:
1 | Skoroszyty.Zamknij |
Zamknij pierwszy otwarty skoroszyt
Spowoduje to zamknięcie pierwszego otwartego/utworzonego skoroszytu:
1 | Skoroszyty(1).Zamknij |
Zamień 1 na 2, aby zamknąć drugi otwarty / utworzony skoroszyt i tak dalej.
Zamknij bez zapisywania
Spowoduje to zamknięcie skoroszytu bez zapisywania i bez wyświetlania monitu o zapisanie:
1 | ActiveWorkbook.Close savechanges:=False |
Zapisz i zamknij bez monitu
Podobnie spowoduje to zapisanie i zamknięcie skoroszytu bez wyświetlania monitu o zapisanie:
1 | ActiveWorkbook.Close savechanges:=True |
Uwaga: Istnieje kilka innych sposobów wskazania, czy zapisać lub nie zapisać skoroszytu, a także czy wyświetlać monity, czy nie. Zostało to omówione bardziej szczegółowo tutaj.
Inne otwarte przykłady zeszytu ćwiczeń
Otwórz wiele nowych skoroszytów
Ta procedura otworzy wiele nowych skoroszytów, przypisując nowe skoroszyty do tablicy:
12345678 | Sub OpenMultipleNewWorkbooks()Dim arrWb(3) jako skoroszytDim i jako liczba całkowitaDla i = 1 do 3Ustaw arrWb(i) = Skoroszyty.DodajDalej jaNapis końcowy |
Otwórz wszystkie skoroszyty programu Excel w folderze
Ta procedura spowoduje otwarcie wszystkich skoroszytów programu Excel w folderze przy użyciu selektora okna dialogowego Otwórz plik.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder()Dim wb jako skoroszytDim dlgFD As FileDialogDim strFolder jako ciągDim strFileName jako ciągUstaw dlgFD = Application.FileDialog(msoFileDialogFolderPicker)Jeśli dlgFD.Show = -1 WtedystrFolder = dlgFD.SelectedItems(1) & Application.PathSeparatorstrFileName = Dir(strFolder & "*.xls*")Wykonaj, gdy strFileName ""Ustaw wb = Workbooks.Open(strFolder & strFileName)strFileName = KatalogPętlaZakończ, jeśliNapis końcowy |
Sprawdź, czy skoroszyt jest otwarty
Ta procedura sprawdzi, czy skoroszyt jest otwarty:
1234567891011 | Test podrzędny według nazwy skoroszytu()Dim wb jako skoroszytDla każdego wb w skoroszytachJeśli wb.Name = "Nowy arkusz Microsoft Excel Worksheet.xls" ThenMsgBox "Znalazłem to"Exit Sub 'tutaj kod połączenia, na razie po prostu wyjdziemyZakończ, jeśliNastępnyNapis końcowy |
Workbook_Open Event
Zdarzenia VBA to „wyzwalacze”, które informują VBA o uruchomieniu określonego kodu. Możesz skonfigurować zdarzenia skoroszytu do otwierania, zamykania, przed zapisaniem, po zapisaniu i nie tylko.
Przeczytaj nasz samouczek Workbook_Open Event, aby dowiedzieć się więcej o automatycznym uruchamianiu makr po otwarciu skoroszytu.