Makra bez tajemnic: czym s膮 i do czego s艂u偶膮
聽
Pakiet Microsoft Office System 2003 |
Kt贸偶 z nas nie traci艂 cennego czasu na wykonywanie powtarzalnych zada艅 w programach pakietu Microsoft Office, podejrzewaj膮c przy tym, 偶e musi istnie膰 jaki艣 lepszy spos贸b? Mo偶e chodzi艂o o sformatowanie wielu tabel w d艂ugim dokumencie programu Word lub przeorganizowanie danych w arkuszu kalkulacyjnym programu Excel. A mo偶e konieczne by艂o wprowadzenie tych samych zmian na kilku podobnych stronach programu Visio lub slajdach programu PowerPoint. Czytelnicy, dla kt贸rych te lub podobne zadania nie s膮 obce, powinni dowiedzie膰 si臋 o makrach.
Wy艣wietlane do艣膰 cz臋sto podczas otwierania dokument贸w pakietu Office ostrze偶enie o makrach mo偶e powodowa膰, 偶e wielu u偶ytkownik贸w my艣li o makrach w niezbyt przyjemnych kategoriach wirus贸w lub w najlepszym wypadku programowania. Tymczasem trzeba wiedzie膰, 偶e wi臋kszo艣膰 makr nie tylko nie jest szkodliwa, ale mo偶e przyczyni膰 si臋 do kolosalnych oszcz臋dno艣ci czasu. Ponadto tworzenie makr i korzystanie z nich jest 艂atwiejsze ni偶 mo偶na by przypuszcza膰.
Na tej stronie:
Wprowadzenie do makr w programie...
Co to jest makro?
Makro to zbi贸r polece艅, kt贸re mo偶na uruchomi膰 jednym klikni臋ciem. Makra mog膮 zautomatyzowa膰 niemal wszystko, co da si臋 zrobi膰 w u偶ywanym programie, a czasem umo偶liwiaj膮 nawet robienie rzeczy, o kt贸rych wcze艣niej nie wiedziano, 偶e s膮 mo偶liwe.
Czy makra maj膮 co艣 wsp贸lnego z programowaniem?
Makra to pewien rodzaj programowania, ale nie trzeba by膰 programist膮 ani nawet wiedzie膰 czegokolwiek o programowaniu, aby z nich korzysta膰. Wi臋kszo艣膰 makr, jakie mo偶na utworzy膰 w programach pakietu Office, jest napisanych w j臋zyku Microsoft Visual Basic for Applications, okre艣lanym zwykle skr贸tem VBA. To w艂a艣nie o makrach VBA b臋dzie mowa w tym artykule.
Kiedy i po co warto u偶ywa膰 makr
Makra pozwalaj膮 oszcz臋dza膰 czas i rozszerzaj膮 mo偶liwo艣ci program贸w u偶ywanych na co dzie艅. Mo偶na za ich pomoc膮 automatyzowa膰 powtarzalne zadania podczas tworzenia dokument贸w, upraszcza膰 k艂opotliwe zadania i tworzy膰 rozwi膮zania, na przyk艂ad do automatyzacji tworzenia dokument贸w cz臋sto u偶ywanych przez wiele os贸b w firmie. Osoby z do艣wiadczeniem w pos艂ugiwaniu si臋 j臋zykiem VBA mog膮 u偶ywa膰 makr do tworzenia niestandardowych dodatk贸w, takich jak szablony, okna dialogowe, a nawet do przechowywania cz臋sto u偶ywanych informacji.
Rozwa偶my wspomniany wcze艣niej przyk艂ad formatowania wielu tabel w dokumencie programu Word. Za艂贸偶my, 偶e trzeba sformatowa膰 50 tabel w dokumencie. Nawet je艣li do艣wiadczonemu u偶ytkownikowi sformatowanie jednej tabeli zajmuje tylko pi臋膰 minut, ca艂e zadanie zajmie mu ponad cztery godziny. Zarejestrowanie makra formatuj膮cego tabel臋, a nast臋pnie zmodyfikowanie go, aby powtarza艂o zmiany w ca艂ym dokumencie, skr贸ci czas wykonania zadania z kilku godzin do paru minut.
Jak si臋 tworzy makra?
W wielu programach pakietu Office makro mo偶na utworzy膰, pisz膮c je lub rejestruj膮c szereg czynno艣ci.
Rejestrowanie makra
Rejestrowanie makra jest prawie tak samo proste jak w艂膮czanie i wy艂膮czanie magnetofonu. Gdy u偶ywa si臋 rejestratora makr, kod makra jest pisany automatycznie na podstawie czynno艣ci wykonywanych w programie. W pakiecie Office makra mo偶na rejestrowa膰 w programach Word, Excel, PowerPoint, Visio i Project.
Przyjrzyjmy si臋 na przyk艂ad rejestrowaniu makra dla pierwszego zadania wspomnianego na pocz膮tku tego artyku艂u — formatowania kilku tabel w d艂ugim dokumencie programu Word. Mo偶na zastosowa膰 styl, kt贸ry uwzgl臋dni wiele aspekt贸w formatowania, ale mo偶e tak偶e by膰 konieczne zastosowanie formatowania, kt贸re nie wchodzi w zakres stylu, na przyk艂ad okre艣lenie szeroko艣ci tabel lub wysoko艣ci wierszy tabeli.
Aby zarejestrowa膰 to makro, ustaw najpierw kursor w pierwszej tabeli, kt贸r膮 chcesz sformatowa膰, a nast臋pnie wykonaj nast臋puj膮ce czynno艣ci:
W menu Narz臋dzia kliknij polecenie Makro, a nast臋pnie kliknij polecenie Zarejestruj nowe makro.
W przedstawionym na ilustracji oknie dialogowym Rejestrowanie makra mo偶na nazwa膰 makro, przypisa膰 je do paska narz臋dzi lub skr贸tu klawiaturowego, aby mie膰 do niego 艂atwy dost臋p, okre艣li膰 miejsce, w kt贸rym makro zostanie zapisane, oraz doda膰 opis makra u艂atwiaj膮cy pos艂ugiwanie si臋 makrem w przysz艂o艣ci. Mo偶na tak偶e pomin膮膰 na razie wszystkie te czynno艣ci i po prostu klikn膮膰 przycisk OK, aby rozpocz膮膰 rejestrowanie.
Przypisan膮 automatycznie nazw臋 makra oznaczon膮 liczb膮 kolejn膮 mo偶na zmieni膰. W nazwach makr mo偶na u偶ywa膰 liter i cyfr, ale nie mo偶na stosowa膰 spacji.
Domy艣lnie nowo rejestrowane makra s膮 zapisywane w szablonie globalnym o nazwie Normal.dot. Mo偶na je jednak zapisywa膰 r贸wnie偶 w bie偶膮cym dokumencie lub szablonie albo w innym szablonie niestandardowym.
Makro mo偶na przypisa膰 do paska narz臋dzi lub do skr贸tu klawiaturowego, co u艂atwi dost臋p do niego. Je艣li jednak ten krok zostanie teraz pomini臋ty, b臋dzie go mo偶na wykona膰 w dowolnej chwili po utworzeniu makra.
Opis makra zawiera dat臋 i nazw臋 u偶ytkownika, kt贸ry zarejestrowa艂 makro. W razie potrzeby mo偶na ten opis zmieni膰.
Po klikni臋ciu przycisku OK zostanie otwarty ma艂y pasek narz臋dzi z dwoma przyciskami Zatrzymaj rejestrowanie
i Wstrzymaj rejestrowanie
.
Wykonaj poszczeg贸lne czynno艣ci potrzebne do sformatowania tabeli. Na przyk艂ad mo偶esz zastosowa膰 styl tabeli, ustawi膰 jej szeroko艣膰 na 50% dost臋pnej szeroko艣ci strony, zaznaczy膰 tabel臋 i usun膮膰 ustawienia wysoko艣ci z wszystkich wierszy tabeli. Po zastosowaniu element贸w formatowania, kt贸re b臋d膮 takie same dla wszystkich tabel przeznaczonych do sformatowania, kliknij przycisk Zatrzymaj rejestrowanie.
Teraz mo偶esz klikn膮膰 wewn膮trz dowolnej tabeli w dokumencie, a nast臋pnie uruchomi膰 to makro, aby automatycznie powt贸rzy膰 wszystkie czynno艣ci, kt贸re zosta艂y wykonane w odniesieniu do pierwszej tabeli.
Uwaga聽聽 Je艣li makro nie zosta艂o przypisane do paska narz臋dzi ani do skr贸tu klawiaturowego, mo偶esz uzyska膰 dost臋p do niego w oknie dialogowym Makra. W tym celu kliknij polecenie Makro w menu Narz臋dzia, a nast臋pnie kliknij polecenie Makra. Wybierz makro z listy Nazwa makra, a nast臋pnie kliknij przycisk Uruchom.
Pisanie makra
W programach pakietu Office oferuj膮cych mo偶liwo艣膰 rejestrowania makr, takich jak Access, Outlook, FrontPage i Publisher, mo偶na tak偶e pisa膰 w艂asne makra VBA. Aby napisa膰 makro, trzeba zna膰 troch臋 j臋zyk VBA, ale nauczenie si臋 go jest zaskakuj膮co 艂atwe dzi臋ki wiedzy wynikaj膮cej po prostu z u偶ywania programu. J臋zyk VBA s艂u偶y przede wszystkim do automatyzacji funkcji u偶ywanych na co dzie艅. Na przyk艂ad w programie Word obiekty j臋zyka VBA obejmuj膮 takie elementy jak dokumenty, tabele, akapity lub sekcje.
Edycja zarejestrowanego makra zwi臋ksza jego mo偶liwo艣ci. Na przyk艂ad w makrze, kt贸rego rejestrowanie opisano powy偶ej, mo偶na doda膰 element nazywany p臋tl膮 — prosty kod w j臋zyku VBA, dzi臋ki kt贸remu makro b臋dzie stosowa膰 formatowanie kolejno do wszystkich tabel w dokumencie. W ten spos贸b zostanie wyeliminowana konieczno艣膰 uruchamiania makra osobno dla ka偶dej tabeli.
Jednym z ciekawszych aspekt贸w pisania i edytowania makr VBA jest to, 偶e gdy ju偶 pozna si臋 podstawy j臋zyka VBA w jednym programie pakietu Office, mo偶na t臋 wiedz臋 niemal w ca艂o艣ci wykorzysta膰 do pisania i edytowania makr w pozosta艂ych. Co prawda w przypadku poszczeg贸lnych funkcji stosuje si臋 r贸偶n膮 terminologi臋, ale j臋zyk potrzebny do definiowania makr i dodawania struktur takich jak p臋tla jest identyczny we wszystkich programach obs艂uguj膮cych VBA.
Porada聽聽 Dobrym sposobem rozpocz臋cia nauki j臋zyka VBA jest zarejestrowanie makra, a nast臋pnie przyjrzenie si臋 mu w Edytorze Visual Basic. Aby to zrobi膰, kliknij polecenie Makro w menu Narz臋dzia, a nast臋pnie kliknij polecenie Makra. Wybierz zarejestrowane makro z listy Nazwa makra, a nast臋pnie kliknij przycisk Edytuj.
Czy makra s膮 bezpieczne?
Nie ulega dyskusji, 偶e makra, chocia偶 s膮 w wi臋kszo艣ci nieszkodliwe i pomocne, stanowi膮 wa偶ny problem z punktu widzenia bezpiecze艅stwa systemu. Makra tworzone z nieczystymi intencjami mog膮 zawiera膰 destrukcyjny kod, zagra偶aj膮cy dokumentom lub systemowi.
Aby zabezpieczy膰 sw贸j system i pliki, nie nale偶y w艂膮cza膰 makr z nieznanych 藕r贸de艂. Ustawienie poziomu bezpiecze艅stwa makr w programach pakietu Office na 艢rednie pozwoli decydowa膰 o w艂膮czaniu lub wy艂膮czaniu makr, nie ograniczaj膮c jednocze艣nie dost臋pu do 偶adnego makra, kt贸rego chce si臋 u偶y膰. W ka偶dym otwieranym pliku mo偶na b臋dzie w艂膮czy膰 lub wy艂膮czy膰 makra, przy czym b臋dzie zapewniona mo偶liwo艣膰 uruchamiania dowolnego makra.
Aby ustawi膰 bezpiecze艅stwo makr w dowolnym programie pakietu Office, w kt贸rym s膮 dost臋pne makra VBA, kliknij polecenie Makro w menu Narz臋dzia, a nast臋pnie kliknij polecenie Zabezpieczenia. Wybierz preferowany poziom zabezpiecze艅 i kliknij przycisk OK. Pami臋taj, 偶e zaznaczenie opcji Niskie na karcie Poziom zabezpiecze艅 jest niezalecane.
Wprowadzenie do makr w programie...
Word
W programie Word istnieje mo偶liwo艣膰 rejestrowania i pisania makr.
Dla zaawansowanych u偶ytkownik贸w programu Word, kt贸rzy nie maj膮 problem贸w z rejestrowaniem makr, program Word jest doskona艂ym miejscem do rozpocz臋cia nauki edytowania i pisania w艂asnych makr, poniewa偶 j臋zyk VBA w programie Word wykorzystuje w du偶ym stopniu terminologi臋 znan膮 ju偶 i u偶ywan膮 przez nich na co dzie艅.
Excel
Makra s膮 bardzo popularne w programie Excel, poniewa偶 mog膮 one znacznie rozszerzy膰 funkcjonalno艣膰, z kt贸rej korzysta si臋 codziennie. W programie Excel mo偶na u偶ywa膰 makr do bardzo zr贸偶nicowanych zada艅, od automatyzacji typowych czynno艣ci po tworzenie funkcji niestandardowych.
Doskona艂e przyk艂ady gotowych do u偶ycia makr programu Excel mo偶na znale藕膰 w poni偶szych dw贸ch artyku艂ach z bazy wiedzy Microsoft Knowledge Base:
U偶ytkownicy do艣wiadczeni w rejestrowaniu makr w programie Excel i korzystaniu z nich, kt贸rzy chc膮 si臋 nauczy膰 pisania i edytowania makr programu Excel, powinni spr贸bowa膰 wzi膮膰 udzia艂 w szkoleniu dotycz膮cym p臋tli.
PowerPoint, Visio i Project
Podobnie jak w programach Word i Excel, tak偶e w programach PowerPoint, Visio i Project mo偶na rejestrowa膰 i pisa膰 makra.
Access
W programie Access makra odgrywaj膮 zasadnicz膮 rol臋, poniewa偶 mog膮 w znacznym stopniu rozszerzy膰 funkcjonalno艣膰 baz danych. Chocia偶 w programie Access nie mo偶na rejestrowa膰 makr, mo偶na napisa膰 kod w j臋zyku Access VBA oraz tworzy膰 makra przy u偶yciu narz臋dzia o nazwie Konstruktor makr. W programie Access dost臋pnych jest kilka opcji pomocnych w niezb臋dnej automatyzacji. J臋zyk VBA to tylko jedna z nich.
FrontPage i Publisher
Podobnie jak w programach Word, Excel, PowerPoint i Visio, tak偶e w programach FrontPage i Publisher mo偶na pisa膰 makra, aby nie traci膰 czasu na powtarzalne zadania. W programie FrontPage mo偶na r贸wnie偶 tworzy膰 dodatki rozszerzaj膮ce mo偶liwo艣ci programu.
Wprowadzenie do makr niestandardowych w programie Excel
Dotyczy: Microsoft Office Excel 2003
聽
Wiele zada艅 wykonywanych w programie Excel, takich jak wprowadzanie danych o sprzeda偶y w danym dniu czy dodawanie formu艂y do arkusza聽(arkusz: Podstawowy dokument programu Excel u偶ywany do przechowywania danych i pracy z danymi. Nazywany jest r贸wnie偶 arkuszem kalkulacyjnym. Arkusz sk艂ada si臋 z kom贸rek, kt贸re s膮 zorganizowane w kolumny i wiersze. Arkusz jest zawsze przechowywany w skoroszycie.), wykonuje si臋 jednorazowo. Inne zadania, takie jak zmiana formatu zakresu kom贸rek, s膮 cz臋sto powtarzane, ale mog膮 by膰 wykonywane szybko dzi臋ki narz臋dziom programu Excel. Nieraz jednak zdarzaj膮 si臋 zadania, kt贸re musz膮 by膰 wykonywane wielokrotnie, a kt贸re sk艂adaj膮 si臋 z wielu elementarnych czynno艣ci.
Mo偶e to by膰 na przyk艂ad wyr贸偶nienie kilku wa偶nych kom贸rek w arkuszu przed ka偶dym przedstawieniem raportu. Zamiast przechodzi膰 d艂ugie procedury r臋cznie wykonywanych operacji, mo偶na utworzy膰 makro, czyli ci膮g zarejestrowanych dzia艂a艅, kt贸re b臋dzie realizowa膰 procedur臋 automatycznie. Osoby znaj膮ce j臋zyk programowania Microsoft Visual Basic庐 for Applications (VBA) mog膮 napisa膰 w艂asne makro od podstaw. W obu przypadkach po utworzeniu makra istnieje mo偶liwo艣膰 uruchamiania go, edytowania oraz usuni臋cia.
Niniejszy artyku艂 stanowi wprowadzenie do programowania obiektowego i Edytora Visual Basic, 艣rodowiska przeznaczonego do pisania w艂asnych makr programu Excel. Aby spr贸bowa膰 swych si艂 w pisaniu w艂asnego makra, zobacz napisany przez Franka Rice'a artyku艂 Niezwykle prosty podr臋cznik modelu obiektowego programu Microsoft Office Excel 2003 (w j臋zyku angielskim) przedstawiaj膮cy dok艂adnie ca艂y proces.
Korzystanie z Edytora Visual Basic
Edytor Visual Basic to zaawansowane narz臋dzie, dzi臋ki kt贸remu u偶ytkownik dysponuje wi臋kszymi mo偶liwo艣ciami i wi臋ksz膮 wszechstronno艣ci膮 ni偶 w przypadku makr rejestrowanych. Aby je otworzy膰, wska偶 polecenie Makro w menu Narz臋dzia, a nast臋pnie kliknij polecenie Edytor Visual Basic (albo naci艣nij klawisze ALT+F11).
Aby otworzy膰 konkretne makro, wska偶 polecenie Makro w menu Narz臋dzia, a nast臋pnie kliknij polecenie Makra (lub naci艣nij klawisze ALT+F8). W oknie dialogowym Makro zaznacz makro, kt贸re chcesz edytowa膰 lub przegl膮da膰, a nast臋pnie kliknij przycisk Edycja, aby otworzy膰 Edytor Visual Basic.
Programowanie obiektowe w Edytorze Visual Basic
W Edytorze Visual Basic mo偶na tworzy膰 w艂asne programy, stosuj膮c programowanie obiektowe. Program to nic innego jak zbi贸r instrukcji uruchamianych na komputerze we wskazanej kolejno艣ci.
W obiektowym j臋zyku programowania ka偶dy aspekt kodu opiera si臋 na elementach 艣rodowiska. Te „elementy” s膮 nazywane (jak sama nazwa wskazuje) obiektami. To w艂a艣nie w tych obiektach znajduj膮 si臋 (s膮 hermetyzowane) wszystkie akcje i dane. W programie Excel obiektami s膮 skoroszyty, arkusze, zakresy kom贸rek i pliki zewn臋trzne.
Og贸lnie s膮 cztery aspekty obiekt贸w u偶ywanych do budowy programu: w艂a艣ciwo艣ci, metody, zdarzenia i kolekcje.
W艂a艣ciwo艣ci
W skr贸cie w艂a艣ciwo艣ci to zmienne opisuj膮ce jakie艣 aspekty obiektu, do kt贸rego nale偶膮. Powszechn膮 w艂a艣ciwo艣ci膮 obiektu w programie Excel jest Name (Nazwa), kt贸ra zawiera warto艣膰 identyfikuj膮c膮 przypisywan膮 przez u偶ytkownika lub program do skoroszytu, arkusza, zakresu kom贸rek lub innego obiektu. Na przyk艂ad zmiana nazwy skoroszytu (realizowana przy u偶yciu kodu VBA lub przez klikni臋cie prawym przyciskiem myszy karty arkusza) polega w艂a艣nie na zmianie warto艣ci przechowywanej we w艂a艣ciwo艣ci Name.
Niekt贸rym w艂a艣ciwo艣ciom arkusza (na przyk艂ad Name) mo偶na nadawa膰 warto艣ci bezpo艣rednio w kodzie VBA. W przypadku innych w艂a艣ciwo艣ci arkusza do zmiany w艂a艣ciwo艣ci mo偶e by膰 konieczne zarejestrowanie pewnych dzia艂a艅 w programie Excel (na przyk艂ad czynno艣ci wykonywanych przy w艂膮czaniu ochrony zakresu kom贸rek) albo skorzystanie z metody (zobacz opis w nast臋pnej sekcji).
W kodzie VBA do w艂a艣ciwo艣ci mo偶na si臋 odwo艂ywa膰 przy u偶yciu notacji kropkowej, tzn. nazwa obiektu, kropka, nazwa w艂a艣ciwo艣ci. Na przyk艂ad w celu zmiany nazwy arkusza nale偶y u偶y膰 w艂a艣ciwo艣ci Worksheet.Name.
Metody
Metoda to akcja, kt贸r膮 obiekt „wie”, jak wykona膰. Wiadomo na przyk艂ad, 偶e arkusz wy艣wietlony w oknie programu Excel na pierwszym planie jest nazywany arkuszem aktywnym. W kodzie VBA programu Excel mo偶na uaktywni膰 arkusz, na kt贸rym maj膮 by膰 wykonywane jakie艣 operacje, wywo艂uj膮c jego metod臋 Activate (Uaktywnij). Po uruchomieniu metody Activate arkusz, z kt贸rym metoda ta jest zwi膮zana, przenosi si臋 na wierzch wszystkich arkuszy w oknie programu Excel i staje si臋 dost臋pny do edycji.
Dost臋p do metod, podobnie jak do w艂a艣ciwo艣ci, mo偶na uzyska膰 za po艣rednictwem notacji kropkowej. Chc膮c na przyk艂ad ponownie przeliczy膰 wszystkie formu艂y danego arkusza, mo偶na wywo艂a膰 metod臋 Worksheet.Calculate.
Zdarzenia
W艂a艣ciwo艣膰 to wymierny atrybut obiektu, metoda to akcja, kt贸r膮 obiekt mo偶e wykona膰, zdarzenie jest natomiast akcj膮, kt贸rej wyst膮pienie obiekt „rozpoznaje”. Na przyk艂ad program Excel 2003 rozpoznaje nast臋puj膮ce zdarzenia (mi臋dzy innymi):
otwarcie lub zamkni臋cie skoroszytu,
uaktywnienie lub zdezaktywowanie arkusza,
zapisanie skoroszytu,
klikni臋cie wykresu,
naci艣ni臋cie klawisza (lub kombinacji klawiszy),
wpisanie danych w kom贸rce,
ponowne obliczenie formu艂 w arkuszu,
u偶ycie hiper艂膮cza.
W programie Excel funkcjonuje kilka procedur obs艂ugi zdarze艅, kt贸re s膮 zwi膮zane z okre艣lonymi akcjami. Gdy dana akcja wyst膮pi, a u偶ytkownik zdefiniowa艂 czynno艣ci do wykonania w takich okoliczno艣ciach, program Excel uruchamia kod z procedury obs艂ugi zdarzenia. Na przyk艂ad po utworzeniu nowego skoroszytu mo偶na za偶yczy膰 sobie, aby wszystkie otwarte skoroszyty zosta艂y wy艣wietlone w postaci kaskady okien, tworz膮c nast臋puj膮c膮 procedur臋 obs艂ugi zdarzenia:
Private Sub App_NewWorkbook(ByVal Wb As Workbook)
Application.Windows.Arrange xlArrangeStyleCascade
End Sub
Nie martw si臋, je艣li nie wiesz, do czego s艂u偶膮 poszczeg贸lne elementy tej procedury. Na razie skoncentruj si臋 na 艣rodkowym wierszu kodu, kt贸ry zleca programowi kaskadowe u艂o偶enie okien. Ten sam efekt mo偶na uzyska膰, u偶ywaj膮c polece艅 programu Excel (menu Okno, polecenie Rozmie艣膰, opcja Kaskadowo). Je艣li jednak dana akcja ma by膰 wykonywana po ka偶dym wyst膮pieniu danego zdarzenia, mo偶na j膮 zautomatyzowa膰 za pomoc膮 kodu VBA聽— i zaoszcz臋dzi膰 sobie k艂opot贸w.
Kolekcje
Ostatnim elementem j臋zyk贸w programowania obiektowego, kt贸ry warto zna膰, jest kolekcja. Jak podpowiada nazwa, kolekcja to grupa obiekt贸w tego samego typu zawartych w innym obiekcie. Na przyk艂ad skoroszyt zawiera co najmniej jednoelementow膮 kolekcj臋 arkuszy. Chc膮c wprowadzi膰 t臋 sam膮 zmian臋 w ka偶dym arkuszu skoroszytu, mo偶na przejrze膰 ka偶dy arkusz kolekcji i wprowadzi膰 zmian臋 programowo.
Ka偶dy, kto pisa艂 ju偶 jakie艣 programy, zetkn膮艂 si臋 prawdopodobnie z p臋tl膮 For…Next, kt贸ra umo偶liwia wielokrotne powtarzanie zestawu instrukcji przez zastosowanie sekwencji podobnej do nast臋puj膮cej (przedstawiony w tym przyk艂adzie kod dodaje 艣cie偶k臋 aktywnego skoroszytu do prawej cz臋艣ci stopki na pierwszych trzech arkuszach).
For i = 1 to 3
Worksheets(i).PageSetup.RightFooter = Path
Next i
Problem z zapisywaniem na sta艂e w kodzie programu g贸rnego ograniczenia tej p臋tli For…Next polega na tym, 偶e po ka偶dym dodaniu lub usuni臋ciu arkusza konieczne jest modyfikowanie kodu. To niewielka niedogodno艣膰, je艣li trzeba zmian臋 wprowadzi膰 raz czy dwa, ale w przypadku zarz膮dzania wi臋ksz膮 ilo艣ci膮 kodu mo偶e si臋 zdarzy膰, 偶e zapomnisz o niekt贸rych zmianach. Powstan膮 wi臋c b艂臋dy, kt贸re trzeba b臋dzie usun膮膰. Co gorsza, te b艂臋dy mog膮 umkn膮膰 na przyk艂ad do czasu, a偶 osoba sprawdzaj膮ca odkryje, 偶e pierwszych 500 wydrukowanych egzemplarzy sprawozdania rocznego jest 藕le sformatowanych (a Ty wy艂膮czysz telefon kom贸rkowy, odpoczywaj膮c na pla偶y).
Mo偶na wprawdzie wykry膰 liczb臋 arkuszy w skoroszycie, stosuj膮c odpowiednio przygotowany kod, istnieje jednak prostszy spos贸b: wystarczy u偶y膰 p臋tli For Each…Next. P臋tla For Each…Next sama okre艣la liczb臋 obiekt贸w kolekcji, na przyk艂ad arkuszy w skoroszycie, i odwiedza ka偶dy element kolekcji. Przy zastosowaniu tej techniki powy偶szy kod mo偶na zapisa膰 nast臋puj膮co:
For Each arkusz in Worksheets
arkusz.PageSetup.RightFooter = Path
Next arkusz
Zamiast zwi臋ksza膰 warto艣膰 licznika w standardowej p臋tli For…Next mo偶na zastosowa膰 p臋tl臋 For Each…Next, kt贸ra w prosty spos贸b wyznacza kolejne sk艂adniki kolekcji Worksheets i zatrzymuje dzia艂anie, gdy wszystkie si臋 wyczerpi膮.
Edytor Visual Basic i jego okna
W Edytorze Visual Basic r贸偶ne informacje s膮 wy艣wietlane w r贸偶nych oknach. Rozpoczynaj膮c pisanie makr, warto zna膰 nast臋puj膮ce okna: Project Explorer (Eksplorator projekt贸w), Properties (W艂a艣ciwo艣ci) i Code (Kod).
Project Explorer (Eksplorator projekt贸w), okno
Po bezpo艣rednim otwarciu Edytora Visual Basic za pomoc膮 okna Project Explorer (Eksplorator projekt贸w) mo偶na wybra膰 makro do edycji. Okno Project Explorer (Eksplorator projekt贸w) przedstawia wszystkie projekty (grupy kodu) i zawarte w nich makra w widoku drzewa, kt贸ry przypomina widok drzewa folder贸w w Eksploratorze Windows庐. Obiekty g艂贸wne lub podstawowe w strukturze drzewa tworz膮 bie偶膮cy skoroszyt wraz z wszelkimi innymi otwartymi skoroszytami i dodatkami.
G艂贸wne elementy u偶ywane przez projekty VBA s膮 przechowywane w osobnym folderze w danym projekcie. Elementami tymi s膮:
obiekty (opisane we wcze艣niejszej cz臋艣ci tego artyku艂u);
modu艂y, zawieraj膮ce kod makra skojarzony z arkuszem;
modu艂y klas, kt贸re s膮 definicjami obiekt贸w zdefiniowanych przez u偶ytkownika dla danego skoroszytu;
formularze u偶ytkownika, zapewniaj膮ce powierzchni臋, na kt贸rej mo偶na umieszcza膰 formanty graficzne, takie jak przyciski, obrazy i obszary tekstu.
W poni偶szym przyk艂adzie bie偶膮cy skoroszyt nosi nazw臋 VBAProject. Trzy arkusze zawarte w skoroszycie (Arkusz1, Arkusz2 i Arkusz3), razem z ca艂ym skoroszytem (ThisWorkbook) s膮 widoczne w folderze Microsoft Office Excel Objects (Obiekty programu Microsoft Office Excel). Wszelkie zarejestrowane i napisane w VBA makra znajduj膮 si臋 w folderze Modules (Modu艂y). Wszystkie modu艂y klas i formularze u偶ytkownika s膮 rozlokowane odpowiednio w folderach Class Modules (Modu艂y klas) i Forms (Formularze).
Properties (W艂a艣ciwo艣ci), okno
Tu偶 pod oknem Project Explorer (Eksplorator projekt贸w) znajduje si臋 okno Properties (W艂a艣ciwo艣ci), kt贸re umo偶liwia odczytywanie i zmienianie r贸偶nych w艂a艣ciwo艣ci skojarzonych z zaznaczonym w danej chwili obiektem. W przypadku modu艂贸w jedyn膮 dost臋pn膮 w艂a艣ciwo艣ci膮 jest na og贸艂 Name (Nazwa). Arkusze maj膮 dodatkowe w艂a艣ciwo艣ci, kt贸re mo偶na zmienia膰, na przyk艂ad StandardWidth (Standardowa szeroko艣膰) i DisplayPageBreaks (Wy艣wietlanie znak贸w podzia艂u strony). W艂a艣ciwo艣ci w oknie Properties (W艂a艣ciwo艣ci) najcz臋艣ciej zmienia si臋 podczas pracy z formularzami u偶ytkownika.
聽Uwaga聽聽聽Nazwa obiektu w polu w艂a艣ciwo艣ci Name (Nazwa) w oknie Properties (W艂a艣ciwo艣ci) nie musi pokrywa膰 si臋 z nazw膮 obiektu w programie Excel. Obie nazwy mog膮 wygl膮da膰 podobnie, ale mog膮 si臋 te偶 r贸偶ni膰 ze wzgl臋du na domy艣lne regu艂y nadawania nazw stosowane w Edytorze Visual Basic w odniesieniu do obiekt贸w (na przyk艂ad nazwy nie mog膮 zawiera膰 spacji, musz膮 rozpoczyna膰 si臋 od litery, nie mog膮 by膰 s艂owem zastrze偶onym i maj膮 d艂ugo艣膰 maksymalnie 31 znak贸w). Nawet r贸偶ni膮ce si臋 nazwy mog膮 by膰 jednak ze sob膮 wewn臋trznie po艂膮czone w celu zapewnienia w艂a艣ciwych odwo艂a艅 do obiekt贸w.
Code (Kod), okno
Okno Code (Kod) jest najwi臋kszym spo艣r贸d okien Edytora Visual Basic i jest zwie艅czone dwoma listami rozwijanymi. Lista rozwijana z lewej strony 聽— Object (Obiekt)聽— s艂u偶y do wybierania edytowanego obiektu. Podczas pracy z samym kodem w polu listy wy艣wietlany jest domy艣lny obiekt General (Og贸lny). Drugie pole listy rozwijanej 聽— Procedure (Procedura)聽— s艂u偶y do wybierania poszczeg贸lnych makr w obr臋bie bie偶膮cego modu艂u. Makra dodawane do modu艂u i z niego usuwane s膮 r贸wnie偶 dodawane do pola Procedure (Procedura) i z niego usuwane.
Chc膮c dotrze膰 do danego makra, mo偶na r贸wnie偶 przewija膰 listingi kodu za pomoc膮 klawiszy STRZA艁KA W G脫R臉 i STRZA艁KA W D脫艁. Podczas przewijania pole Procedure (Procedura) jest aktualizowane i w ka偶dej chwili odzwierciedla bie偶膮ce makro.
Wi臋cej informacji
Aby rozpocz膮膰 tworzenie w艂asnych makr programu Excel, zobacz artyku艂 Niezwykle prosty podr臋cznik modelu obiektowego programu Microsoft Office Excel 2003 (w j臋zyku angielskim), kt贸ry zawiera szczeg贸艂owe instrukcje.
Poziomy zabezpiecze艅 makr
聽
Poni偶ej podsumowano informacje dotycz膮ce sposobu dzia艂ania w r贸偶nych sytuacjach ochrony przed wirusami makr聽(makro: Akcja lub zestaw akcji, kt贸rego mo偶na u偶y膰 do automatyzacji zada艅. Makra s膮 rejestrowane w j臋zyku programowania Visual Basic for Applications.) ustawianej na karcie Poziom zabezpiecze艅 w oknie dialogowym Zabezpieczenia (menu Narz臋dzia, podmenu Makro). Niezale偶nie od wszystkich ustawie艅, po zainstalowaniu programu antywirusowego dzia艂aj膮cego z pakietem Microsoft Office聽2003 plik jest przed otwarciem skanowany w poszukiwaniu znanych wirus贸w聽(wirus: Program komputerowy lub makro, kt贸re „zara偶a” pliki komputerowe przez wstawienie do tych plik贸w swojej kopii. Gdy zara偶ony plik zostanie za艂adowany do pami臋ci, wirus mo偶e zarazi膰 inne pliki. Wirusy cz臋sto maj膮 szkodliwe efekty uboczne.).
Zabezpieczenia聽聽Poniewa偶 makra mog膮 zawiera膰 wirusy, podczas ich uruchamiania nale偶y zachowa膰 ostro偶no艣膰. Nale偶y przedsi臋wzi膮膰 nast臋puj膮ce 艣rodki bezpiecze艅stwa: uruchamia膰 na komputerze aktualne oprogramowanie antywirusowe; ustawi膰 poziom zabezpiecze艅 makr na wysoki; wyczy艣ci膰 pole wyboru Ufaj wszystkim zainstalowanym dodatkom i szablonom; u偶ywa膰 podpis贸w cyfrowych; korzysta膰 z listy zaufanych wydawc贸w.
Makra niepodpisane
Makra s膮 automatycznie wy艂膮czane, a plik otwierany.
Makra podpisane
Spos贸b post臋powania z makrami podpisanymi zale偶y od 藕r贸d艂a ich pochodzenia i stanu podpisu聽(podpis cyfrowy: Elektroniczny, szyfrowany, bezpieczny „stempel”, kt贸ry uwierzytelnia makro lub dokument. Podpis ten potwierdza, 偶e makro lub dokument pochodzi od osoby, kt贸ra go podpisa艂a, i nie zosta艂 po drodze zmieniony.).
Makra s膮 automatycznie w艂膮czane, a plik otwierany.
Wy艣wietla si臋 okno dialogowe z informacjami o certyfikacie聽(certyfikat cyfrowy: Za艂膮cznik do pliku, projektu makra lub wiadomo艣ci e-mail, kt贸ry 艣wiadczy o ich autentyczno艣ci, zapewnia bezpieczne szyfrowanie i weryfikowalny podpis. Aby podpisywa膰 cyfrowo projekty makr, trzeba zainstalowa膰 certyfikat cyfrowy.). Makra mog膮 zosta膰 w艂膮czone, je艣li u偶ytkownik zdecyduje, 偶e ma zaufanie do autora i urz臋du certyfikacji. Administrator sieci mo偶e zablokowa膰 list臋 zaufanych 藕r贸de艂, uniemo偶liwiaj膮c dodawanie do niej nowych projektant贸w, a w konsekwencji w艂膮czanie makr.
U偶ytkownik zostaje ostrze偶ony o mo偶liwo艣ci wyst膮pienia wirusa. Makra s膮 automatycznie wy艂膮czane.
U偶ytkownik zostaje ostrze偶ony o niemo偶liwo艣ci sprawdzenia poprawno艣ci podpisu. Makra s膮 automatycznie wy艂膮czane.
U偶ytkownik zostaje ostrze偶ony o wyga艣ni臋ciu lub odwo艂aniu wa偶no艣ci podpisu. Makra s膮 automatycznie wy艂膮czane.
Makra niepodpisane
U偶ytkownik jest monitowany o w艂膮czenie lub wy艂膮czenie makr.
Makra podpisane
Spos贸b post臋powania z makrami podpisanymi zale偶y od 藕r贸d艂a ich pochodzenia i stanu podpisu聽(podpis cyfrowy: Elektroniczny, szyfrowany, bezpieczny „stempel”, kt贸ry uwierzytelnia makro lub dokument. Podpis ten potwierdza, 偶e makro lub dokument pochodzi od osoby, kt贸ra go podpisa艂a, i nie zosta艂 po drodze zmieniony.).
Makra s膮 automatycznie w艂膮czane, a plik otwierany.
Wy艣wietla si臋 okno dialogowe z informacjami o certyfikacie. U偶ytkownik jest monitowany o w艂膮czenie lub wy艂膮czenie makr. U偶ytkownik mo偶e zadecydowa膰, czy ufa autorowi i urz臋dowi certyfikacji.
U偶ytkownik zostaje ostrze偶ony o mo偶liwo艣ci wyst膮pienia wirusa. Makra s膮 automatycznie wy艂膮czane.
U偶ytkownik zostaje ostrze偶ony o niemo偶liwo艣ci sprawdzenia poprawno艣ci podpisu. U偶ytkownik jest monitowany o w艂膮czenie lub wy艂膮czenie makr.
U偶ytkownik zostaje ostrze偶ony o wyga艣ni臋ciu lub odwo艂aniu wa偶no艣ci podpisu. U偶ytkownik jest monitowany o w艂膮czenie lub wy艂膮czenie makr.
Po ustawieniu niskiego poziomu zabezpiecze艅 wszystkie makra s膮 traktowane identycznie, niezale偶nie od pochodzenia lub stanu certyfikatu. Przy niskim poziomie zabezpiecze艅 nie pojawiaj膮 si臋 monity ani nie jest przeprowadzane sprawdzanie poprawno艣ci podpisu, a makra s膮 automatycznie w艂膮czane. Mo偶na korzysta膰 z tego ustawienia wy艂膮cznie wtedy, gdy wszystkie makra znajduj膮ce si臋 w plikach na pewno pochodz膮 z zaufanych 藕r贸de艂.
Uwaga聽聽W pakiecie Microsoft Office 2003 lub nowszym sk艂adnik sprawdza wszystkie pliki XML maj膮ce odwo艂ania do plik贸w XSL zawieraj膮cych skrypt, kt贸ry mo偶e by膰 niebezpieczny. Je艣li jest ustawiony wysoki poziom zabezpiecze艅 makr, skrypt jest wy艂膮czony. Je艣li jest ustawiony 艣redni poziom zabezpiecze艅 makr, u偶ytkownik jest pytany, czy skrypt w plikach XSL ma by膰 uruchomiony. Je艣li jest ustawiony niski poziom zabezpiecze艅 makr, skrypt jest uruchamiany.
Makra — informacje
Dotyczy: Microsoft Office Excel 2003
聽
Je艣li jakie艣 zadania s膮 cz臋sto powtarzane w programie Microsoft Excel, to mo偶na zautomatyzowa膰 ich wykonywanie za pomoc膮 makra. Makro jest seri膮 polece艅 i funkcji聽(funkcja: Uprzednio napisana formu艂a, kt贸ra pobiera warto艣膰 lub warto艣ci, przeprowadza operacj臋 i zwraca warto艣膰 lub warto艣ci. Funkcje upraszczaj膮 i skracaj膮 formu艂y u偶ywane w arkuszu, szczeg贸lnie te, kt贸re przeprowadzaj膮 d艂ugie lub z艂o偶one obliczenia.) przechowywanych w module聽(modu艂: Kolekcja deklaracji, instrukcji i procedur, kt贸re s膮 przechowywane razem jako nazwana jednostka. Istniej膮 dwa typy modu艂贸w: modu艂y standardowe i modu艂y klas.) j臋zyka Microsoft Visual Basic i mo偶e by膰 uruchomione zawsze, gdy trzeba wykona膰 dane zadania.
Na przyk艂ad je偶eli do kom贸rek cz臋sto s膮 wprowadzane d艂ugie ci膮gi tekstowe, to mo偶na utworzy膰 makro tak formatuj膮ce kom贸rki, aby znajduj膮cy si臋 w nich tekst by艂 zawijany.
Rejestrowanie makr聽聽 Podczas rejestrowania makra program Excel przechowuje informacje o ka偶dym kroku wykonanym przez u偶ytkownika u偶ywaj膮cego serii polece艅. Nast臋pnie mo偶na uruchomi膰 makro, aby powt贸rzy膰 lub „odtworzy膰” polecenia. Po pope艂nieniu b艂臋du podczas rejestrowania makra korekty wprowadzane przez u偶ytkownika s膮 r贸wnie偶 rejestrowane. J臋zyk Visual Basic聽(Visual Basic: J臋zyk programowania wysokiego poziomu b臋d膮cy wizualn膮 wersj膮 j臋zyka Basic. J臋zyk Visual Basic zosta艂 opracowany przez firm臋 Microsoft i s艂u偶y do budowania aplikacji systemu Windows.) przechowuje ka偶de makro w nowym module do艂膮czonym do skoroszytu.
Konfigurowanie makra, aby mo偶na je by艂o 艂atwo uruchamia膰聽聽聽聽聽 Mo偶na uruchomi膰 makro, wybieraj膮c je z listy wy艣wietlanej w oknie dialogowym Makro. Aby makro uruchamia艂o si臋 zawsze po klikni臋ciu okre艣lonego przycisku lub naci艣ni臋ciu kombinacji klawiszy, mo偶na przypisa膰 je do przycisku paska narz臋dzi, klawisza skr贸tu聽(klawisz skr贸tu: Klawisz funkcji lub kombinacja klawiszy, na przyk艂ad F5 lub CTRL+A, kt贸rej mo偶na u偶y膰, aby wykona膰 polecenie menu. W odr贸偶nieniu od niego klawisz dost臋pu jest kombinacj膮 klawiszy, na przyk艂ad ALT+F, kt贸ra przenosi fokus na menu, polecenie lub formant.) lub obiektu graficznego umieszczonego w arkuszu.
Zarz膮dzanie makrami聽聽聽聽聽 Po zarejestrowaniu makra mo偶na przegl膮da膰 jego kod, u偶ywaj膮c Edytora Visual Basic聽(Edytor Microsoft Visual Basic: 艢rodowisko, w kt贸rym mo偶na edytowa膰 zarejestrowane makra oraz pisa膰 nowe makra i programy w j臋zyku Visual Basic for Applications.) w celu korygowania b艂臋d贸w lub zmieniania czynno艣ci wykonywanych przez makro. Na przyk艂ad je偶eli makro zawijaj膮ce tekst w kom贸rce ma go tak偶e pogrubia膰, to mo偶na zarejestrowa膰 makro s艂u偶膮ce do pogrubiania tekstu, a nast臋pnie skopiowa膰 jego instrukcje do makra zawijaj膮cego tekst w kom贸rce.
Edytor Visual Basic to program, kt贸ry zosta艂 tak zaprojektowany, aby u艂atwia膰 wpisywanie i edytowanie kodu makr pocz膮tkuj膮cym u偶ytkownikom i zapewnia膰 obszern膮 Pomoc w trybie online. Aby wprowadza膰 proste zmiany w makrach, nie trzeba zna膰 metod programowania ani u偶ywania j臋zyka Visual Basic. Korzystaj膮c z Edytora Visual Basic, mo偶na edytowa膰 makra, kopiowa膰 je z jednego modu艂u do innego, kopiowa膰 makra z jednego skoroszytu do innego, zmienia膰 nazwy modu艂贸w, w kt贸rych s膮 przechowywane makra lub zmienia膰 nazwy makr.
Bezpiecze艅stwo makr聽聽聽聽聽 Program Excel zapewnia pomoc w ochronie przed wirusami聽(wirus: Program komputerowy lub makro, kt贸re „zara偶a” pliki komputerowe przez wstawienie do tych plik贸w swojej kopii. Gdy zara偶ony plik zostanie za艂adowany do pami臋ci, wirus mo偶e zarazi膰 inne pliki. Wirusy cz臋sto maj膮 szkodliwe efekty uboczne.), kt贸re mog膮 by膰 przenoszone w makrach. Makra udost臋pniane innym u偶ytkownikom mo偶na podpisywa膰 za pomoc膮 podpisu cyfrowego聽(podpis cyfrowy: Elektroniczny, szyfrowany, bezpieczny „stempel”, kt贸ry uwierzytelnia makro lub dokument. Podpis ten potwierdza, 偶e makro lub dokument pochodzi od osoby, kt贸ra go podpisa艂a, i nie zosta艂 po drodze zmieniony.), aby mogli oni sprawdzi膰, 偶e makra pochodz膮 z wiarygodnego 藕r贸d艂a. Za ka偶dym razem podczas otwierania skoroszytu zawieraj膮cego makra mo偶na zweryfikowa膰 藕r贸d艂o pochodzenia makr przed w艂膮czeniem ich.
Kopiowanie modu艂u makra do innego skoroszytu
Dotyczy: Microsoft Office Excel 2003
聽
Ustaw poziom zabezpiecze艅 na 艢redni.
W menu Narz臋dzia kliknij polecenie Opcje.
Kliknij kart臋 Zabezpieczenia.
W obszarze Zabezpieczenia makr kliknij przycisk Bezpiecze艅stwo makr.
Kliknij kart臋 Poziom zabezpiecze艅, a nast臋pnie wybierz 偶膮dany poziom zabezpiecze艅.
W menu Narz臋dzia wska偶 polecenie Makro, a nast臋pnie kliknij polecenie Edytor Visual Basic.
W menu Widok kliknij polecenie Eksplorator projektu
.
Przeci膮gnij modu艂, kt贸ry chcesz skopiowa膰, do skoroszytu docelowego.