01 - Wprowadzenie do języka VBA
Pierwsza lekcja poświęcona jest zapoznaniu się z podstawowym narzędziem pracy każdego programisty VBA, czyli edytorem kodu VBA.
W dalszej części tej lekcji znajdziesz przydatne informacje na temat skrótów klawiaturowych i ustawień
edytora VBA oraz opis poszczególnych okienek tego edytora.
Zmiana ustawienia zabezpieczeń przed makrami
Pierwszą czynnością, od której musimy zacząć jest odblokowanie możliwości korzystania z makr i edytora VBA.
Po zainstalowaniu pakietu MS Office, domyślnie włączona jest w Excelu blokada makr, tak aby nie
dopuścić do przypadkowego uruchomienia jakiegoś niepożądanego makra (makra mogą wykonywać bardzo
wiele czynności, także destrukcyjnych, włącznie z usuwaniem danych z dysku).
Jeżeli korzystasz z Excela 2007, okno zabezpieczeń przed makrami możesz wywołać na dwa sposoby.
Pierwszym z nich jest kliknięcie symbolu Office'a, znajdującego się w lewym górnym rogu aplikacji,
a następnie przycisku Opcje programu Excel (oba te elementy zostały zaznaczone na czerwono na poniższym rysunku).
Na ekranie pojawi się okno takie, jak pokazano poniżej. Z listy opcji znajdującej się z jego lewej strony, wybierz polecenie
Centrum zaufania, a następnie kliknij przycisk Ustawienia centrum zaufania ... (zaznaczony na czerwono).
Teraz na ekranie pojawi się właściwe okno zabezpieczeń przed makrami.
W panelu opcji, umieszczonym z lewej strony, wybierz sekcję Ustawienia makr:
To samo okno możesz wyświetlić klikając odpowiedni przycisk na wstążce Deweloper.
W tym celu musisz najpierw uaktywnić wstążkę
Deweloper, a potem przejść do tej wstążki i kliknąć przycisk Bezpieczeństwo makr, zaznaczony na rysunku na czerwono.
W prawej części okna zabezpieczeń przed makrami wyświetlone są wszystkie dostępne poziomy zabezpieczenia przed makrami (oznaczone zieloną ramką):
- Wyłącz wszystkie makra bez powiadomienia
Przy wyborze tej opcji nie jest możliwe uruchamianie makr w Excelu, nawet jeżeli będą
one podpisane cyfrowo - oczywiście przy nauce pisania makr ta opcja jest całkowicie wykluczona.
- Wyłącz wszystkie makra i wyświetl powiadomienie
Opis tej opcji jest nieco mylący, gdyż również sugeruje, że korzystanie z makr nie będzie możliwe. W rzeczywistości
po ustawieniu tej opcji, przy każdym otwarciu pliku zawierającego makra, użytkownik sam może zadecydować
czy Excel ma zezwolić na ich uruchamianie.
Jest to najbardziej zalecana opcja, ponieważ w każdej sytuacji
możesz sam decydować czy chcesz uruchomić makro w danym pliku.
W zależności od rodzaju otwieranego pliku, na ekranie mogą pojawić się dwa rodzaje ostrzeżeń.
Kiedy użytkownik otwiera plik zapisany w formacie *.xlsm (czyli Skoroszyt programu Excel 2007 z obsługą makr),
plik jest normalnie otwierany, ale w części pomiędzy paskiem zadań a paskiem formuł zostaje wyświetlona informacja
o obecności w pliku makr:
W momencie włączenia pliku makra są domyślnie wyłączone. Jeżeli chcesz z nich korzystać musisz kliknąć przycisk Opcje ...,
a następnie w oknie, które pojawi się na ekranie, wybrać opcję Włącz tę zawartość.
W przypadku pozostałych typów plików, przed otwarciem pliku na ekranie pojawia się okno takie jak poniżej:
- Wyłącz wszystkie makra oprócz makr podpisanych cyfrowo
W tej sytuacji Excel będzie pozwalał na uruchamianie tylko tych makr, które posiadają podpis cyfrowy.
Ponieważ podczas tego kursu będziesz tworzył i uruchamiał bardzo wiele makr, każdorazowe podpisywanie ich cyfrowo
byłoby marnotrawstwem czasu. W dalszej części kursu zostanie jednak opisany sposób na stworzenie dla
makra cyfrowego podpisu.
- Włącz wszystkie makra
Po zaznaczaniu tej opcji Excel będzie uruchamiał makra w każdym pliku bez pytania
Cię o zgodę i nie informując nawet, że plik ten zawiera jakieś makra.
Opcja ta nie jest zalecana, ponieważ możesz natrafić na plik zawierający makro
wyrządzające szkody, nie wiedząc nawet o tym, że zostało ono uruchomione.
Żeby zmienić ustawienia zabezpieczeń przed makrami w Excelu 2003, kliknij następujące polecenia na pasku menu:
Na ekranie zostanie wyświetlone okno takie, jak na poniższym obrazku.
Jak widać, poziom zabezpieczeń przed makrami może być ustawiony na trzy sposoby:
- Wysokie
W tym przypadku Excel będzie uruchamiał tylko makra zarejestrowane jako bezpieczne.
Z uwagi na to, że ucząc się pisania makr będziesz ich tworzył i uruchamiał
bardzo wiele, szkoda czasu na rejestrowanie ich jako bezpieczne, tak aby
Excel mógł je uruchomić - więc ta opcja odpada.
- Średnie
Jeżeli otwierasz plik i Excel stwierdzi, że w pliku tym znajdują się jakieś makra,
wyświetli okno takie jak poniżej:
To jest właśnie zalecana opcja - w każdej sytuacji będziesz sam decydował
czy chcesz uruchomić makra w danym pliku.
- Niskie
Po zaznaczaniu tej opcji Excel będzie uruchamiał makra w każdym pliku bez pytania
Cię o zgodę i nie informując nawet, że plik ten zawiera jakieś makra.
Opcja ta nie jest zalecana, ponieważ możesz natrafić na plik zawierający makro
wyrządzające szkody, nie wiedząc nawet o tym, że zostało ono uruchomione.
Uruchamianie Edytora VBA
Edytor makr można uruchomić na kilka sposobów:
- Kliknięcie skrótu Alt+F11 w oknie Excela
- Wybór odpowiedniego polecenia z paska menu (z uwagi na to, że w Excelu 2007
nie ma paska menu, ta możliwość jest dostępna tylko w wersji 2003 i wcześniejszych)
Aby uruchomić Edytor VBA z poziomu paska menu kliknij następujące opcje:
- Kliknięcie ikony na pasku narzędzi Excela
Żeby skorzystać z tego sposobu uruchamiania edytora VBA, musisz dodać do widocznych pasków
narzędzi pasek odpowiedzialny za VBA.
W Excelu 2003 możesz tego dokonać wybierając na pasku menu:
i aktywując opcję VBA (tak jak na rysunku poniżej).
W momencie aktywowania tej opcji, wśród widocznych pasków narzędzi pojawi się dodatkowy pasek:
Ikona odpowiedzialna za uruchamianie Edytora VBA została zaznaczona na powyższym rysunku na czerwono.
W Excelu 2007 aby uaktywnić kartę VBA na wstążce, musisz najpierw otworzyć okno odpowiedzielne za ustawienia Excela. W tym celu
kliknij symbol Office'a, znajdujący się w lewym górnym rogu aplikacji, a następnie przycisk Opcje programu Excel
(oba elementy zostały zaznaczone na czerwono na poniższym rysunku).
W oknie opcji, zaprezentowanym na zrzucie ekranowym poniżej, wybierz najpierw sekcję Popularne, a następnie
zaznacz pole Pokaż kartę Dewelopera na wstążce jako aktywne.
Przycisk odpowiedzialny za uruchamianie edytora VBA położony jest z lewej strony na karcie Deweloper.
Opis Edytora VBA
Zanim przejdziemy do omówienia edytora VBA, byłoby dobrze, żebyś dostosował jego wygląd
do potrzeb tego kursu. Chodzi głównie o to, abyś miał widoczne te paski narzędzi, które będą
wykorzystywane podczas kursu.
W tym celu wybierz na pasku menu edytora
i zaznacz jako aktywne paski Edit oraz Standard.
Po aktywowaniu obu wspomnianych pasków narzędzi, edytor VBA wygląda tak, jak na poniższym
rysunku. Podstawowe części edytora zostały zaznaczone kolorowymi ramkami.
Zieloną ramką została oznaczona część Properties.
Jeżeli nie widzisz jej w swoim edytorze, kliknij ikonę zaznaczoną na powyższym rysunku na zielono lub klawisz F4.
Ramka ta umożliwia odczytywanie i zmianę właściwości różnych obiektów VBA.
Sekcja Properties najczęściej wykorzystywana jest przy tworzeniu graficznych interfejsów
użytkownika, dlatego do jej szczegółowego omówienia powrócimy przy okazji omawiania tego tematu.
Drugim ważnym elementem edytora VBA jest część Project, oznaczona na rysunku czerwoną ramką.
Jeżeli nie widzisz w swoim edytorze ramki Project, kliknij ikonę zaznaczoną na
rysunku na czerwono lub kombinację klawiszy Ctrl+R.
W tej sekcji edytora przedstawione są wszystkie komponenty otwartego projektu VBA.
Każdy projekt VBA może składać się z następujących części (w dalszej części kursu wykorzystywane
będą polskie nazwy, wypisane w nawiasach):
- Microsoft Excel Object (obiekty Excela)
Są to wszystkie elementy związane z normalną obsługą Excela, czyli arkusze i wykresy.
Czasem może się zdarzyć, że w edytorze VBA widocznych będzie więcej arkuszy niż w normalnym widoku
Excela - wynika to z faktu, że niektóre arkusze mogą być ukryte i nie są widoczne w
normalnym widoku, natomiast w edytorze VBA pokazane są wszystkie arkusze bez względu
na to, czy są ukryte czy nie.
- Forms (formularze)
Graficzne interfejsy użytkownika - ich szczegółowy opis znajdziesz w dalszej części kursu.
- Modules (moduły)
Moduły to podstawowe i najbardziej uniwersalne obiekty do przechowywania kodu VBA.
W pierwszych lekcjach będziesz tworzyć kod właśnie w modułach, dlatego poniżej znajdziesz instrukcję
wstawiania nowego modułu.
- Class Modules (moduły klas)
Najbardziej skomplikowany obiekt edytora VBA. Po ukończeniu całego kursu większość
kodu będziesz umieszczał właśnie w modułach klas. Na razie jest jednak jeszcze za
wcześnie, nawet na to, by wytłumaczyć ich zastosowanie. Moduły klas, podobnie jak graficzne
interfejsy użytkownika, zostaną szczegółowo omówione w dalszej części kursu.
Jeżeli w oknie Project swojego edytora VBA nie widzisz omówionych wyżej sekcji, nie przejmuj się,
wszystko jest w należytym porządku - po prostu powyższy print screen został wykonany na pliku,
w którym wcześniej te komponenty zostały dodane.
Domyślnie po otwarciu nowego pliku w tym miejscu znajduje się tylko grupa Microsoft Excel Objects
(a jeżeli żaden plik nie jest aktualnie otwarty, nawet ta grupa nie jest widoczna).
Nie czas teraz, ani miejsce na szczegółowe omawianie powyższych elementów oraz różnic między nimi.
Na razie załóżmy, że cały kod obsługujący makra przechowywany jest w modułach,
a z biegiem czasu, kiedy Twoja wiedza o VBA będzie już zdecydowanie większa, pojawiać się będą
pozostałe elementy wraz z wyjaśnieniem ich zastosowania.
Edytor VBA oferuje jeszcze kilka innych okienek, bardzo przydatnych podczas pisania programów,
ale podobnie jak w przypadku powyższych typów obiektów, omówimy je dopiero w dalszej części kursu,
ponieważ teraz wprowadziłyby tylko niepotrzebne zamieszanie. Prawdopodobnie uznałbyś je w tym momencie za
zupełnie bezużyteczne i po chwili zupełnie zapomniał o ich istnieniu.
Jest jednak jeszcze jeden element, o którym należy wspomnieć już teraz - szare pole, które widzisz w centralnej
części edytora. Jest ono jakby kartką, na której wypisywany jest cały kod. Na razie jest ono jednak nieaktywne,
ponieważ do pliku nie został jeszcze wstawiony żaden moduł.
Dodawanie nowego modułu
Każdy moduł dołączany jest do zwykłego pliku Excela, więc aby stworzyć nowy moduł musisz
najpierw otworzyć nowy lub istniejący plik Excela.
Po otwarciu nowego pliku, w oknie Project widzisz tylko sekcję Microsoft Excel Objects
zawierającą tyle arkuszy, ile liczy otwarty przez Ciebie plik Excela (a więc prawdopodobnie 3).
Aby dodać nowy moduł, należy wybrać z paska menu polecenia
Po wybraniu tej opcji, na szarym polu w centralnej części edytora pojawi się okienko nowego modułu,
a na liście w części Project nowy moduł o nazwie Module1.
Jeżeli chcesz zmienić nazwę modułu, wejdź w pole (Name) w sekcji Properties
(oznaczone na powyższym rysunku czerwoną ramką) i po prostu wpisz nową nazwę.
Okno modułu znajdujące się w centralnej części edytora można maksymalizować i minimalizować
klikając dwukrotnie na jego nagłówek (oznaczony fioletową ramką) lub klikając w ikonkę minimalizacji
i maksymalizacji z prawej strony tego nagłówka.
Zakładanie hasła na projekt VBA
Zazwyczaj dobrze jest uniemożliwić użytkownikom pliku oglądanie szczegółów kodu, a przede wszystkim
ingerowanie w jego zawartość.
W tym celu można założyć hasło chroniące przed dostępem niepowołanych osób do kodu VBA.
Żeby założyć hasło, kliknij prawym klawiszem myszy na nazwę projektu w oknie Project
i wybierz z menu polecenie VBAProject Properties... .
Na ekranie zostanie wyświetlone okno takie, jak na poniższym rysunku:
Wybierz w tym oknie zakładkę Protection, zaznacz pole wyboru Lock project for viewing,
a następnie w dolnej części okna dwukrotnie wpisz hasło zabezpieczające przed dostępem do pliku. Potem
kliknij przycisk OK i zapisz plik.
Od tego czasu, aby zajrzeć do kodu VBA dołączonego do tego projektu,
trzeba będzie najpierw wpisać hasło.
Ustawienia ułatwiające pracę w edytorze VBA
Na koniec pierwszej lekcji przedstawię kilka ustawień, które powinieneś zmienić w opcjach edytora VBA,
aby pozbyć się jego irytujących ustawień domyślnych.
Aby uruchomić okno z opcjami ustawień edytora VBA wybierz z paska menu polecenie:
W oknie, które pojawi się na ekranie, wybierz zakładkę Editor i ustaw wszystkie pola dokładnie tak,
jak jest to pokazane na poniższym rysunku.
Najważniejszą kwestią jest tutaj odznaczenie opcji Auto Syntax Check.
Jeżeli opcja ta jest zaznaczona, za każdym razem gdy wpiszesz jakąś błędną komendę
(np. z powodu literówki), edytor VBA wyświetla na środku ekranu okno z komunikatem o błędzie, któremu towarzyszy
głośny sygnał dźwiękowy, co po jakimś czasie staje się naprawdę irytujące.
Po odznaczeniu tej opcji, edytor nadal informuje o nieprawidłowościach w kodzie, ale robi
to w bardziej przyjazny sposób - podświetlając jedynie błędny fragment kodu na czerwono.
Jeżeli nie podobają się Tobie czcionki lub kolory, w jakich wyświetlany jest wpisywany
przez Ciebie kod VBA, możesz je zmienić również w tym oknie, wchodząc do zakładki Editor Format.