Ten przewodnik wprowadzi Cię w pracę z Obiekt skoroszytu w VBA.
Obiekt skoroszytu
Po pierwsze, aby wchodzić w interakcję ze skoroszytami w VBA, musisz zrozumieć Obiekt skoroszytu.
Za pomocą obiektu workbook możesz odwoływać się do skoroszytów według ich nazw w następujący sposób:
1 | Skoroszyty("Książka2.xlsm").Aktywuj |
Jednak ten kod będzie działał tylko wtedy, gdy skoroszyt jest otwarty. Jeśli skoroszyt jest zamknięty, musisz podać pełną ścieżkę skoroszytu:
1 | Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm") |
Zamiast wpisywać pełną ścieżkę, jeśli żądany skoroszyt znajduje się w tym samym katalogu, co skoroszyt, w którym jest przechowywany twój kod, możesz użyć tego kodu wiersza, aby otworzyć skoroszyt:
1 | Workbooks.Open (ThisWorkbook.Path & "\book2.xlsm") |
Wykorzystuje to obiekt ThisWorkbook, który omówimy w następnej sekcji.
Numer indeksu skoroszytu
Na koniec możesz odwoływać się do skoroszytów według ich "Numeru indeksu". Numer indeksu skoroszytu odpowiada kolejności otwierania skoroszytu (technicznie jest to pozycja skoroszytu w kolekcji skoroszytów).
1 | Skoroszyty(1).Aktywuj |
Jest to przydatne, jeśli chcesz na przykład zamknąć pierwszy (lub ostatni) otwarty skoroszyt.
Aktywuj skoroszyt, ActiveWorkbook i ThisWorkbook
Jeśli skoroszyt jest NIEAKTYWNY, możesz uzyskać dostęp do obiektów skoroszytu w następujący sposób:
1 | Skoroszyty("Książka2.xlsm").Arkusze("Arkusz1").Range("A1").value = 1 |
Jeśli jednak skoroszyt jest aktywny, możesz pominąć obiekt skoroszytu:
1 | Arkusze("Arkusz1").Zakres("A1").value = 1 |
A jeśli chcesz wchodzić w interakcję z aktywnym arkuszem skoroszytu, możesz również pominąć obiekt arkuszy:
1 | Zakres("A1").wartość = 1 |
Aktywuj skoroszyt
Aby aktywować skoroszyt, użyj Aktywuj metodę.
1 | Skoroszyty("Książka2.xlsm").Aktywuj |
Teraz możesz wchodzić w interakcje z obiektami Book2 bez wyraźnego podawania nazwy skoroszytu.
Aktywny zeszyt
ten Aktywny zeszyt obiekt zawsze odnoszą się do aktywnego skoroszytu. Jest to przydatne, jeśli chcesz przypisać ActiveWorkbook do zmiennej do późniejszego użycia.
12 | Dim wb jako skoroszytUstaw wb = Aktywny skoroszyt |
Ten zeszyt
ten Ten zeszyt obiekt zawsze odwołuje się do skoroszytu, w którym przechowywany jest działający kod. Aby aktywować ThisWorkbook, użyj tego wiersza kodu:
1 | ThisWorkbook.Activate |
Otwórz skoroszyt
Aby otworzyć skoroszyt, użyj Metoda otwarta:
1 | Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm") |
Nowo otwarty skoroszyt zawsze będzie Aktywny zeszyt, co pozwala na łatwą interakcję z nim.
1 | ActiveWorkbook.Zapisz |
Metoda otwarta ma kilka innych argumentów, umożliwiających otwieranie tylko do odczytu, otwieranie skoroszytu chronionego hasłem i nie tylko. Zostało to omówione w naszym artykule o otwieraniu / zamykaniu skoroszytów.
Otwórz i przypisz do zmiennej
Możesz także otworzyć skoroszyt i jednocześnie przypisać go do zmiennej:
12 | Dim wb jako skoroszytSet wb = Workbooks.Open("C:\Users\StevePC2\Downloads\book2.xlsm") |
Otwórz okno dialogowe pliku
Możesz także wywołać okno dialogowe Otwórz plik w następujący sposób:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Aplikacja.PobierzOpenFilename()Workbooks.Open (strFile)Napis końcowy |
Utwórz nowy (dodaj) skoroszyt
Ten wiersz kodu utworzy nowy skoroszyt:
1 | Skoroszyty.Dodaj |
Nowy skoroszyt staje się teraz Aktywny zeszyt, co pozwala na interakcję z nim (np. zapisanie nowego skoroszytu).
Dodaj nowy skoroszyt do zmiennej
Możesz także dodać nowy skoroszyt bezpośrednio do zmiennej:
12 | Dim wb jako skoroszytUstaw wb = Skoroszyty.Dodaj |
Zamknij skoroszyt
Zamknij i zapisz
Aby zamknąć skoroszyt z zapisaniem, użyj Zamknij metodę z Zapisz zmiany ustaw na PRAWDA:
1 | ActiveWorkbook.Close SaveChanges:=True |
Zamknij bez zapisywania
Aby zamknąć bez zapisywania, ustaw Zapisz zmiany równe FAŁSZ:
1 | ActiveWorkbook.Zamknij ZapiszZmiany:=Fałsz |
Skoroszyt Zapisz jako
ten Zapisz jako metodę służy do zapisywania skoroszytu jako.
Aby zapisać skoroszyt pod nową nazwą, w tym samym katalogu, możesz sugerować użycie tego:
1 | ActiveWorkbook.SaveAs "nowy" |
gdzie „nowy” to nowa nazwa pliku.
Aby zapisać skoroszyt w nowym katalogu z określonym rozszerzeniem pliku, po prostu określ nowy katalog i nazwę pliku:
1 | ActiveWorkbook.SaveAs "C:\Users\StevePC2\Downloads\new.xlsm" |
Inne skoroszytowe przykłady VBA
Nazwa skoroszytu
Aby uzyskać nazwę skoroszytu:
1 | MsgBox ActiveWorkbook.Name |
Chroń skoroszyt
Aby chronić strukturę skoroszytu przed edycją, możesz użyć Metoda ochrony (hasło opcjonalne):
1 | Skoroszyty("book1.xlsm").Chroń "hasło" |
Aby usunąć ochronę skoroszytu, użyj Metoda UnProtect:
1 | Skoroszyty("book1.xlsm").Odbezpiecz "hasło" |
Zapętlaj wszystkie otwarte skoroszyty
Aby przeglądać wszystkie otwarte skoroszyty:
123456789 | Podrzędna pętlaWBs()Dim wb jako skoroszytDla każdego wb w skoroszytachMsgBox wb.NameNastępny wbNapis końcowy |
Skoroszyt Aktywuj wydarzenie
Możesz uruchomić kod za każdym razem, gdy otwierany jest określony skoroszyt za pomocą Wydarzenie otwarte w skoroszycie.
Umieść tę procedurę w module ThisWorkbook w swoim skoroszycie:
123 | Prywatny skoroszyt podrzędny_Open()Arkusze("arkusz1").AktywujNapis końcowy |
Ta procedura zostanie aktywowana Arkusz1 za każdym razem, gdy skoroszyt jest otwierany.