Instalacja i uruchamianie makr
Artykuł dotyczy: Microsoft Outlook 2000/2002/2003
Rys.1 Edytor Visual Basic w programie Microsoft Office Outlook.
Sub CreateHTMLMail()
Dim oMail As MailItem Set oMail = Application.CreateItem(olMailItem)
oMail.HTMLBody = "<b>Witam</b>, <br>to jest treść wiadomości" oMail.Subject = "Test HTML" oMail.Save
End Sub
Rys.2 Uruchamianie makra.
1. W menu wybierz "Narzędzia | Dostosuj".
2. Przejdź do zakładki "Paski narzędzi" i kliknij "Nowy".
3. Podaj nazwę nowego paska narzędzi (np. "Makra") i kliknij OK (rys.3).
4. Nie zamykaj okna "Dostosowywanie" - będzie nam jeszcze potrzebne.
Utworzony i wyświetlony zostanie nowy pusty pasek narzędzi.
Rys.3 Tworzenie nowego paska narzędzi.
1. Na dialogu "Dostosowywanie" przejdź do zakładki "Polecenia".
2. Na liście "Kategorie" wybierz "Makra".
3. Na liście "Polecenia" zaznacz makro o nazwie "Project1.CreateHTMLMail" i przeciągnij je myszką na pasek narzędzi "Makra" (rys.4). Makro możesz przeciągnąć również na jeden ze standardowych pasków narzędzi, a nawet umieścić je w którymś z menu Outlook'a. Jeśli makro zostało umieszczone w module "ThisOutlookSession", jego nazwa będzie wyglądać następująco "Project1.ThisOutlookSession.CreateHTMLMail". Jeśli na liście nie widzisz makra, uruchom ponownie Outlook'a i powróć do tego kroku.
Rys.4 Tworzenie nowego przycisku na pasku narzędzi.
4. Teraz kliknij prawym klawiszem myszy na utworzonym właśnie przycisku makra na pasku narzędzi (rys.5). Wyświetlone zostanie menu, które zawiera opcje umożliwiające edycję wyglądu przycisku. Przede wszystkim będziemy chcieli zmienić jego nazwę na nieco krótszą. W menu kliknij na pole edycji znajdujące się obok pozycji "Nazwa" i wpisz samą nazwę makra, czyli "CreateHTMLMail". Wciśnij Enter, aby zatwierdzić zmianę.
Rys.5 Edycja właściwości przycisku na pasku narzędzi.
5. Teraz zmieńmy również ikonę przycisku. Użyjmy ikony wiadomości, która znajduje się na przycisku "Nowy" na standardowym pasku narzędzi: a) W tym celu najpierw musimy wykonać zrzut ekranu wciskając Alt+PrintScreen.
b) Otwórz program Paint i wklej zawartość schowka wybierając Ctrl+V.
c) Zaznacz ikonę wiadomości używając narzędzia "Zaznacz". Zaznaczenie powinno mieć dokładnie rozmiar 16 na 16 pikseli, w przeciwnym wypadku ikona zostanie automatycznie rozciągnięta do takiego rozmiaru i będzie źle wyglądać.
d) Skopiuj zaznaczenie do schowka.
e) Przejdź z powrotem do programu Outlook i kliknij prawym klawiszem myszy na przycisku makra na pasku narzędzi (okno "Dostosowywanie" powinno być cały czas otwarte). Z menu wybierz polecenie "Wklej obraz przycisku". Ikona przycisku powinna zamienić się na obrazek zaznaczony w programie Paint.
f) Teraz możesz zamknąć dialog "Dostosowywanie".
Rys.6 Nowy pasek narzędzi z przyciskiem "CreateHTMLMail".
Rys.7 Ostrzeżenie o uruchamianiu makra wyświetlane przy średnim poziomie zabezpieczeń.
Rys.8 Ustawianie poziomu zabezpieczeń makr.
Jeśli masz jakieś pytania lub komentarze dotyczące tego artykułu, napisz na forum lub wyślij do nas e-maila. Słowa kluczowe: Makro dla Microsoft Office Outlook 2000/2003/2007, macro, instalacja makra, jak zainstalować makro, uruchamianie makr, jak uruchomić makro. Instalowanie makra, edytor Visual Basic, VisualBasic, Visual Basic for Applications Outlook. |
Jeśli pewne zadanie w programie Microsoft Word jest często wykonywane, można je zautomatyzować, stosując makro. Makro jest ciągiem poleceń i instrukcji programu Word, działającym i uruchamianym podobnie jak pojedyncze polecenie, służącym do automatycznego wykonania określonego zadania.
Oto kilka typowych zastosowań makr:
Przyspieszenie czynności związanych z edycją i formatowaniem
Połączenie kilku poleceń, na przykład wstawianie tabeli o określonym rozmiarze i obramowaniu oraz o określonej liczbie wierszy i kolumn
Ułatwienie dostępu do opcji znajdujących się w określonym oknie dialogowym
Automatyzacja serii zadań złożonych
W programie Word można tworzyć makra na dwa sposoby: za pomocą rejestratora makr oraz przy użyciu Edytora Visual Basic (Edytor Visual Basic: Środowisko, w którym można pisać nowy i edytować istniejący kod i procedury języka Visual Basic for Applications. Edytor Visual Basic zawiera pełny zestaw narzędzi debugowania, który ułatwia znajdowanie w kodzie błędów składni, wykonania i błędów logicznych.).
Rejestrator makr w programie Word działa jak rejestrator taśmowy. Rejestruje on naciśnięcia klawiszy i kliknięcia myszy, tłumacząc je na kod języka Microsoft Visual Basic for Applications (VBA: Język makr, który jest wersją języka Microsoft Visual Basic. Służy on do programowania aplikacji systemu Windows i jest dołączony do kilku aplikacji firmy Microsoft.). Podczas rejestrowania makra można używać myszy do klikania poleceń i opcji, ale nie do zaznaczanie tekstu. Aby zarejestrować te akcje, należy użyć klawiatury. Na przykład można użyć klawisza F8 w celu zaznaczenia tekstu i nacisnąć klawisz END, aby przenieść kursor na koniec wiersza.
Przed zarejestrowaniem makra należy zaplanować poszczególne czynności i polecenia, które makro ma wykonywać.
Jeśli podczas rejestracji zostanie popełniony błąd, wszelkie próby naprawienia go również zostaną zarejestrowane. Później można dokonać edycji makra w celu usunięcia niepotrzebnie zarejestrowanych czynności.
Należy spróbować przewidzieć, jakie komunikaty może wyświetlić program Word, ponieważ mogą one wstrzymać działanie makra.
Jeśli makro zawiera polecenie Znajdź lub polecenie Zamień z menu Edycja, na karcie Znajdź lub Zamień kliknij przycisk Więcej, a następnie w polu Wyszukaj kliknij pozycję Wszędzie. Jeśli wyszukiwanie jest dokonywane tylko w dół lub tylko w górę dokumentu, po napotkaniu początku lub końca dokumentu makro jest zatrzymywane i wyświetlany jest komunikat z zapytaniem, czy kontynuować wyszukiwanie.
Jeśli rejestrowane makro ma być również stosowane w innych dokumentach, należy się upewnić, że działanie makra nie jest uzależnione od zawartości bieżącego dokumentu.
Jeśli określone makro jest często wykonywane, przypisz je do przycisku paska narzędzi, menu lub klawisza skrótu. Umożliwia to bezpośrednie uruchamianie makra bez konieczności otwierania okna dialogowego Makra.
Do tworzenia bardzo elastycznych i skomplikowanych makr zawierających instrukcje Visual Basic, których nie można nagrać, można zastosować Edytor Visual Basic.
Podczas stosowania Edytora Visual Basic można skorzystać z dodatkowej pomocy, takiej jak informacje o obiektach (obiekt: Tabela, wykres, grafika, równanie lub inna forma informacji. Obiekty utworzone w jednej aplikacji, na przykład arkusze kalkulacyjne, a także połączone z inną aplikacją lub w niej osadzone nazywane są obiektami OLE.) i właściwościach (właściwość: Nazwany atrybut formantu, pola lub obiektu, który ustawia się w celu określenia jednej cechy obiektu (takiej jak rozmiar, kolor lub położenie na ekranie) albo aspektu jego działania (na przykład, czy obiekt jest ukryty).).
Aby uzyskać szybki dostęp do utworzonego makra, można je przypisać do paska narzędzi (pasek narzędzi: Pasek zawierający przyciski i opcje używane do wywoływania poleceń. Aby wyświetlić pasek narzędzi, należy kliknąć polecenie <b>Dostosuj</b> w menu <b>Narzędzia</b>, a następnie kliknąć kartę <b>Paski narzędzi</b>.), menu (menu: Lista poleceń wyświetlana po kliknięciu nazwy menu na pasku menu lub innym pasku narzędzi.) lub klawiszy skrótów (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.). Aby uruchomić makro, wystarczy tylko kliknąć przycisk na pasku narzędzi lub polecenie menu bądź też nacisnąć klawisz skrótu.
Jeśli nowo utworzone makro będzie miało taką samą nazwę, co już istniejące, wbudowane polecenie programu Word, akcje nowego makra zastąpią akcje wbudowanego polecenia. Na przykład jeśli nowe makro zostanie zarejestrowane i nazwane ZamknijPlik, to zostanie przypisane do polecenia Zamknij. Po wybraniu polecenia Zamknij zostaną wykonane akcje zarejestrowane w nowym makrze.
Uwaga W przypadku popełnienia pomyłki należy po prostu usunąć nowo utworzone makro i zarejestrować je ponownie pod nową nazwą. We wbudowanym poleceniu pozostaną oryginalne akcje.
Makra mogą być przechowywane w szablonach (szablon: Plik lub pliki zawierające strukturę i narzędzia do nadawania ostatecznych kształtów takim elementom, jak styl i układ strony ukończonych plików. Na przykład szablony programu Word mogą nadawać kształt pojedynczemu dokumentowi, a szablony programu FrontPage — całej witrynie sieci Web.) lub w dokumentach. Makra są domyślnie przechowywane w szablonie Normal.dot (szablon Normal.dot: Szablon globalny, którego można użyć dla dowolnego typu dokumentu. Szablon ten można zmodyfikować, aby zmienić domyślne formatowanie lub zawartość dokumentu.), tak aby były dostępne w każdym dokumencie programu Word. Jeśli makro ma być zastosowane w jednym dokumencie, należy zapisać je w tym dokumencie. Indywidualne makra w dokumencie są zapisywane w projektach makr (projekt makra: Kolekcja składników, w tym formularzy, kodu i modułów klas, które tworzą makro. Projekty makr utworzone w języku Microsoft Visual Basic for Applications można dołączać do dodatków i do większości programów pakietu Microsoft Office.), które można kopiować z jednego dokumentu do innego.
Aby zautomatyzować zadanie w dokumencie programu Word, który został zapisany oraz opublikowany jako strona sieci Web, zamiast stosowania makra, można użyć kotwicy skryptu (kotwica skryptu: Wizualna reprezentacja skryptu na stronie sieci Web otwartej w programie pakietu Microsoft Office. Kotwice skryptów nie są wyświetlane domyślnie. Różne kotwice skryptów reprezentują skrypty napisane w różnych językach skryptów.) i Edytora skryptów Microsoft (Microsoft Script Editor: Program używany do edytowania tekstu, tagów HTML i dowolnego kodu języka Microsoft Visual Basic Scripting Edition (VBScript) na stronie dostępu do danych. W programie Script Editor można również wyświetlić stronę w takiej postaci, w jakiej będzie się ona pojawiać w przeglądarce sieci Web.).
Zakotwiczenia skryptów oznaczają miejsca, w których mają być zachowane skrypty w dokumencie Word. Po dwukrotnym kliknięciu zakotwiczenia skryptu w dokumencie Word, zostanie uruchomiony edytor skryptów Microsoft, stosowany do programowania lub edycji skryptu. Skrypt zostanie uruchomiony, kiedy strona sieci Web jest wyświetlana w przeglądarce.
|
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.
Aby cofnąć niewłaściwą czynność w makrze, można otworzyć makro w Edytorze Visual Basic (Edytor Visual Basic: Środowisko, w którym można pisać nowy i edytować istniejący kod i procedury języka Visual Basic for Applications. Edytor Visual Basic zawiera pełny zestaw narzędzi debugowania, który ułatwia znajdowanie w kodzie błędów składni, wykonania i błędów logicznych.) i usunąć zbędne polecenia.
Jeśli nie chcesz korzystać z Edytora Visual Basic, zarejestruj makro ponownie nie wykonując niewłaściwej czynności.
Zarejestrowane makro może nie działać prawidłowo w każdej sytuacji. Jeśli makra nie można uruchomić, program Microsoft Word wyświetla komunikat o błędzie. Niektóre makra są zależne od pewnych opcji lub ustawień w programie Word. Na przykład makro wyszukujące tekst ukryty nie będzie działało prawidłowo, jeśli tekst ukryty nie będzie wyświetlony.
Makro, które chcesz uruchomić, może nie pochodzić z zaufanego źródła Jeśli poziom zabezpieczeń jest ustawiony na średni lub wysoki, podczas otwierania pliku lub ładowania dodatku zawierającego podpisane cyfrowo (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, które nie pochodzą z zaufanego źródła, pojawia się ostrzeżenie o makrach. Jeśli masz zaufanie do projektanta makra, dodaj jego nazwę do listy zaufanych źródeł.
Plik może zawierać wirus makra Jeśli plik nie powinien zawierać makra, być może w komputerze istnieje wirus dodający wirus makra do pliku. Należy przeprowadzić kontrolę antywirusową w komputerze i uzyskać niezainfekowaną kopię dokumentu ze źródła.
Makro może znajdować się w pliku pobranym jako strona HTML z witryny sieci Web i otwartym jako plik tymczasowy Jeśli skaner wirusów powiadamia o usunięciu wirusa przy każdym otwarciu pliku, oznacza to, że wirus jest usuwany tylko z pliku tymczasowego, a nie z oryginalnego pliku na serwerze sieci Web. Należy przeprowadzić kontrolę antywirusową w komputerze i powiadomić o problemie obsługę serwera sieci Web.
Plik zawiera bezpieczne makra Jeśli wiadomo, że makra pochodzą z wiarygodnego źródła i są bezpieczne, można im nadać podpisy cyfrowe, a następnie dodać własne nazwisko do listy zaufanych źródeł.
Aby zapobiec wyświetlaniu ostrzeżeń o makrach, dołącz cyfrowy podpis (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.) do każdego projektu makra i dodaj ten podpis do listy zaufanych źródeł. Jeśli makra są już podpisane i chcesz zaufać wszystkim makrom z takim podpisem, dodaj osobę, która podpisała makro, do listy zaufanych źródeł. Dzięki temu ostrzeżenia o makrach nie będą się pojawiały nawet przy ustawieniach zabezpieczeń na poziomie wysokim lub średnim.
Mniej bezpieczną opcją jest zmiana poziomu zabezpieczeń na niski. Przy niskim poziomie zabezpieczeń program Microsoft Word pracuje przy najmniej bezpiecznych ustawieniach. Upewnij się, że powzięte zostały następujące środki ostrożności w celu zmniejszenia ryzyka zainfekowania komputera wirusem makr: uruchom wyspecjalizowane oprogramowanie antywirusowe, które sprawdza, czy pliki i dodatki nie zawierają wirusów makr, aktualizuj to oprogramowanie i upewnij się, że używane makra pochodzą z zaufanych źródeł.
Poziom zabezpieczeń może być ustawiony na niski Aby wyświetlane było ostrzeżenie, że plik lub dodatek zawiera makra, należy zmienić poziom zabezpieczeń na średni.
Być może wybrano wysoki poziom zabezpieczeń, a makra w otwieranym dokumencie nie są podpisane cyfrowo Aby wyświetlane było ostrzeżenie, że plik lub dodatek zawiera makra, które nie są podpisane cyfrowo (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.), należy zmienić poziom zabezpieczeń na średni.
Makro zostało utworzone przez użytkownika lub osobę uznaną przez użytkownika za zaufane źródło W takim przypadku plik zostaje otwarty, a makra włączone. W przypadku utraty zaufania do danego projektanta makr można go usunąć z listy zaufanych źródeł.
Aby ostrzeżenie było wyświetlane za każdym razem, kiedy otwierany dokument lub ładowany dodatek zawiera makra, należy usunąć wszystkie pozycje z listy zaufanych źródeł.
Aby potwierdzić, że makra w pliku były podpisane i aby zobaczyć nazwę źródła pliku:
W menu Narzędzia kliknij polecenie Opcje, a następnie kliknij kartę Zabezpieczenia.
W obszarze Bezpieczeństwo makr kliknij przycisk Zabezpieczenia makr, a następnie kliknij kartę Zaufani wydawcy.
Jeśli dokument jest przeznaczony tylko do odczytu, zmiany w makrach nie mogą być zachowane. Jeśli dokument jest przeznaczony tylko do odczytu, w programie Microsoft Word do nazwy pliku wyświetlanej na pasku tytułu dodawany jest zwrot [Tylko do odczytu].
Jeśli dokument jest przeznaczony tylko do odczytu, nie można zapisać makr, które zostały zarejestrowane w tym dokumencie. Jeśli dokument jest przeznaczony tylko do odczytu, w programie Microsoft Word do nazwy pliku wyświetlanej na pasku tytułu dodawany jest zwrot [Tylko do odczytu].
Jeśli dokument jest przeznaczony tylko do odczytu, nie można zapisać zmian, które są wynikiem wykonywania makr w tym dokumencie. Jeśli dokument jest przeznaczony tylko do odczytu, w programie Microsoft Word do nazwy pliku wyświetlanej na pasku tytułu dodawany jest zwrot (Tylko do odczytu).
Makra WordBasic zapisane w szablonach programu Microsoft Word 6.x lub Microsoft Word 95 są automatycznie konwertowane przez program Microsoft Office Word 2003 na makra w języku Visual Basic for Applications (VBA) (VBA: Język makr, który jest wersją języka Microsoft Visual Basic. Służy on do programowania aplikacji systemu Windows i jest dołączony do kilku aplikacji firmy Microsoft.) podczas pierwszego wykonania jednej z następujących czynności:
Otwierania szablonu.
Tworzenia nowego dokumentu opartego na tym szablonie.
Dołączania szablonu do dokumentu przy użyciu polecenia Szablony i dodatki z menu Narzędzia.
Podczas konwersji makr na pasku stanu wyświetlany jest odpowiedni komunikat. Po zakończeniu konwersji należy zapisać szablon w celu zapisania przekonwertowanych makr. Jeśli szablon nie zostanie zapisany, makra w programie Word zostaną przekonwertowane ponownie podczas następnego otwierania tego szablonu.
Makra zapisane w dokumencie programu Microsoft Word 97, Microsoft Word 2000 lub Microsoft Word 2003 lub w szablonie są już zapisane w języku Visual Basic, dlatego pracują, jakby były napisane w programie Office Word 2003.
Uwaga Po zapisaniu przekształconego makra WordBasic w programie Office Word 2003, nie można uruchomić go w programie Word 6.x ani w programie Word 95, nawet jeśli szablon, w którym makro jest przechowywane zostanie przekonwertowany z powrotem na format Word 6.x lub Word 95.
Makra przechowywane w dokumentach lub szablonach programu Microsoft Word 2000 i Word 2002 działają w dokładnie ten sam sposób w programie Office Word 2003— nie jest wymagana jakakolwiek konwersja.
Makra przechowywane w dokumentach i szablonach programu Office Word 2003 również działają identycznie w programie Word 2000 i Word 2002, chyba że zawierają metody i właściwości, które zostały wprowadzone dopiero w programie Office Word 2003.
Kiedy pasek narzędzi kopiowany jest z jednego szablonu do drugiego za pomocą okna dialogowego Organizator (w menu Narzędzia należy wskazać polecenie Makro, kliknąć polecenie Makra, a następnie kliknąć przycisk Organizator) makra przypisane do przycisków na pasku narzędzi nie są kopiowane razem z nim w programie Microsoft Word. Makra należy skopiować oddzielnie, również za pomocą okna dialogowego Organizator.
|
To wcale nie jest trudne, a im dalej w las tym bardziej satysfakcjonujące.
Załóżmy, że potrzebujemy funkcji obliczającej obwód koła. Wiadomo wzór to "2*Pi*R".
Wiemy też, że 2 oraz Pi są stałymi, zmienia się R. A więc do dzieła!
Otwieramy nowy arkusz excela, wybieramy z menu: "narzędzia/makra/Edytor Visula Basic", otworzy nam się okno jak poniżej:
Lewe okno to okno eksploratora projektu. Upewnijmy się, że aktywny jest zeszyt w którym tworzymy funkcję (kliknijmy dwa razy na jego nazwę w eksploratorze, nazwa zeszytu pojawi się w nagłówku edytora), a następnie wstawmy moduł makr - menu: "insert/module". Moduł to taki arkusz w którym są przechowywane makra.
Kliknijmy dwukrotnie na nasz moduł - szare okno z prawej - okno edycji - przybieże biały kolor. Wpiszmy tam następujący kod:
Public Function obwodkola(R)
Pi = 3.1415926535
obwodkola = 2 * Pi * R
End Function
Jeżeli nie jesteś pewien jak to powinno wyglądać kliknij tutaj.
Pierwsza linia kodu (a dokładniej wyrażenie "Public Function") to instrukcja inicjująca funkcję, "obwodkola" to nazwa funkcji, oczywiście ta nazwa może być dowolna. (No, ale jeżeli tę funkcję nazwalibyśmy "jasimalgosia" to z kołem jakoś niekoniecznie mogłoby się nam skojarzyć.) Litera w nawiasie to argument funkcji, może być ich więcej - wtedy należyć oddzielać je przecinkami.
Ostatnia linia kodu to deklaracja końca funkcji.
Co się dzieje w środku? Druga linia przypisuje stałej "Pi" określoną wartość. I ponownie: to wcale nie musi być "Pi", może być np. "promień".
Trzecia linia kodu oblicza wartość naszej funkcji zgodnie ze wzorem na obwód koła, tutaj chyba wszystko jest zrozumiałe.
Wróćmy teraz do excela (możemy zamknąć edytor Visual Basica). W komórce A1 wpiszmy dowolną liczbę, a w komórce A2: "=obwodkola(A1)", kliknijmy enter - jeżeli w komórce A2 pojawiła się liczba, to znaczy, że wszystkie kroki wykonaliśmy poprawnie. Jeżeli ktoś jest niedowiarkiem niech wynik sprawdzi na kalkulatorze. Twoja Pierwsza Funkcja gotowa.
Dodam jeszcze, że napisana przez nas funkcja jest dostępna w grupie funkcji użytkownika w oknie kreatora funkcji.
Jeżeli chcemy zachować efekt naszej pracy zapiszmy nasz skoroszyt - funkcja będzie zawsze dostępna - ale, uwaga! - tylko w tym jednym skoroszycie, tzn. wtedy kiedy skoroszyt jest otwarty. Oczywiście są sposoby udostępniania funkcji użytkownika innym skoroszytom, ale o tym innym razem.
A teraz proste zadanie - w podobny sposób należy przygotować funkcję obliczającą pole trójkąta.
Strona główna > Makra VBA > Podstawy > "Hello World!" i funkcja MsgBox
Klasyczne ćwiczenie. Jeżeli już napisaliśmy naszą pierwszą funkcję to dojdźmy w tej chwili do momentu wstawiania kodu do modułu.
Wpiszmy w module taki kod:
Sub HelloWorld()
MsgBox "Hello World!"
End Sub
Stańmy kursorem wewnątrz kodu i wciśnijmy klawisz F5. Excel wyświetli nam okno z tekstem "Hello World!". Banalne?
"Sub" (subprogram) to procedura wykonująca linię po linii polecenia języka Visual Basic.
Teraz dodamy do arkusza przycisk wywołujący nasz komunikat. Z paska "przybornik formantów" wybierzmy przycisk polecenia (CommandButton) i osadźmy go w dowolnym arkuszu excela (klikamy na przycisk polecenia na pasku, a następnie klikamy w dowolne miejsce arkusza).
Klikamy teraz prawym klawiszem na na nasz przycisk i wybieramy "właściwości". Zmieniamy właściwość "caption" z "CommandButton1" na dowolny opis, np. "Hello World". Napis na przycisku zmieni się na właśnie "Hello World". Zamknijmy okno właściwości.
Ponownie klikamy prawym klawiszem na przycisk i wybieramy "kod". Otworzy się nam okno edytora VBA z początkiem i końcem procedury:
Private Sub CommandButton1_Click()
End Sub
Pomiędzy te dwie linie wpiszmy "HelloWorld" (bez cudzysłowów oczywiście). Zauważmy, że "HelloWorld" to nazwa naszej procedury, którą przygotowaliśmy na początku ćwiczenia (słowo występujące po "Sub"):
Private Sub CommandButton1_Click()
HelloWorld
End Sub
Na pasku "przybornik formantów" wyłączmy jeszcze tryb projektowania (przycisk z ekierką, linijką i ołówkiem). Jeżeli teraz klikniemy utworzony przez na przycisk polecenia to zostanie wyświetlony nasz komunikat "Hello World!".
(c.d. Rozbudowujemy MsgBox)
Funkcję MsgBox z ćwiczenia ""Hello World!" i funkcja MsgBox" możemy trochę przyozdobić.
Po pierwsze można do niej dodać piktogramy: informacyjny, ostrzeżenia, krytyczny i pytający.
Dla przykładu użyjmy piktogram informacyjny, musimy trochę zmienić składnię, gdyż teraz funkcja MsgBox ma więcej niż tylko argument wyświetlający tekst:
Sub HelloWorld()
komunikat = MsgBox("Hello World!", vbInformation)
End Sub
(po wciśnięciu przecinka rozwinie się lista możliwych w tym miejscu parametrów)
Możemy teź sprawić by były wyświetlane przyciski OK i Cancel (anuluj) (zmienna "komunikat przyjmie wtedy wartość "1" jeżeli zostanie wybrany przycisk OK, albo "2" dla Cancel):
Sub HelloWorld()
komunikat = MsgBox("Hello World!", vbInformation+vbOkCancel)
End Sub
Możemy pójść jeszcze dalej i wykorzystać zmienną "komunikat" do sterowania programem (tekst po apostrofie jest komentarzem - cały tekst w linii zaczynający się od apostrofu nie jest interpretowany jako kod programu):
Sub HelloWorld()
komunikat = MsgBox("Hello World!", vbInformation + vbOKCancel)
If komunikat = 1 Then 'jeżeli zostanie wybrany przycisk OK to wyświetl komunikat Dzień Dobry!
MsgBox "Dzień Dobry!"
Else 'w przeciwnym wypadku wyświetl Do widzenia!
MsgBox "Do widzenia!"
End If 'koniec "jeżeli"
End Sub
Ustawienie zabezpieczeń na poziomie średnim powoduje, że będziemy przy każdorazowym otwarciu zeszytu zawierającego makra pytani o uruchomienie makr. Jeżeli chcemy uniknąć tego pytania, a jednocześnie nie chcemy zmieniać poziomu zabezpieczeń, możemy sprawić by excel rozpoznawał autora (np. nas samych) makra jako zaufane źródło i nie pytał nas o to czy makro uruchomić.
Dla Office xp:
Uruchamiamy instalatora pakietu office, zaznaczamy opcję 'dodaj lub usuń funkcje', na nastęnym ekranie rozwijamy gałąź 'Funkcje wspólne pakietu Office' i dla 'Podpis cyfrowy dla projektów VBA' wybieramy 'Uruchamiaj z Mojego komputera'. Program selfcert.exe zostanie zainstalowany w folderze Office10 (zwykle C:\Program Files\Microsoft Office\Office10) i z tej lokalizacji go uruchamiamy.
Dla wersji wcześniejszych:
Program selfcert.exe uruchamiamy bezpośrednio z dysku twardego (powinien zostać zainstalowany w instalacji całego pakietu) lub też kopiujemy go bezpośrednio z dysku instalacyjnego.
Po uruchomieniu programu należy postępować zgodnie z instrukcjami, spowoduje to wygenerowanie certyfikatu. Certyfikat jest przechowywany na naszym komputerze.
Teraz, jeżeli chcemy by nasze makro było rozpoznawane jako pochodzące z zaufanego źródła, należy je "podpisać". W oknie edytora VBA wybieramy "tools/digital signature", a następnie zatwierdzamy podpisanie makra (ewentualnie wybieramy podpis, jeżeli mamy ich kilka). Jeżeli teraz otworzymy ponownie zeszyt z tak podpisanym makrem, excel udostępni nam opcję akceptacji wszystkich makr podpisanych tym certyfikatem. Jeżeli wybierzemy tę opcję od tej chwili makra podpisane tym certyfikatem będą uruchamiane bez standardowego pytania.
Edytor Visual Basic (Edytor Visual Basic: Interfejs języka Visual Basic for Applications, w którym można edytować zarejestrowane makra oraz pisać nowe makra i programy. Aby go otworzyć, w menu <b>Narzędzia</b> wskaż polecenie <b>Makra</b>, a następnie kliknij polecenie <b>Edytor Visual Basic</b>.) umożliwia tworzenie i edytowanie makr dołączonych do projektów programu Microsoft Office Project 2003.
W menu Narzędzia wskaż polecenie Makro, a następnie kliknij polecenie Makra.
Wybierz makro z listy Nazwa makra.
Kliknij przycisk Edytuj.
Wprowadź wymagane zmiany w Edytorze Visual Basic, a następnie kliknij polecenie Zamknij i powróć do programu Microsoft Project w menu Plik.
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.
Uwaga Aby uzyskać informacje na temat pisania i edytowania makr, należy kliknąć polecenie Microsoft Visual Basic — Pomoc w menu Pomoc Edytora
Po co?
Najgorsze w programach są błędy, które nie powodują jego powieszenia, a najwyżej niezamierzone działanie. Czasem długo można szukać błędu. Nie wiadomo gdzie się problem zaczyna, itd.
Tego typu błędy najlepiej wyłapać jak najwcześniej. Jak? Robiąc samosprawdzający się program. Jak? Makrami assert()
Co to?
Makro assert() (z ang. upewnić się) sprawdza podane mu wyrazenie czy jest różne od zera (prawdziwe). Jeśli nie jest — program zostanie zatrzymany, podane zostanie miejsce błędu i wyrażenie, które „nawaliło”.
Jak?
#include <assert.h>
W finalnej wersji programu zdefiniuj NDEBUG dzięki czemu wszystkie makra assert znikną z programu. Można to zrobić przez switch kompilatora (w gcc to jest -DNDEBUG) albo poprostu przez #define NDEBUG
Gdzie?
Wszędzie! Makra assert są usuwane z finalnej wersji programu, więc nic nie szkodzi ich używać w przeogromnych ilościach.
funkcja(void *dane, int dlugosc)
{
assert(dane); // sprawdzi czy wskaznik nie jest NULL (po co komu system z ochroną pamięci? ;)
assert(dlugosc >= 0); // dobrze jest wylapywac kazdy bezsens, ktory moglby powstac w programie
}
select(bla)
{
default:
assert(!„kod nie powinien tu dojsc”); // odpowiednik assert(0).
// program zostanie zawsze zatrzymany. dodatkowa sztuczka polega na tym, ze bedzie mozna odczytac komunikat.
}
Błędne błędy
Nie wstawiaj do makra assert żadnych wyrażeń mających efekt uboczny! np:
assert(a = b+1);
assert(c = d);
assert(e++);
są złe. Obliczenie tego wyrażenia zmieni coś w programie. A wyrażenia wewnątrz makra assert() nie są obliczane w finalnej wersji programu.
Natomiast:
assert(a > b+1);
assert(c == d);
assert(e);
są ok.
Trzeba o tym pamiętać również gdy używa się funkcji wewnątrz makra:
assert(strlen(foo)) - dobrze. niezależnie czy się wywoła funkcje strlen czy nie to program będzie zachowywał się tak samo.
assert(fopen(„plik”,„r”)) - źle. wersja testowa programu będzie próbowała otworzyć plik, a finalna nie.
Gdy już pada
Gdy makro assert natrafi na błąd to zatrzymuje program. Żeby program przed „katapultowaniem się” zwolił pamięć trzeba napisać odpowiednią funkcję i podpiąć ją pod atexit().
Jeśli takie zachowanie jest zbyt drastyczne można napisać własną wersję makra, która np. zapyta czy kontynuować program.
Podsumowując
Warto kod gęsto naszpikować assert()ami, które wyłapią anomalie najczęściej zanim program będzie miał okazję coś popsuć.
PHP
Tak na boku dodam, że PHP ma funkcję assert(). Od odpowiednika w C różni się tym, że całe sprawdzane wyrażenie należy umieścić w (pojedyńczym) cudzysłowiu
Wstęp
PF oferuje kilka sposobów na uproszczenie zestawu reguł. Na początek warto obejrzeć parę dobrych przykładów użycia makr i list. Dodatkowo składnia PF umożliwia używanie skrótów pozwalających na dalsze uproszczenie pliku konfiguracyjnego. W praktyce prostszy zapis reguł jest łatwiejszy do zrozumienia i zarządzania nim.
Makra
Podstawową zaletą makr jest możliwość zastąpienia występujących w pliku konfiguracyjnym adresów IP, numerów portów, nazw interfejsów itp., przez nazwy symboliczne. Jeśli zmieni się adres IP serwera, wystarczy tylko uaktualnić definicję makra, bez konieczności marnowania czasu i energii na znajdywanie i modyfikowanie wszystkich wystąpień tego adresu w zestawie reguł.
Powszechnym zwyczajem w zestawie reguł PF jest definiowanie makra dla każdego interfejsu sieciowego. Za każdym razem gdy karta sieciowa będzie wymieniona na inną, korzystającą z innego sterownika, na przykład wymiana karty firmy 3Com na kartę firmy Intel, wystarczy uaktualnić makrodefinicję i filtr znów będzie pracował. Podobnie sprawa ma się gdy używa się ten sam zestaw reguł na różnych komputerach. Niektóre posiadają inne karty sieciowe, więc użycie makra do określenia interfejsów sieciowych pozwala na zastosowanie tego samego zestawu reguł bez wielkich zmian. Korzystanie z makrodefinicji w plikach konfiguracyjnych do określania adresów IP, nazw interfejsów czy numerów portów jest dobrym nawykiem.
# makrodefinicja dla każdego interfejsu sieciowego
IntIF = "dc0"
ExtIF = "fxp0"
DmzIF = "fxp1"
Inną, szeroko stosowaną, praktyką jest używanie makr do definiowania adresów IP oraz bloków sieci. Takie podejście doskonale obniża ilość modyfikacji, które należy przeprowadzić na zestawie reguł, w przypadku zmiany adresu IP.
# zdefiniowanie sieci
IntNet = "192.168.0.0/24"
ExtAdd = "24.65.13.4"
DmzNet = "10.0.0.0/24"
Za każdym razem gdy wewnętrzna sieć zostanie powiększona lub zmieni się jej adres, wystarczy tylko zaktualizować makro:
IntNet = "{ 192.168.0.0/24, 192.168.1.0/24 }"
Gdy tylko zestaw reguł zostanie przeładowany, wszystko będzie działać jak poprzednio
Listy
Poniższy zestaw reguł, którego umieszczenie we własnym zestawie reguł jest bardzo dobrym rozwiązaniem, blokuje adresy opisane w RFC 1918, z których ruch nigdy nie powinny znaleźć się w Internecie, a jeśli już tak się zdarzy najczęściej powoduje to problemy.
block in quick on tl0 inet from 127.0.0.0/8 to any
block in quick on tl0 inet from 192.168.0.0/16 to any
block in quick on tl0 inet from 172.16.0.0/12 to any
block in quick on tl0 inet from 10.0.0.0/8 to any
block out quick on tl0 inet from any to 127.0.0.0/8
block out quick on tl0 inet from any to 192.168.0.0/16
block out quick on tl0 inet from any to 172.16.0.0/12
block out quick on tl0 inet from any to 10.0.0.0/8
A teraz sposób na uproszczenie powyższego zapisu:
block in &nbsdp;quick on tl0 inet from { 127.0.0.0/8, 192.168.0.0/16, \
172.16.0.0/12, 10.0.0.0/8 } to any
block out quick on tl0 inet from any to { 127.0.0.0/8, \
192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }
W bardzo prosty sposób zestaw reguł z ośmiu linii został zredukowany do dwóch. Jeszcze lepszym rozwiązaniem jest użycie makr w połączeniu z listą:
NoRouteIPs = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8 }"
ExtIF = "tl0"
block in quick on $ExtIF from $NoRouteIPs to any
block out quick on $ExtIF from any to $NoRouteIPs
Należy wziąć pod uwagę, że makrodefinicje i listy upraszczają plik pf.conf, ale jest on później rozwijany przez pfctl(8) w zestaw wielu reguł. Powyższy przykład po rozwinięciu przyjmie następującą postać:
block in quick on tl0 inet from 10.0.0.0/8 to any
block in quick on tl0 inet from 172.16.0.0/12 to any
block in quick on tl0 inet from 192.168.0.0/16 to any
block in quick on tl0 inet from 127.0.0.0/8 to any
block out quick on tl0 inet from any to 10.0.0.0/8
block out quick on tl0 inet from any to 172.16.0.0/12
block out quick on tl0 inet from any to 192.168.0.0/16
block out quick on tl0 inet from any to 127.0.0.0/8
Jak można zobaczyć, rozszerzenia PF są udogodnieniem jedynie dla osoby piszącej i utrzymującej plik pf.conf, natomiast nie jest to uproszczenie reguł sprawdzanych przez pf(4).
Makra mogą być nie tylko pomocą w przypadku adresów i portów, mogą być używane w dowolnym miejscu pliku /etc/pf.conf, np.:
pre = "pass in quick on ep0 inet proto tcp from "
post = "to any port { 80, 6667 } keep state"
# klasa Davida
$pre 21.14.24.80 $post
# dom Nicka
$pre 24.2.74.79 $post
$pre 24.2.74.178 $post
Powyższy zapis zostanie rozwinięty do następującej postaci:
pass in quick on ep0 inet proto tcp from 21.14.24.80 to any \
port = 80 keep state
pass in quick on ep0 inet proto tcp from 21.14.24.80 to any \
port = 6667 keep state
pass in quick on ep0 inet proto tcp from 24.2.74.79 to any \
port = 80 keep state
pass in quick on ep0 inet proto tcp from 24.2.74.79 to any \
port = 6667 keep state
pass in quick on ep0 inet proto tcp from 24.2.74.178 to any \
port = 80 keep state
pass in quick on ep0 inet proto tcp from 24.2.74.178 to any \
port = 6667 keep state
Składnia PF
Składnia PF została jeszcze bardziej dopracowana aby uzyskać większą elastyczność podczas definiowania reguł. PF posiada zdolność wywnioskowania właściwego słowa kluczowego, które nie zostało użyte w sposób bezpośredni podczas definiowania regułki. PF zezwala także na dużą swobodę jeśli chodzi o kolejność używania słów kluczowych, dzięki czemu nie trzeba uczyć się ich na pamięć.
Skracanie regułek
Aby określić politykę "domyślnego blokowania", należało użyć dwóch reguł:
block in all
block out all
Obecnie można skrócić to do jednej:
block all
Kiedy kierunek ruchu pakietów nie jest podany, PF przyjmuje, że chodzi zarówno o datagramy przychodzące jak i wychodzące.
Podobnie, klauzula "from any to any jak i "all" mogą zostać pominięte, np.:
block in on rl0 all
pass in quick log on rl0 proto tcp from any to any port 22 keep state
może zostać uproszczone do:
block in on rl0
pass in quick log on rl0 proto tcp to port 22 keep state
Pierwsza regułka zablokuje ruch wszystkich pakietów przybywających z każdego kierunku i wychodzących w dowolnym kierunku na interfejsie rl0, natomiast druga przepuszcza ruch TCP na porcie 22 na interfejsie rl0.
Uproszczenie regułki return
Zestaw reguł, który zablokuje wszystkie porty, a na wywołanie któregoś z nich odpowie komunikatem TCP RST lub ICPM Unreachable, mógłby wyglądać tak:
block in all
block return-rst in proto tcp all
block return-icmp in proto udp all
block out all
block return-rst out proto tcp all
block return-icmp out proto udp all
Ale może zostać uproszczony do:
block return
Gdy PF natrafi na słowo return, ma już dość informacji aby wysłać właściwą odpowiedź (lub nie udzielić jej wcale), w zależności od protokołu, przy użyciu którego przesyłane były odrzucone pakiety.
Kolejność słów kluczowych
Kolejność, w jakiej wszystkie słowa kluczowe mogą zostać podane, jest w większości przypadków dość swobodna. Regułę można zapisać tak:
pass in log quick on rl0 proto tcp port 22 \
flags S/SA keep state queue ssh label ssh
Albo tak:
pass in quick log on rl0 proto tcp port 22 \
queue ssh keep state label ssh flags S/SA
Inne, podobne kombinacje, będą także działać.
www@openbsd.org
$OpenBSD: shortcuts.html,v 1.20 2007/11/12 20:29:59 saad Exp $
Witaj.
Mimo intensywnego używania excela, praktycznie nie odczułem potrzeby używania makr tego typu. Wyjątek, gdy trzeba pobrać dane z zamkniętego skoroszytu a VBA tego nie potrafi, tylko potwierdza regułę.
Zobacz może
http://support.microsoft.com/default.aspx?scid=kb;pl;143466
limpus
23-05-2006, 19:15
Dziękuję za odpowiedż. Ja niestety jestem tylko amatorem i pisanie makr w tej formie jest dla mnie praktyczniejsze bo używa wiele funcji z podstawowego excela i wystarczy douczyć się parę innych i można pisać makra. VBA trzeba uczyć się od nowa
limpus
QUOTE(Mały_Rycho @ 23-05-2006, 15:14 )
Witaj.
Mimo intensywnego używania excela, praktycznie nie odczułem potrzeby używania makr tego typu. Wyjątek, gdy trzeba pobrać dane z zamkniętego skoroszytu a VBA tego nie potrafi, tylko potwierdza regułę.
Zobacz może
http://support.microsoft.com/default.aspx?scid=kb;pl;143466
[right][snapback]415479[/snapback][/right]
Mały_Rycho
23-05-2006, 22:53
Też jestem amatorem; nie żyję z programowania.
Uważam, że VBA jest prostszy a wsparcie ze strony dobrego edytora połączonego z debugerem nie sposób przecenić.
Kod (makra) w VBA można zarejestrować podczas wykonywania czynności w arkuszu. Późniejsza analiza kodu, uruchamianie krok po kroku, obserwowanie aktualnych wartości zmiennych, ..., może w miarę szybko zapoznać z modelem obiektowym excela. Pozostaje jedynie poznać VBA w zakresie sterowania wykonaniem programu (procedury, pętle, wykonanie warunkowe kodu itp) a kursy VBA można znaleźć w sieci.
Ponadto VBA jest językiem, którego używają inne aplikacje MS. Raz się nauczysz i używasz go w innych aplikacjach, gdzie tylko inny jest model obiektowy.
Myślę, że powinieneś postawić raczej na VBA.
limpus
24-05-2006, 13:17
Dziękuję z radę, muszę przemyśleć.
limpus
Jak wszystkie programy napisane w Javie, jEdit jest pamieciożerny. Ale w porównaniu z innymi programami wypada bardzo dobrze. Dla porównania wyniki z mojego Windowsa:
* jEdit z siedmioma otwartymi plikami — 49,5 MB RAM
* Thunderbird 1.5 — 61,1 MB
* Firefox 2 — 68,8 MB
Z racji tego, że jEdit jest napisany w Javie, stosunkowo długo się uruchamia. Można to poprawić uruchamiając kopię jEdit'a przy starcie systemu jako serwer, czyli kopię rezydującą stale w pamięci. Żeby to zrobić, trzeba dodać do autostartu skrót do jEdit'a z dwoma parametrami: -background -nogui np. "C:\Program Files\jEdit\bin\jEdit.exe" -background -nogui
Można też wyłączyć pojawianie się ekranu powitalnego (splash screen) w menu Utilities > Global Options... > Appearance | Show splash screen on startup, żeby proces startu programu był niewidoczny.
Instalacja pluginów
W zasadzie po standardowej instalacji jEdit nie jest rewelacyjnym edytorem z punktu widzenia programisty. Dopiero instalacja kompletu odpowiednich wtyczek pokazuje w pełni jakie ma możliwości.
Pluginy zwiększające funkcjonalność jEdit'a rozpowszechniane są w postaci plików .jar. Większość pluginów posortowane wegług kategorii można znaleźć na oficjalnej stronie z pluginami.
Najwygodniejszy sposób instalacji pluginów to użycie menedżera z menu Plugins > Plugin manager... Warto jednak poszukać na własną rękę nowszych rozszerzeń niż te, które są dostępne bezpośrednio przez menadżera.
Aby zainstalować plugin własnoręcznie, należy wgrać odpowiedni plik .jar do katalogu z pluginami, do wyboru:
* C:\Documents and Settings\user\.jedit\jars — instalacja tylko dla danego użytkownika
* C:\Program Files\jEdit\jars — instalacja wspólna dla wszystkich użytkowników
Po umieszczeniu pliku .jar w odpowiednim katalogu, jeszcze trzeba włączyć plugin w Menadżerze Pluginów, w zakładce Manage i zrestartować program.
Najbardziej przydatne pluginy
Te które są najbardziej przydatne, zależy oczywiście od tego, do czego chcesz wykorzystywać jEdit'a. Obiektywnie oceniając, najbardziej przydatne dla webdeveloper'a i programisty są:
BufferTabs
Plugin BufferTabs
dodaje zakładki pozwalające na łatwe przełączanie się między kilkoma plikami.
Po zainstalowaniu pluginu, trzeba go jeszcze włączyć. W menu Plugins > Plugin Options... > BufferTabs opcja „Enable BufferTabs by default” musi być włączona.
FTP
Plugin FTP
pozwala na bezpośrednie otwieranie/zapisywanie plików przez FTP.
Ten plugin wymaga do działania kilku innych, które są automatycznie instalowane przez menadżera pluginów.
Sposób użycia: File > Open > Plugins > FTP > Connect to FTP Server
InfoViewer
Plugin InfoViewer dodaje możliwość podglądu pliku w zintegrowanej przeglądarce internetowej lub w dowolnej zewnętrznej przeglądarce.
Żeby używać zewnętrznej przeglądarki, trzeba zmienić w Plugins > Plugin Options... > InfoViewer > Choose Browser > External Browser" i zmienić opcje dla pliku wykonywalnego na przykład na C:\Program Files\Mozilla Firefox\firefox.exe, w razie potrzeby z dodatkowymi parametrami jakie oferuje przeglądarka.
Bardzo przydatne jest jednoczesne ustawienie skrótu klawiaturowego, np. F10 do podglądu pliku w przeglądarce