Używanie obiektu skoroszytu w Excel VBA (Otwórz, Zamknij, Zapisz, Ustaw)

W tym samouczku omówię, jak pracować ze skoroszytami w programie Excel przy użyciu VBA.

W programie Excel „Skoroszyt” to obiekt, który jest częścią kolekcji „Skoroszyty”. W skoroszycie znajdują się różne obiekty, takie jak arkusze, arkusze wykresów, komórki i zakresy, obiekty wykresów, kształty itp.

Dzięki VBA możesz robić wiele rzeczy z obiektem skoroszytu - na przykład otwierać określony skoroszyt, zapisywać i zamykać skoroszyty, tworzyć nowe skoroszyty, zmieniać właściwości skoroszytu itp.

Więc zacznijmy.

Wszystkie kody, o których wspominam w tym samouczku, należy umieścić w Edytorze Visual Basic. Przejdź do sekcji „Gdzie umieścić kod VBA”, aby dowiedzieć się, jak to działa.

Jeśli interesuje Cię nauka VBA w prosty sposób, zajrzyj na mój Szkolenie Excel VBA online.

Odwoływanie się do skoroszytu za pomocą VBA

Istnieją różne sposoby odwoływania się do obiektu Workbook w języku VBA. Wybrana metoda będzie zależeć od tego, co chcesz zrobić. W tej sekcji omówię różne sposoby odwoływania się do skoroszytu wraz z przykładowymi kodami.

Korzystanie z nazw skoroszytów

Jeśli masz dokładną nazwę skoroszytu, do którego chcesz się odwołać, możesz użyć nazwy w kodzie.

Zacznijmy od prostego przykładu.

Jeśli masz otwarte dwa skoroszyty i chcesz aktywować skoroszyt o nazwie Przykłady.xlsx, możesz użyć poniższego kodu:

Sub ActivateWorkbook() Workbooks("Przykłady.xlsx").Activate End Sub

Pamiętaj, że musisz użyć nazwy pliku wraz z rozszerzeniem, jeśli plik został zapisany. Jeśli nie został zapisany, możesz użyć nazwy bez rozszerzenia pliku.

Jeśli nie masz pewności, jakiej nazwy użyć, skorzystaj z pomocy Eksploratora projektów.

Jeśli chcesz aktywować skoroszyt i wybrać określoną komórkę w arkuszu w tym skoroszycie, musisz podać cały adres komórki (w tym skoroszyt i nazwę arkusza roboczego).

Sub ActivateWorkbook() Workbooks("Examples.xlsx").Worksheets("Sheet1").Activate Range("A1").Wybierz End Sub

Powyższy kod najpierw aktywuje Arkusz1 w skoroszycie Przykłady.xlsx, a następnie zaznacza komórkę A1 w arkuszu.

Często zobaczysz kod, w którym znajduje się odwołanie do arkusza lub komórki/zakresu bez odwoływania się do skoroszytu. Dzieje się tak, gdy odwołujesz się do arkusza/zakresów w tym samym skoroszycie, który zawiera kod i jest również aktywnym skoroszytem. Jednak w niektórych przypadkach musisz określić skoroszyt, aby upewnić się, że kod działa (więcej na ten temat w sekcji ThisWorkbook).

Korzystanie z numerów indeksowych

Możesz także odwoływać się do skoroszytów na podstawie ich numeru indeksu.

Na przykład, jeśli masz otwarte trzy skoroszyty, poniższy kod wyświetli nazwy trzech skoroszytów w oknie komunikatu (po jednym na raz).

Sub SkoroszytName() MsgBox Skoroszyty(1).Name MsgBox Skoroszyty(2).Name MsgBox Skoroszyty(3).Name End Sub

Powyższy kod używa MsgBox - czyli funkcji, która wyświetla okno komunikatu z określonym tekstem/wartością (w tym przypadku jest to nazwa skoroszytu).

Jednym z problemów, jakie często mam z używaniem numerów indeksów w skoroszytach, jest to, że nigdy nie wiadomo, który z nich jest pierwszym skoroszytem, ​​a który drugim i tak dalej. Aby mieć pewność, musiałbyś uruchomić kod, jak pokazano powyżej lub coś podobnego, aby przejść przez otwarte skoroszyty i znać ich numer indeksu.

Program Excel traktuje skoroszyt otwarty jako pierwszy, mający numer indeksu jako 1, a następny jako 2 i tak dalej.

Pomimo tej wady korzystanie z numerów indeksowych może się przydać. Na przykład, jeśli chcesz przejrzeć wszystkie otwarte skoroszyty i zapisać wszystko, możesz użyć numerów indeksu. W takim przypadku, ponieważ chcesz, aby tak się stało we wszystkich skoroszytach, nie przejmujesz się ich indywidualnymi numerami indeksu.

Poniższy kod przejdzie przez wszystkie otwarte skoroszyty i zamknie wszystkie z wyjątkiem skoroszytu, który ma ten kod VBA.

Sub CloseWorkbooks() Dim WbCount As Integer WbCount = Workbooks.Count For i = WbCount To 1 Krok -1 If Workbooks(i).Name ThisWorkbook.Name Then Workbooks(i).Close End If Next i End Sub

Powyższy kod zlicza liczbę otwartych skoroszytów, a następnie przechodzi przez wszystkie skoroszyty za pomocą pętli For Each.

Używa warunku IF, aby sprawdzić, czy nazwa skoroszytu jest taka sama jak skoroszytu, w którym jest uruchamiany kod.

Jeśli nie pasuje, zamyka skoroszyt i przechodzi do następnego.

Zauważ, że uruchomiliśmy pętlę z WbCount do 1 z krokiem -1. Odbywa się to tak, jak w przypadku każdej pętli liczba otwartych skoroszytów maleje.

ThisWorkbook jest szczegółowo omówiony w dalszej części.

Korzystanie z ActiveWorkbook

ActiveWorkbook, jak sama nazwa wskazuje, odnosi się do aktywnego skoroszytu.

Poniższy kod pokaże nazwę aktywnego skoroszytu.

Sub ActiveWorkbookName() MsgBox ActiveWorkbook.Name End Sub

Gdy używasz VBA do aktywacji innego skoroszytu, część ActiveWorkbook w VBA po tym zacznie odnosić się do aktywowanego skoroszytu.

Oto przykład tego.

Jeśli masz aktywny skoroszyt i wstawisz do niego następujący kod i uruchomisz go, najpierw zostanie wyświetlona nazwa skoroszytu, który zawiera kod, a następnie nazwę Example.xlsx (która jest aktywowana przez kod).

Sub ActiveWorkbookName() MsgBox ActiveWorkbook.Name Workbooks("Examples.xlsx").Activate MsgBox ActiveWorkbook.Name End Sub

Zwróć uwagę, że podczas tworzenia nowego skoroszytu przy użyciu języka VBA ten nowo utworzony skoroszyt automatycznie staje się aktywnym skoroszytem.

Korzystanie z tego skoroszytu

ThisWorkbook odnosi się do skoroszytu, w którym wykonywany jest kod.

Każdy skoroszyt zawierałby jako część obiekt ThisWorkbook (widoczny w Eksploratorze projektów).

„ThisWorkbook” może przechowywać zwykłe makra (podobne do tych, które dodajemy w modułach), a także procedury zdarzeń. Procedura zdarzenia to coś, co jest wyzwalane na podstawie zdarzenia - na przykład dwukrotne kliknięcie komórki lub zapisanie skoroszytu lub aktywowanie arkusza.

Każda procedura zdarzenia zapisana w tym „ThisWorkbook” będzie dostępna w całym skoroszycie w porównaniu ze zdarzeniami na poziomie arkusza, które są ograniczone tylko do określonych arkuszy.

Na przykład, jeśli klikniesz dwukrotnie obiekt ThisWorkbook w Eksploratorze projektów i skopiujesz i wkleisz w nim poniższy kod, adres komórki zostanie wyświetlony po dwukrotnym kliknięciu dowolnej komórki w całym skoroszycie.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) MsgBox Target.Address End Sub

Chociaż główną rolą ThisWorkbook jest przechowywanie procedury zdarzenia, można jej również użyć do odwoływania się do skoroszytu, w którym wykonywany jest kod.

Poniższy kod zwróci nazwę skoroszytu, w którym kod jest wykonywany.

Sub ThisWorkbookName() MsgBox ThisWorkbook.Name End Sub

Zaletą korzystania z ThisWorkbook (w porównaniu z ActiveWorkbook) jest to, że we wszystkich przypadkach odwołuje się do tego samego skoroszytu (tego, który zawiera kod). Jeśli więc użyjesz kodu VBA, aby dodać nowy skoroszyt, ActiveWorkbook ulegnie zmianie, ale ThisWorkbook nadal będzie odnosić się do tego, który ma kod.

Tworzenie nowego obiektu skoroszytu

Poniższy kod utworzy nowy skoroszyt.

Sub CreateNewWorkbook() Workbooks.Add End Sub

Po dodaniu nowego skoroszytu staje się on aktywnym skoroszytem.

Poniższy kod doda nowy skoroszyt, a następnie wyświetli nazwę tego skoroszytu (która byłaby domyślną nazwą typu Book1).

Sub CreateNewWorkbook() Workbooks.Add MsgBox ActiveWorkbook.Name End Sub

Otwórz skoroszyt za pomocą VBA

Możesz użyć VBA, aby otworzyć określony skoroszyt, gdy znasz ścieżkę pliku skoroszytu.

Poniższy kod otworzy skoroszyt - Example.xlsx, który znajduje się w folderze Dokumenty w moim systemie.

Sub OpenWorkbook() Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx") End Sub

Jeśli plik istnieje w folderze domyślnym, czyli folderze, w którym VBA domyślnie zapisuje nowe pliki, możesz po prostu określić nazwę skoroszytu - bez całej ścieżki.

Sub OpenWorkbook() Workbooks.Open ("Przykłady.xlsx") End Sub

Jeśli skoroszyt, który próbujesz otworzyć, nie istnieje, zobaczysz błąd.

Aby uniknąć tego błędu, możesz dodać kilka wierszy do swojego kodu, aby najpierw sprawdzić, czy plik istnieje, czy nie, a jeśli istnieje, spróbuj go otworzyć.

Poniższy kod sprawdzi lokalizację pliku, a jeśli nie istnieje, wyświetli niestandardową wiadomość (nie komunikat o błędzie):

Sub OpenWorkbook() If Dir("C:\Users\sumit\Documents\Examples.xlsx") "" Then Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx") Else MsgBox "Plik nie „nie istnieje” End If End Sub

Możesz również użyć okna dialogowego Otwórz, aby wybrać plik, który chcesz otworzyć.

Sub OpenWorkbook() W przypadku błędu Wznów Następny Dim FilePath As String FilePath = Application.GetOpenFilename Workbooks.Open (FilePath) End Sub

Powyższy kod otwiera okno dialogowe Otwórz. Po wybraniu pliku, który chcesz otworzyć, przypisuje ścieżkę pliku do zmiennej FilePath. Workbooks.Open następnie używa ścieżki pliku do otwarcia pliku.

W przypadku, gdy użytkownik nie otworzy pliku i kliknie przycisk Anuluj, FilePath stanie się False. Aby uniknąć błędu w tym przypadku, użyliśmy instrukcji „On Error Resume Next”.

Związane z: Dowiedz się wszystkiego o obsłudze błędów w Excel VBA

Zapisywanie skoroszytu

Aby zapisać aktywny skoroszyt, użyj poniższego kodu:

Sub SaveWorkbook() ActiveWorkbook.Save End Sub

Ten kod działa w przypadku skoroszytów, które zostały już wcześniej zapisane. Ponadto skoroszyt zawiera powyższe makro, jeśli nie zostało ono zapisane jako plik .xlsm (lub .xls), utracisz je, gdy otworzysz je następnym razem.

Jeśli zapisujesz skoroszyt po raz pierwszy, wyświetli się monit, jak pokazano poniżej:

Przy pierwszym zapisie lepiej skorzystać z opcji „Saveas”.

Poniższy kod zapisze aktywny skoroszyt jako plik .xlsm w domyślnej lokalizacji (czyli w folderze dokumentów w moim systemie).

Sub SaveWorkbook() ActiveWorkbook.SaveAs Filename:="Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Jeśli chcesz, aby plik został zapisany w określonej lokalizacji, musisz wspomnieć o tym w wartości Filename. Poniższy kod zapisuje plik na moim pulpicie.

Sub SaveWorkbook() ActiveWorkbook.SaveAs Filename:="C:\Users\sumit\Desktop\Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Jeśli chcesz, aby użytkownik otrzymał opcję wyboru lokalizacji do zapisania pliku, możesz użyć wywołania okna dialogowego Saveas. Poniższy kod pokazuje okno dialogowe Saveas i pozwala użytkownikowi wybrać lokalizację, w której plik powinien zostać zapisany.

Sub SaveWorkbook() Dim FilePath As String FilePath = Application.GetSaveAsFilename ActiveWorkbook.SaveAs Filename:=FilePath & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Zauważ, że zamiast używać FileFormat:=xlOpenXMLWorkbookMacroEnabled, możesz również użyć FileFormat:=52, gdzie 52 to kod xlOpenXMLWorkbookMacroEnabled.

Zapisywanie wszystkich otwartych skoroszytów

Jeśli masz otwarty więcej niż jeden skoroszyt i chcesz zapisać wszystkie skoroszyty, możesz użyć poniższego kodu:

Sub SaveAllWorkbooks() Dim wb As Workbook Dla każdego pliku wb In Workbooks wb.Save Next wb End Sub

Powyższe zapisuje wszystkie skoroszyty, w tym te, które nigdy nie zostały zapisane. Skoroszyty, które nie zostały wcześniej zapisane, zostaną zapisane w lokalizacji domyślnej.

Jeśli chcesz zapisać tylko te skoroszyty, które zostały wcześniej zapisane, możesz użyć poniższego kodu:

Sub SaveAllWorkbooks() Dim wb As Workbook Dla każdego wb In skoroszytów If wb.Path "" Następnie wb.Save End If Next wb End Sub

Zapisywanie i zamykanie wszystkich skoroszytów

Jeśli chcesz zamknąć wszystkie skoroszyty, z wyjątkiem skoroszytu zawierającego bieżący kod, możesz użyć poniższego kodu:

Sub CloseandSaveWorkbooks() Dim wb As Workbook Dla każdego pliku wb w skoroszytach If wb.Name ThisWorkbook.Name Then wb.Close SaveChanges:=True End If Next wb End Sub

Powyższy kod zamknie wszystkie skoroszyty (z wyjątkiem skoroszytu, który zawiera kod ThisWorkbook). W przypadku zmian w tych skoroszytach zmiany zostaną zapisane. Jeśli istnieje skoroszyt, który nigdy nie został zapisany, wyświetli okno dialogowe Zapisz jako.

Zapisz kopię skoroszytu (ze znacznikiem czasu)

Kiedy pracuję ze złożonymi danymi i pulpitem nawigacyjnym w skoroszytach programu Excel, często tworzę różne wersje moich skoroszytów. Jest to pomocne w przypadku, gdy coś pójdzie nie tak z moim bieżącym skoroszytem. Miałbym przynajmniej kopię zapisaną pod inną nazwą (a straciłbym tylko pracę, którą wykonałem po utworzeniu kopii).

Oto kod VBA, który utworzy kopię skoroszytu i zapisze go w określonej lokalizacji.

Sub CreateaCopyofWorkbook() ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy.xlsm" End Sub

Powyższy kod zapisuje kopię skoroszytu przy każdym uruchomieniu tego makra.

Chociaż działa to świetnie, czułbym się bardziej komfortowo, gdybym miał zapisane różne kopie za każdym razem, gdy uruchamiam ten kod. Powodem, dla którego jest to ważne, jest to, że jeśli popełnię nieumyślny błąd i uruchomię to makro, uratuje pracę z błędami. I nie miałabym dostępu do pracy, zanim popełniłabym błąd.

Aby poradzić sobie z takimi sytuacjami, możesz użyć poniższego kodu, który zapisuje nową kopię pracy za każdym razem, gdy ją zapisujesz. Dodaje również datę i sygnaturę czasową jako część nazwy skoroszytu. Może to pomóc w śledzeniu wszelkich popełnionych błędów, ponieważ nigdy nie utracisz żadnej z wcześniej utworzonych kopii zapasowych.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy" & Format(Now(), "dd-mm-rr-hh-mm-ss -AMPM") i ".xlsm" Koniec Sub

Powyższy kod utworzy kopię za każdym razem, gdy uruchomisz to makro i doda sygnaturę daty/godziny do nazwy skoroszytu.

Utwórz nowy skoroszyt dla każdego arkusza roboczego

W niektórych przypadkach możesz mieć skoroszyt zawierający wiele arkuszy roboczych i chcesz utworzyć skoroszyt dla każdego arkusza roboczego.

Może tak być w przypadku, gdy masz raporty miesięczne/kwartalne w jednym skoroszycie i chcesz je podzielić na jeden skoroszyt dla każdego arkusza.

Lub, jeśli masz raporty dotyczące działu i chcesz je podzielić na pojedyncze skoroszyty, aby móc wysyłać te indywidualne skoroszyty do kierowników działów.

Oto kod, który utworzy skoroszyt dla każdego arkusza roboczego, nada mu taką samą nazwę jak arkusz i zapisze go w określonym folderze.

Sub CreateWorkbookforWorksheets() Dim ws As Worksheet Dim wb As Workbook Dla każdego ws In ThisWorkbook.Worksheets Set wb = Workbooks.Add ws.Copy Before:=wb.Sheets(1) Application.DisplayAlerts = False wb.Sheets(2).Delete Application.DisplayAlerts = True wb.SaveAs "C:\Users\sumit\Desktop\Test\" & ws.Name & ".xlsx" wb.Close Next ws End Sub

W powyższym kodzie użyliśmy dwóch zmiennych „ws” i „wb”.

Kod przechodzi przez każdy arkusz (za pomocą pętli For Each Next) i tworzy dla niego skoroszyt. Używa również metody kopiowania obiektu arkusza, aby utworzyć kopię arkusza w nowym skoroszycie.

Zauważ, że użyłem instrukcji SET, aby przypisać zmienną „wb” do każdego nowego skoroszytu utworzonego przez kod.

Za pomocą tej techniki można przypisać obiekt skoroszytu do zmiennej. Zostało to omówione w następnej sekcji.

Przypisz obiekt skoroszytu do zmiennej

W VBA można przypisać obiekt do zmiennej, a następnie użyć zmiennej do odwołania się do tego obiektu.

Na przykład w poniższym kodzie używam VBA, aby dodać nowy skoroszyt, a następnie przypisuję ten skoroszyt do zmiennej wb. Aby to zrobić, muszę użyć instrukcji SET.

Po przypisaniu skoroszytu do zmiennej wszystkie właściwości skoroszytu są również dostępne dla zmiennej.

Sub AssigntoVariable() Dim wb As Workbook Set wb = Workbooks.Add wb.SaveAs Filename:="C:\Users\sumit\Desktop\Examples.xlsx" End Sub

Zauważ, że pierwszym krokiem w kodzie jest zadeklarowanie „wb” jako zmiennej typu skoroszytu. To mówi VBA, że ta zmienna może przechowywać obiekt skoroszytu.

Następna instrukcja używa SET do przypisania zmiennej do nowego skoroszytu, który dodajemy. Po wykonaniu tego przypisania możemy użyć zmiennej wb, aby zapisać skoroszyt (lub zrobić z nim cokolwiek innego).

Zapętlanie otwartych skoroszytów

Widzieliśmy już kilka przykładowych kodów powyżej, które wykorzystywały pętlę w kodzie.

W tej sekcji wyjaśnię różne sposoby przeglądania otwartych skoroszytów za pomocą VBA.

Załóżmy, że chcesz zapisać i zamknąć wszystkie otwarte skoroszyty, z wyjątkiem tego, który zawiera kod, możesz użyć poniższego kodu:

Sub CloseandSaveWorkbooks() Dim wb As Workbook Dla każdego pliku wb w skoroszytach If wb.Name ThisWorkbook.Name Then wb.Close SaveChanges:=True End If Next wb End Sub

Powyższy kod używa pętli For Each do przechodzenia przez każdy skoroszyt w kolekcji Workbooks. Aby to zrobić, najpierw musimy zadeklarować „wb” jako zmienną typu skoroszytu.

W każdym cyklu pętli każda nazwa skoroszytu jest analizowana i jeśli nie jest zgodna z nazwą skoroszytu zawierającego kod, jest zamykana po zapisaniu jego zawartości.

To samo można osiągnąć za pomocą innej pętli, jak pokazano poniżej:

Sub CloseWorkbooks() Dim WbCount As Integer WbCount = Workbooks.Count For i = WbCount To 1 Step -1 If Workbooks(i).Name ThisWorkbook.Name Then Workbooks(i).Close SaveChanges:=True End If Next i End Sub

Powyższy kod używa pętli For Next do zamknięcia wszystkich skoroszytów z wyjątkiem tego, który zawiera kod. W tym przypadku nie musimy deklarować zmiennej skoroszytu, ale zamiast tego musimy policzyć całkowitą liczbę otwartych skoroszytów. Gdy mamy liczbę, używamy pętli For Next do przeglądania każdego skoroszytu. Ponadto w tym przypadku używamy numeru indeksu do odwoływania się do skoroszytów.

Zauważ, że w powyższym kodzie zapętlamy się z WbCount do 1 w kroku -1. Jest to potrzebne, ponieważ w przypadku każdej pętli skoroszyt zostaje zamknięty, a liczba skoroszytów zmniejsza się o 1.

Błąd podczas pracy z obiektem skoroszytu (błąd w czasie wykonywania „9”)

Jednym z najczęstszych błędów, które możesz napotkać podczas pracy ze skoroszytami, jest - Błąd wykonania „9” - Indeks dolny poza zakresem.

Ogólnie rzecz biorąc, błędy VBA nie są zbyt pouczające i często pozostawiają tobie, aby dowiedzieć się, co poszło nie tak.

Oto niektóre z możliwych przyczyn, które mogą prowadzić do tego błędu:

  • Skoroszyt, do którego próbujesz uzyskać dostęp, nie istnieje. Na przykład, jeśli próbuję uzyskać dostęp do piątego skoroszytu za pomocą skoroszytów(5), a otwarte są tylko 4 skoroszyty, otrzymam ten błąd.
  • Jeśli używasz niewłaściwej nazwy, aby odnieść się do skoroszytu. Na przykład, jeśli nazwa skoroszytu to Przykłady.xlsx i używasz Przykład.xlsx. wtedy pokaże ci ten błąd.
  • Jeśli nie zapisałeś skoroszytu i używasz rozszerzenia, pojawia się ten błąd. Na przykład, jeśli nazwa skoroszytu to Książka1 i używasz nazwy Książka1.xlsx bez jej zapisywania, pojawi się ten błąd.
  • Skoroszyt, do którego próbujesz uzyskać dostęp, jest zamknięty.

Uzyskaj listę wszystkich otwartych skoroszytów

Jeśli chcesz uzyskać listę wszystkich otwartych skoroszytów w bieżącym skoroszycie (skoroszycie, w którym uruchamiasz kod), możesz użyć poniższego kodu:

Sub GetWorkbookNames() Dim wbcount As Integer wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range("A1").Activate For i = 1 To wbcount Range("A1").Offset(i - 1, 0). Wartość = Skoroszyty(i).Nazwa Dalej i Zakończ Sub

Powyższy kod dodaje nowy arkusz, a następnie wyświetla nazwy wszystkich otwartych skoroszytów.

Jeśli chcesz również uzyskać ich ścieżkę do pliku, możesz użyć poniższego kodu:

Sub GetWorkbookNames() Dim wbcount As Integer wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range("A1").Activate For i = 1 To wbcount Range("A1").Offset(i - 1, 0). Wartość = Skoroszyty(i).Ścieżka & "\" & Skoroszyty(i).Nazwa Dalej i Zakończ Sub

Otwórz określony skoroszyt, klikając dwukrotnie komórkę

Jeśli masz listę ścieżek plików dla skoroszytów programu Excel, możesz użyć poniższego kodu, aby po prostu dwukrotnie kliknąć komórkę ze ścieżką pliku, aby otworzyć ten skoroszyt.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh jako obiekt, ByVal Target jako zakres, Anuluj jako Boolean) Workbooks.Open Target.Value End Sub

Ten kod zostanie umieszczony w oknie kodu ThisWorkbook.

Aby to zrobić:

  • Kliknij dwukrotnie obiekt ThisWorkbook w eksploratorze projektów. Zwróć uwagę, że obiekt ThisWorkbook powinien znajdować się w skoroszycie, w którym chcesz skorzystać z tej funkcji.
  • Skopiuj i wklej powyższy kod.

Teraz, jeśli masz dokładną ścieżkę plików, które chcesz otworzyć, możesz to zrobić, klikając dwukrotnie ścieżkę pliku, a VBA natychmiast otworzy ten skoroszyt.

Gdzie umieścić kod VBA

Zastanawiasz się, gdzie w skoroszycie programu Excel znajduje się kod VBA?

Excel ma zaplecze VBA zwane edytorem VBA. Musisz skopiować i wkleić kod do okna kodu modułu VB Editor.

Oto kroki, aby to zrobić:

  1. Przejdź do zakładki Deweloper.
  2. Kliknij opcję Visual Basic. Spowoduje to otwarcie edytora VB w zapleczu.
  3. W okienku Eksplorator projektu w edytorze VB kliknij prawym przyciskiem myszy dowolny obiekt skoroszytu, do którego chcesz wstawić kod. Jeśli nie widzisz Eksploratora projektów, przejdź do karty Widok i kliknij Eksplorator projektów.
  4. Przejdź do Wstaw i kliknij Moduł. Spowoduje to wstawienie obiektu modułu do skoroszytu.
  5. Skopiuj i wklej kod w oknie modułu.

Możesz również polubić następujące samouczki Excel VBA:

  • Jak nagrać makro w programie Excel.
  • Tworzenie funkcji zdefiniowanej przez użytkownika w programie Excel.
  • Jak tworzyć i używać dodatku w programie Excel.
  • Jak wznowić makra, umieszczając je w skoroszycie makr osobistych.
  • Pobierz listę nazw plików z folderu w programie Excel (z VBA i bez).
  • Jak korzystać z funkcji Excel VBA InStr (z praktycznymi PRZYKŁADAMI).
  • Jak sortować dane w programie Excel za pomocą VBA (przewodnik krok po kroku).

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

wave wave wave wave wave