Kurs Makra dla początkujących Wiadomości wstępne VBI/01 Piotr Dynia, specjalista ds. MS Office Czas, który poświęcisz na naukę tego zagadnienia, to 15 20 minut. Zastanawiałeś się może, dlaczego Twój współpracownik, siedzący przy biurku obok skończył raport w ciągu 10 minut, a Tobie zajął on ponad godzinę? Odpowiedź jest oczywista: napisał własne makro, które wykonało za niego całą pracę lub znaczną jej część. Zadasz sobie zapewne pytanie: co to są makra? Makra to kod napisany w języku Visual Basic wykonujący polecenia aplikacji, do której jest dołączony. Część z tych poleceń jest niedostępnych z poziomu okna aplikacji Excel czy Word. Makra pozwalają na automatyzację pracy z dokumentami Office i nie tylko. Mogą wykonywać tysiące poleceń za jednym razem i dlatego są one niejako rozszerzeniem możliwości pracy z aplikacją, do której został dołączony Edytor Visual Basic for Application (w skrócie VBA). Jak w przypadku każdego kursu, w pierwszej kolejności powinieneś poznać niezbędne podstawy, które pozwolą Ci później swobodnie budować własne narzędzia w języku Visual Basic. Jak zbudowany jest Edytor Visual Basic? Jak przygotować własną procedurę? Jak za pomocą makra wyświetlić informację w oknie? W jaki sposób uruchamiać przygotowane makra? VBI/02 VBI/04 VBI/06 VBI/08
VBI/02 Wiadomości wstępne Wiadomości wstępne VBI/03 EDYTOR VISUAL BASIC JAK ZBUDOWANY JEST EDYTOR VISUAL BASIC? Jeśli w swoim Edytorze nie widzisz przeglądarki projektu i okna właściwości (jak na rysunku 1), wciśnij najpierw kombinację klawiszy Ctrl + R, a następnie F4. Aby rozpocząć pracę z makrami, należy uruchomić Edytor Visual Basic. W programach pakietu Office zrobisz to, wybierając z menu Narzędzia polecenie Makro/Edytor Visual Basic (w Excelu 2007: Deweloper/Visual Basic) lub naciskając jednocześnie na klawiaturze lewy Alt i F11. W przypadku programu Word (rys. 2) w oknie przeglądarki projektów znajdują się dwa projekty: jeden o nazwie Normal i drugi o nazwie dokładnie takiej samej jak otwarty dokument. Ten drugi projekt zawiera moduł ThisDocument. U góry znajduje się menu poleceń i pasek narzędzi Standard. Po lewej stronie u góry znajduje się okno przeglądarki projektu (Project - VBAProject). W przypadku Excela znajduje się tam jeden projekt o nazwie dokładnie takiej samej jak nazwa skoroszytu. Znajdują się w nim moduły wszystkich arkuszy zawartych w skoroszycie i dodatkowo moduł noszący nazwę ThisWorkbook. Rys. 2. Okno Edytora Visual Basic po otwarciu w Wordzie W innych programach posiadających Edytor Visual Basic jest jeszcze inaczej. O poszczególnych modułach w projektach dowiesz się więcej w kolejnych lekcjach. Rys. 1. Okno Edytora Visual Basic po otwarciu w Excelu W niektórych komputerach okno przeglądarki projektu może zawierać też inne moduły czy projekty, w zależności od tego, czy korzystano już z makr lub instalowano dodatki. 96 Styczeń 2011 Wiedza i Praktyka Wiedza i Praktyka Excel w praktyce 97
VBI/04 Wiadomości wstępne Wiadomości wstępne VBI/05 Okno po lewej stronie poniżej przeglądarki projektu to okno właściwości. Więcej na temat właściwości dowiesz się w kolejnych lekcjach. W tej pokażemy, jak stworzyć swoje pierwsze makro. W starszych programach, np. wchodzących w skład pakietu Office 97, polecenia menu są przetłumaczone na język polski. Makra zawarte są najczęściej wewnątrz procedury, która stanowi blok instrukcji języka Visual Basic. Każda procedura posiada nazwę. Nie może ona zawierać spacji ani innych niedozwolonych znaków. Jeśli makro będzie wykorzystywane w aplikacjach obcojęzycznych, to nazwa nie powinna również zawierać polskich znaków. PROCEDURA JAK PRZYGOTOWAĆ WŁASNĄ PROCEDURĘ? Makra z reguły są przechowywane w modułach standardowych. Aby wstawić taki moduł do projektu, należy w Edytorze Visual Basic z menu Insert wybrać polecenie Module lub skorzystać z paska narzędzi Standard tak, jak to pokazano na rysunku 3. Po wybraniu tego polecenia w oknie Edytora Visual Basic pojawi się białe okno, a w oknie przeglądarki projektu zaznaczony będzie moduł standardowy o nazwie Module1 (rys. 4). Białe okno na środku to okno kodu, do którego należy wpisywać polecenia języka Visual Basic. Rys. 4. Okno Edytora Visual Basic po wstawieniu modułu standardowego Jeśli chcesz, aby nazwa zawierała kilka wyrazów, to stosuj znak podkreślenia, np. Moje_makro, lub każdy wyraz zaczynaj od wielkiej litery, np. MojeMakro. Aby stworzyć procedurę: 1. Wpisz słowo kluczowe Sub. 2. Naciśnij spację. Rys. 3. Wstawianie modułu standardowego 3. Wpisz nazwę procedury, np. MojeMakro, i naciśnij klawisz Enter. W oknie kodu pojawi się zapis jak na rysunku 5. 98 Styczeń 2011 Wiedza i Praktyka Wiedza i Praktyka Excel w praktyce 99
VBI/06 Wiadomości wstępne Wiadomości wstępne VBI/07 Rys. 5. Stworzenie procedury o nazwie MojeMakro Przy wprowadzaniu kodu najlepiej jest używać znaku tabulacji do wydzielania poszczególnych bloków instrukcji. We wszystkich lekcjach będziemy również używali tej konwencji. Możesz określić, ile spacji będzie zawierał znak tabulacji. Aby to zrobić, użyj polecenia menu Tools/Options i w zakładce Editor wpisz liczbę spacji w polu Tab Width. We wszystkich lekcjach będziemy używali szerokości znaku Tab odpowiadającej dwóm spacjom, dlatego najlepiej zmień tę opcję zgodnie z rysunkiem 6. Edytor od razu skoryguje Twój zapis, tj.: doda 2 nawiasy na końcu pierwszej linii kodu, a także pod pustym wierszem wpisze: End Sub. Zauważ, że słowa Sub i End Sub są zaznaczone na niebiesko. To są słowa kluczowe i nie wolno używać ich w innym kontekście niż tworzenie procedury. Każda procedura zaczyna się od słowa Sub i kończy instrukcją End Sub. Pomiędzy tymi dwiema liniami znajdują się instrukcje, które będą wykonywane przez procedurę. Oczywiście w tej chwili nie ma tam żadnej, ale dalej pokażemy, jak dodać instrukcję, która spowoduje wyświetlenie informacji na ekranie w postaci okna. INSTRUKCJA MSGBOX WYŚWIETLANIE INFORMACJI W OKNIE TWOJE PIERWSZE MAKRO! Nadszedł czas, abyś przygotował swoje pierwsze makro. Będzie to procedura wyświetlająca w oknie dialogowym dowolny tekst. W tym celu: 1. Kliknij w miejscu pustej linii pomiędzy linią oznaczającą początek procedury a linią oznaczającą koniec procedury. 2. Naciśnij klawisz Tab, aby kod procedury był bardziej czytelny. Rys. 6. Zmiana liczby spacji odpowiadającej znakowi tabulacji 3. Wpisz słowo MsgBox, a po nim spację. 4. Wpisz znak cudzysłowu. 5. Wpisz tekst, który chcesz wyświetlić na ekranie, np. Oto moje pierwsze makro. 6. Wpisz powtórnie znak cudzysłowu. 7. Naciśnij klawisz Enter. 100 Styczeń 2011 Wiedza i Praktyka Wiedza i Praktyka Excel w praktyce 101
VBI/08 Wiadomości wstępne Wiadomości wstępne VBI/09 Każda instrukcja kończy się znakiem końca linii. Po uruchomieniu tej procedury ukaże się informacja z tekstem wpisanym po instrukcji MsgBox pomiędzy znakami cudzysłowu. Zostanie wyświetlona w postaci okna widocznego na rysunku 9. Rys. 7. Twoje pierwsze makro Rys. 9. Okno z informacją wyświetlone za pomocą instrukcji MsgBox 2 SPOSOBY URUCHAMIANIA MAKRA CO ZROBIĆ, ABY WŁĄCZYĆ MAKRO? Napisałeś właśnie swoje pierwsze makro. Na pewno chciałbyś je uruchomić. W tej części powiemy Ci o dwóch sposobach uruchamiania procedury. Pierwszy to uruchamianie z poziomu Edytora Visual Basic. W tym celu: 1. Kliknij w środku procedury, którą napisałeś. 2. Z menu Run wybierz polecenie Run Sub/User Form lub wybierz to polecenie z paska narzędzi Standard tak, jak pokazano na rysunku 8. Możesz również użyć klawisza F5, aby uruchomić procedurę. 3. Kliknij OK, aby zamknąć okno. Czasami będziesz potrzebował uruchomić makro, nie otwierając Edytora Visual Basic. Aby to zrobić z poziomu Excela: 1. Wybierz polecenie menu Narzędzia/Makro/Makra (w Excelu 2007: Deweloper/Makra). 2. Otworzy się okno dialogowe Makro. Na liście makr po lewej stronie zaznacz to, które chcesz uruchomić. 3. Kliknij przycisk Uruchom. Gotowe. Rys. 8. Uruchamianie procedury z poziomu Edytora Visual Basic Rys. 10. Okno uruchamiania makr w programie Excel 102 Styczeń 2011 Wiedza i Praktyka Wiedza i Praktyka Excel w praktyce 103
VBI/10 ZAPAMIĘTAJ Wiadomości wstępne 1. Makra zwiększają możliwości programów pakietu Office. 2. Każda procedura zaczyna się słowem kluczowym Sub i nazwą procedury, a kończy się instrukcją End Sub. 3. Każda instrukcja kończy się znakiem końca linii. 4. Instrukcja MsgBox pozwala na wyświetlanie informacji w postaci okna. Po instrukcji należy podać tekst takiej informacji zawarty w cudzysłowie. SPRAWDŹ SIĘ 1. W nowym dokumencie programu Word dodaj moduł standardowy. 2. Napisz w nim procedurę o nazwie MojaPrezentacja. 3. Do procedury dodaj instrukcję wyświetlającą informację na temat Twojego imienia i nazwiska. 4. Uruchom makro MojaPrezentacja. 104 Styczeń 2011 Wiedza i Praktyka