Na początku wpiszmy jakiś tekst dowolny (jeśli nic ci nie przychodzi do głowy to skopiuj zamieszczony tu plik z tekstem, plik zip, plik rar). Aby najłatwiej utworzyć nowe makro należy przejść do menu -narzędzia- (Alt+N) -Makro...- (Alt+M) i wybrać -zarejestruj nowe makro- plik z tekstem, plik zip, plik rar). Aby najłatwiej utworzyć nowe makro należy przejść do menu-narzędzia- (Alt+N) -Makro...- (Alt+M) i wybrać -zarejestruj nowe makro- ![]() ![]()
lub (jeśli nie jest już włączony) uruchomić pasek narzędzi Visual Basic a następnie przycisnąć przycisk -zarejestruj makro-. ![]() ![]() Naciskamy przycisk klawiatura i w tym momencie otwiera się okno -Dostosuj klawiaturę. ![]() W tym momencie Visual Basic zaczął rejestrować nasze makro. W jakimś miejscu na stronie powinien być widoczny pasek -Zatrzymaj rejestrowanie- ![]() Aby makro miało jakąś wartość użytkową powinno być uruchamiane wielokrotnie. Jak pamiętacie zapisaliśmy makro jako skrót klawiaturowy alt+control+Shift+M. Dlatego teraz zmienimy formatowanie tekstu napisanego poprzednio na inne np. jego rozmiar, kolor oraz formatowanie z kursywy na normalne. Teraz zaznaczymy cały tekst (lub dowolną jego Cześć) i uruchamiamy makro przez naciśnięcie Alt +Control+Shift+M i oglądamy efekty. Jeśli jeszcze tego nie sprawdziliście to informuję teraz to makro działa tylko w obrębie pliku w którym jest zapisane. Aby makro było widoczne z każdego pliku w Wordzie należy zapisać je w szablonie Normal.dot. W tym celu należy powtórzyć cały poprzedni paragraf zmieniając tylko w dwóch miejscach nazwę naszego pliku na Normal. Jednak przestrzegam przed jakimi kolwiek zmianami na nie swoim komputerze nie każdy lubi dodatkowe makra i nie każdy radzi sobie z ich usunięciem. Jak zauważyliśmy zapisane makro zmienia wszystkie parametry naszego tekstu a nie zawsze na tym nam zależy. Czasami chcieli byśmy aby makro np. tylko pogrubiało i zmieniało na kursywę bez zmiany wielkości liter. Wyobraźmy sobie dokument z tekstem źródłowym który ma być zapisany kursywą pierwsza część tego tekstu jest napisana Arialem a druga inną czcionką. Aby zabezpieczyć się przed niechcianymi zmianami w tekście należałoby jakoś zmodyfikować makro dostosowując je do swoich potrzeb. W tym celu przejdziemy do edytora VBA który umożliwia pełną kontrolę nad naszymi makrami. Aby się tam dostać naciskamy Alt+[F11] lub w menu -narzędzia- wybieramy -makro- edytor -Visual Basic-. Uruchomiona aplikacja jest częścią pakietu Office. ![]() W lewej części okna VBA można znaleźć okno eksploratora obiektów i widoczne co najmniej dwie główne gałęzie. Pierwsza to normal druga dotyczy naszego projektu. Aby zmienić nasze makro otwieramy gałąź naszego projektu (+) i folder Moduły. Znajduje się w nim obiekt NewMacros. Po jego otwarciu widzimy zapisane makro a w nim parametry czcionki aby zrezygnować z niektórych należy je po prostu linijka po linijce usunąć (tutaj zachęcam do eksperymentów - jeśli próbujemy na niepotrzebnym tekście raczej nic złego nam nie grozi) lub też zmienić by spełniały nasze potrzeby. Całą powyższą operację można przeprowadzić inaczej kiedy tworzymy makro zamiast zagłębiać się w menu -format- możemy dokonać zmiany podstawowych parametrów z paska narzędzi. W tym układzie makro będzie zmieniać tylko zadane parametry (ale to jest mało ekscytujące:)). Wielu w tym miejscu powie, że nie warto dla takich celów tworzyć makra, wystarczy wprowadzić nowy styl. Oczywiście mają oni rację. Przykład ten ma jednak na celu zobrazowanie sposobów posługiwania się rejestratorem makr oraz Edytorem VBA. Na zakończenie kilka ostrzeżeń. Od wejścia Office 97 zanim uruchomimy jakiś plik z makrem wyświetla się informacja, że plik owy je zawiera. Radzę w tym miejscu dla większości plików nieznanego pochodzenia, lub dla takich które nie wymagają jego uruchomienia wybrać domyślną opcję nie uruchamiania. Plik najczęściej jest czytelny nawet bez makr. Dokumenty Office jak niektórzy wiedzą mogą zawierać wirusy makrowe, są to najczęściej niebezpieczne "żyjątka", które kopiują się często do normal.dot zakażając cały system. W najlepszym razie po uruchomieniu wirusa makr może się okazać, że nie można już pracować w Wordzie lub co gorsza nie można w ogóle uruchomić komputera. Jeszcze kilka słów o usuwaniu makr z systemu. Aby usunąć makro należy w oknie eksploratora obiektów nacisnąć prawym klawiszem myszki na NewMacros i wybrać usuń makro następnie Nie i gotowe. W następnej aktualizacji trochę więcej o makrach i nie tylko |
Kiedy otwieramy makro w edytorze Visual Basica zobaczymy poniższy kod (w przykładzie ponumerowałem linie w celu lepszego zrozumienia) Linie - 2 do 5 otwierane są przez symbol - ' - ,oznacza on rozpoczęcie notatki. Za takim znakiem można umieszczać dowolny tekst który nie zostanie zinterpretowany przez Visual Basica (w edytorze tekst ten jest oznaczony kolorem zielonym). Innym sposobem wprowadzenia notatki jest użycie komendy REM (ze spacją). Linia - 6 otwiera komenda With służy ona do skrócenia ilości tekstu odwołującego się do kilku właściwości tego samego obiektu jej składnia wygląda tak Można by to zobrazować w ten sposób obiekt samochód ma w sobie obiekt koło którego pod obiektem jest opona a jej właściwością jest tutaj np. stopień napompowania o jakieś wartości - samochód.koło.opona.ciśnienieniewoponie=20. Linie - 7 do 28 określają konkretne właściwości obiektu Select.Font. Obiekt ten po prostu oznacza "zaznaczony.tekst" i tak własność: - Name - to nazwa czcionki (każda wartość w postaci tekstu powinna być obięta cudzysłowiem), - Size - wielkość czcionki, - Bold - przyjmuje dwie wartości True albo False (można też wpisać 1lub 0). True oznacza tutaj potwierdzenie (czcionka pogrubiona) False negacje (czcionka bez pogrubienia). - Italic - określa czy czcionka ma być pisana kursywą - Underline to sposób podkreślenia i może on przyjmować wartości wdUnderlineNone (brak podkreślenia), wdUnderlineDash, wdUnderlineDotDash, wdUnderlineDotDotDash, wdUnderlineThick, wdUnderlineDotted, wdUnderlineDouble, wdUnderlineSingle, wdUnderlineWords, wdUnderlineWavy jak widać są to wartości zdefiniowane dlatego nie należy ich umieszczać w cudzysłowie podobnie jak słowa True i False. (zamiast nich można użyć liczb od 0 do 11 gdzie 0 to brak podkreślenia) - Outline - (opisze przy najbliższej okazji) - Emboss - (opisze przy najbliższej okazji) - Shadow - (opisze przy najbliższej okazji) - Hidden - (opisze przy najbliższej okazji) - SmallCaps - (opisze przy najbliższej okazji) - AllCaps - (opisze przy najbliższej okazji) - ColorIndex - kolor czcionki morze przyjmować wartości wdAuto, wdBlack, wdBlue, wdBrightGreen, wdDarkBlue, wdDarkRed, wdDarkYellow, wdGray25, wdGray50, wdGreen, wdNoHighlight, wdPink, wdRed, wdTeal, wdTurquoise, wdViolet, wdWhite, wdYellow (zamiast nich można użyć liczb od 0 do 16 gdzie 0 to kolor auto zazwyczaj czarny). Jak widać możemy użyć 16 kolorów czcionki. - Engrave - (opisze przy najbliższej okazji) - Superscript - (opisze przy najbliższej okazji) - Subscript - (opisze przy najbliższej okazji) - Spacing - (opisze przy najbliższej okazji) - Scaling - (opisze przy najbliższej okazji) - Kerning - (opisze przy najbliższej okazji) - Animation - sposób animacji morze przyjmować wartości wdAnimationBlinkingBackground, wdAnimationLasVegasLights, wdAnimationMarchingBlackAnts, wdAnimationMarchingRedAnts, wdAnimationNone, wdAnimationShimmer, wdAnimationSparkleText (zamiast nich można użyć liczb od 0 do 6 gdzie 0 to brak efektu) Ostatnia linia 30 zamyka procedure Puchatek Naszym następnym zadaniem będzie takie przetworzenie kodu aby za każdym zastosowaniem makra uzyskać inny efekt animacji w tym celu będziemy musieli wygenerować liczbę losową. W Visual Basicu służy do tego funkcje Rnd. Funkcje są w pewnym sensie podobna do procedur (np. Procedury Puchatek) ale potrafą zwracać wartości. Funkcja Rnd pozwala na wygenerowanie liczby losowej z większej lub równej od 0 ale mniejszej od 1. Jej składnia wygląda następująco Rnd[(liczba)] (liczba jest argumentem opcjonalnym i określa sposób w jaki liczba jest generowana). W celu zainicjowania generatora należy użyć funkcji Randomize[(liczba)] (podobnie jak wyżej w funkcji Rnd wartość liczba jest tutaj opcjonalna gdy nie użyje się żadnej liczby to Randomize przekarze generatorowi liczb losowych wartość "ziarna" pochodzącą z zegara systemowego). Aby uzyskać efekt różnych animacji potrzebujemy liczby z przedziału od 1 do 6 a jak wiemy generator pozwala uzyskać liczby z przedziału od 0 do 1 dlatego trzeba napisać komendę która umożliwi rozszerzenie jego możliwości: Int((wartość_największa_przedziału - wartość_najmniejsza_przedziału + 1) * Rnd + wartość_najmniejsza_aprzedziału). I tutaj poznajemy nową funkcje - Int . Jej składnia jest następująca Int[(liczba)]. funkcja ta odrzuca wartość całkowitą argumentu liczba i ją zwraca (jak widać wartością liczba jest tu działanie ((wartość_największa_przedziału - wartość_najmniejsza_przedziału + 1) * Rnd + wartość_najmniejsza_przedziału) w którym wartość_najmniejsza_przedziału to najmniejsza z potrzebnych liczb a wartość_największa_przedzału to największa z potrzebnych liczb). Dla naszego przykładu funkcja ta będzie miała następującą postać: Int((6-1+1)*Rnd+1) tą zależność umieścimy teraz w naszym makrze Puchatek, ale żeby ograniczyć działanie makra do zmiany tylko efektu animacji usuniemy z niego niepotrzebne elementy tak aby miało ono postać: Podczas wpisywania danych w naszym module edytor VBA pokazuje nam domyślne wartości jakich oczekuje dla danej funkcji jest to często bardzo przydatna cecha dzięki której można ograniczyć bardzo wiele błędów. Inną jego cechą VB jest nie rozróżnialność wielkości liter kodu. W następnych lekcjach zajmiemy się tworzeniem formularzy oraz okienek uruchomieniowych |