IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   MS Office 2000 i 2002/XP.
                 ...
Spis treści
              Podziękowania......................................................................................
4                                  MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


Rozdział 3. Programowani...
Rozdział 2.
Wspólne cechy i obiekty
programów Office
    Choć tak wiele ró ni aplikacje Office od siebie, bo ka da słu y d...
44                             MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


               ActiveX to na...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                          45


          3. U yj fun...
46                       MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


           9KVJ YFQE
             ...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                          47


            Na dysku ...
48                             MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


             5GV 1W#RRA  0GY...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                        49

           (WPEVKQP 6YQT...
50                             MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


Listing 2.5. Czy jest urucho...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                           51

          1P 'TTQT 4G...
52                       MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


     bazach danych, musisz utworzy...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                            53


        CommandBars...
54                              MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


Kolekcja pasków
        Ka ...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                         55


        Listing 2.11 p...
56                             MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


             (QT 'CEJ ED%QPV...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                          57


           1. u ywają...
58                           MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


        Oto prosta instrukcja ...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                          59


Obiekt Assistant
    ...
60                             MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


        Aby wyświetlić aktua...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                       61


        Listing 2.18 prz...
62                           MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


           QFR  RQFRQYKGF5JQY
...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                         63


                     '...
64                            MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


                        %CUG ...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                         65

          (QT 'CEJ R +P...
66                            MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


             Dla aplikacji pr...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                              67


Funkcja Shell
   ...
68                             MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


         Spotkałem się z wyk...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                         69


Funkcja DoEvents
     ...
70                            MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


           Aplikacja MS Excel...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                       71


         Nawiasy kwadrat...
_  6TWG
            0GZV +
               5GPF-G[U   6TWG
               5GPF-G[U    ](_  6TWG
               'PF 5WD




...
72                           MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


Tabela 2.4. Kody klawiszy funk...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                              73


Tabela 2.5. Kody ...
74                       MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA


     W literaturze spotkałem się z...
Rozdział 2. ♦ Wspólne cechy i obiekty programów Office                                             75


Tabela 2.8. Wartoś...
Upcoming SlideShare
Loading in …5
×

MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA

1,100 views

Published on

Pakiet Microsoft Office to nie tylko zaawansowany zestaw aplikacji biurowych, ale także platforma, na podstawie której programiści Visual Basica for Applications mogą pisać własne programy. Chociaż możliwości dostosowania poszczególnych aplikacji Office"a do specyficznych wymagań użytkownika bez konieczności pisania kodu są spore, dopiero użycie VBA pozwala na tworzenie własnych kreatorów, dodatków i asystentów.

Książka "MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji VBA" opisuje sposób tworzenia specyficznych dla MS Office dodatków z użyciem języka Visual Basic for Applications. Przeznaczona jest dla osób znających ten język programowania w stopniu podstawowym, chcących poznać tajniki programowania Worda, Excela i Accessa.

Opisano:

* Różne rodzaje plików, używanych przez MS Office
* Wykorzystanie technologii ActiveX
* Tworzenie własnych pasków narzędziowych
* Tworzenie asystentów
* Pisanie kreatorów Worda
* Integrację poszczególnych składników pakietu Office
* Pisanie własnej aplikacji wyszukującej pliki Excela
* Tworzenie bazy danych opartej na Accessie jako samodzielnej aplikacji

Programiści VBA znajdą w tej książce także wiele cennych wskazówek dotyczących efektywnego wykorzystania dostępnych typów danych oraz optymalizacji kodu. Autor prezentuje wiele fragmentów kodu, które możesz zastosować we własnych aplikacjach.

Dostosuj MS Office do swoich wymagań

* Pisz własne kreatory i dodatki do aplikacji Office
* Naucz się integrować poszczególne programy pakietu
* Poznaj wewnętrzne mechanizmy działania Office"a
* Skorzystaj z ćwiczeń i fragmentów kodu dostępnych na płycie CD

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,100
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA

  1. 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI MS Office 2000 i 2002/XP. Tworzenie w³asnych KATALOG KSI¥¯EK aplikacji w VBA KATALOG ONLINE Autor: Maciej £o ZAMÓW DRUKOWANY KATALOG ISBN: 83-7197-878-2 Format: B5, stron: 138 TWÓJ KOSZYK DODAJ DO KOSZYKA Pakiet Microsoft Office to nie tylko zaawansowany zestaw aplikacji biurowych, ale tak¿e platforma, na podstawie której programi ci Visual Basica for Applications mog¹ pisaæ w³asne programy. Chocia¿ mo¿liwo ci dostosowania poszczególnych aplikacji Office'a CENNIK I INFORMACJE do specyficznych wymagañ u¿ytkownika bez konieczno ci pisania kodu s¹ spore, dopiero u¿ycie VBA pozwala na tworzenie w³asnych kreatorów, dodatków i asystentów. ZAMÓW INFORMACJE Ksi¹¿ka „MS Office 2000 i 2002/XP. Tworzenie w³asnych aplikacji VBA” opisuje sposób O NOWO CIACH tworzenia specyficznych dla MS Office dodatków z u¿yciem jêzyka Visual Basic for Applications. Przeznaczona jest dla osób znaj¹cych ten jêzyk programowania w stopniu ZAMÓW CENNIK podstawowym, chc¹cych poznaæ tajniki programowania Worda, Excela i Accessa. Opisano: CZYTELNIA • Ró¿ne rodzaje plików, u¿ywanych przez MS Office • Wykorzystanie technologii ActiveX FRAGMENTY KSI¥¯EK ONLINE • Tworzenie w³asnych pasków narzêdziowych • Tworzenie asystentów • Pisanie kreatorów Worda • Integracjê poszczególnych sk³adników pakietu Office • Pisanie w³asnej aplikacji wyszukuj¹cej pliki Excela • Tworzenie bazy danych opartej na Accessie jako samodzielnej aplikacji Programi ci VBA znajd¹ w tej ksi¹¿ce tak¿e wiele cennych wskazówek dotycz¹cych efektywnego wykorzystania dostêpnych typów danych oraz optymalizacji kodu. Autor prezentuje wiele fragmentów kodu, które mo¿esz zastosowaæ we w³asnych aplikacjach. Dostosuj MS Office do swoich wymagañ : • Pisz w³asne kreatory i dodatki do aplikacji Office Wydawnictwo Helion • Naucz siê integrowaæ poszczególne programy pakietu ul. Chopina 6 • Poznaj wewnêtrzne mechanizmy dzia³ania Office'a 44-100 Gliwice • Skorzystaj z æwiczeñ i fragmentów kodu dostêpnych na p³ycie CD tel. (32)230-98-63 e-mail: helion@helion.pl
  2. 2. Spis treści Podziękowania...................................................................................5 Zanim rozpoczniesz….........................................................................7 Do kogo jest adresowana ta ksią ka? ......................................................................... 7 O czym jest ta ksią ka? ............................................................................................ 8 Rozdział 1. Programowanie — informacje ogólne..................................................9 Projekt to podstawa ................................................................................................. 9 Czemu ma słu yć aplikacja?................................................................................ 9 Kto będzie jej u ywał? ......................................................................................11 Wizualizacja.....................................................................................................11 Przelanie pomysłu na papier...............................................................................11 Podsumowanie .................................................................................................12 Najwa niejsze informacje o VBA.............................................................................12 Efektywne stosowanie typów .............................................................................12 Prawda i fałsz (Boolean) ....................................................................................15 Numeryczne typy danych ..................................................................................16 Tablice.............................................................................................................18 Optymalizacja kodu ..........................................................................................20 Odwołania do funkcji Windows API...................................................................31 Pliki pakietu Office ...........................................................................................34 Rozdział 2. Wspólne cechy i obiekty programów Office.......................................43 Obiekty Office 97 — omówienie..............................................................................43 Dobrodziejstwo ActiveX....................................................................................43 Obiekt Application ............................................................................................47 Obiekt Commandbars........................................................................................51 Obiekt Assistant................................................................................................59 Obiekt FileSearch .............................................................................................63 Obiekt DocumentProperties ...............................................................................64 Środowisko aplikacji ...............................................................................................65 Funkcja Environ ...............................................................................................65 Funkcja Shell....................................................................................................67 Instrukcja AppActivate ......................................................................................68 Funkcja DoEvents.............................................................................................69 Funkcja Timer ..................................................................................................69 Instrukcja SendKeys .........................................................................................70 Automakra .......................................................................................................71
  3. 3. 4 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Rozdział 3. Programowanie — MS Word.............................................................77 Tworzenie szablonu z własnym paskiem narzędzi ......................................................77 Tworzenie własnego kreatora...................................................................................80 Współpraca z innymi aplikacjami Office...................................................................87 Współpraca z MS Access...................................................................................88 Współpraca z MS Excel.....................................................................................90 Rozdział 4. Programowanie — MS Excel ............................................................93 Własne okno dialogowe poszukiwania plików ...........................................................93 Dodajemy element do menu kontekstowego — nowa funkcja.....................................94 Tworzenie aplikacji „krok po kroku” ........................................................................96 Własne menu podręczne dla formularzy MS Word i MS Excel............................100 Wska katalog w formularzu MS Word i MS Excel............................................102 Współpraca z innymi aplikacjami Office.................................................................104 Rozdział 5. Programowanie — MS Access .......................................................109 SQL jako motor baz danych ..................................................................................109 Tworzenie formularza wyszukującego dane ............................................................110 Uwagi o konstruowaniu zapytań w kodzie.........................................................114 Podformularze i podraporty ...................................................................................115 MS Access i Internet .............................................................................................116 Eksportowanie tabeli, kwerendy, formularza lub raportu w formacie HTML ........116 Eksportowanie danych do serwera FTP w sieci Internet .....................................116 Współpraca z XML.........................................................................................117 Tworzenie bazy danych jako samodzielnej aplikacji................................................117 Ograniczenia bazy danych ...............................................................................117 Parametryzacja bazy danych ............................................................................118 Zakończenie..................................................................................131 Skorowidz......................................................................................133
  4. 4. Rozdział 2. Wspólne cechy i obiekty programów Office Choć tak wiele ró ni aplikacje Office od siebie, bo ka da słu y do czego innego, to przyglądając się im od strony informatycznej widzimy, e mają wiele wspólnego. Jak wiele mają wspólnego, tak te wiele je ró ni. Rozdział 2 jest poświęcony właśnie tym podobieństwom i ró nicom. Obiekty Office 97 — omówienie W tym rozdziale zajmę się obiektami pakietu Office dostępnymi w ka dej z omawia- nych aplikacji. Są nimi: obiekt Application, obiekt CommandBars, obiekt Assistant, obiekt FileSearch, obiekt DocumentProperties. Zanim jednak to uczynię, opowiem Ci pewną historię, a nazwę ją „Dobrodziejstwo ActiveX”. Dobrodziejstwo ActiveX Domyślam się, e nieraz spotkałeś się z terminem ActiveX. Być mo e nawet dokładnie wiesz, co on oznacza, ale tytułem przypomnienia:
  5. 5. 44 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA ActiveX to nazwa zbioru technologii, które pozwalają budować i u ywać obiektów za pomocą technologii COM 1 i DCOM 2. Na czym polega to dobrodziejstwo w pakiecie Office? Aplikacje takie jak Word, Excel czy Access są właśnie obiektami ActiveX. To oznacza, e mo esz manipulować jedną aplikacją Office z poziomu drugiej. Ba, mało tego, mo esz równie uzyskać dostęp do obiektów tej aplikacji, niezale nie od tego, czy będziesz to robił lokalnie na swoim kom- puterze, czy w sieci. Jak tego dokonać? Jeśli chcesz uruchomić kod w jednej aplikacji Office, który będzie pracował z obiek- tami w innej aplikacji, musisz wykonać następujące kroki: 1. Ustaw odwołanie do biblioteki tej innej aplikacji w oknie dialogowym Odwołania (menu Narzędzia). Jeśli tego dokonasz, uzyskasz dostęp do tej aplikacji oraz wszystkich jej obiektów, właściwości i metod. Chcesz odwołać się do Worda, wska Microsoft Word 8.0 Object Library. Chcesz odwołać się do Excela, wska Microsoft Excel 8.0 Object Library. Chcesz odwołać się do MS Access, wska Microsoft Access 8.0 Object Library. Pamiętaj, nie musisz wskazywać biblioteki typu do aplikacji, w której pracujesz, a tylko do aplikacji, do której chcesz uzyskać dostęp! 2. Zadeklaruj zmienną obiektową, która wska e na obiekty w innej aplikacji określonego typu. Deklaracja zmiennej obiektowej za pomocą klauzuli #U 1DLGEV spowoduje utworzenie zmiennej zawierającej odwołanie do dowolnego obiektu. Dostęp do tego obiektu będzie odbywał się w sposób opóźniony, tzn. przez dowiązanie w trakcie wykonywania programu. Dlatego lepiej jest utworzyć zmienną obiektową określonego typu, tj. zadeklarować zmienną obiektową z określonym identyfikatorem klasy. Spowoduje to tzw. dowiązanie wczesne, dokonywane w trakcie kompilacji programu. Taką zmienną mo esz na przykład utworzyć tak: &KO #RR:N CU 'ZEGN#RRNKECVKQP lub KO FQE9TF CU 9QTF QEWOGPV. Używając odwołań bez numeru wersji utworzysz obiekt w wersji wywoływanej apli- kacji, takiej, jaka jest aktualnie zainstalowana na komputerze. Jeśli jesteś pe- wien, że jest to Office 97, to zadeklaruj zmienną obiektową z numerem wersji, np. KO #RR:N CU 'ZEGN#RRNKECVKQP. I jeszcze jedna istotna rzecz — nie wszystkie obiekty, ich właściwości i metody będą dostępne w poprzednich wersjach aplikacji Office (z czasów, kiedy nabywało się każdą aplikację oddzielnie)! 1 COM (ang. Component Object Model) — technologia umo liwiająca tworzenie obiektów oraz dostęp do nich z programu Windows. 2 DCOM (ang. Distributed Component Object Model) — technologia umo liwiająca dystrybucję obiektów w sieci lokalnej i Internecie.
  6. 6. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 45 3. U yj funkcji %TGCVG1DLGEV z identyfikatorem klasy aplikacji (OLE Programmatic Identifier), by uzyskać dostęp do tej aplikacji lub jej obiektów. Przypisanie do zmiennej obiektowej wartości będzie wyglądało tak: KO #RR:N CU 'ZEGN #RRNKECVKQP — deklaracja zmiennej, 5GV #RR:N %TGCVG1DLGEV 'ZEGN #RRNKECVKQP — przypisanie wartości. 4. U yj właściwości i metod obiektu przechowywanego w zmiennej. Na przykład, następująca instrukcja spowoduje utworzenie nowego skoroszytu: #RR:N 9QTMDQQMU#FF. 5. Po zakończeniu prac z inną aplikacją, u yj metody 3WKV, by ją zamknąć. Oto jak tego dokonać: #RR:N3WKV. Listing 2.1 demonstruje, jak z programu MS Excel przenieść dane do programu MS Word. Listing 2.1. MS Word w MS Excel %QPUV PCYCP[CMTGU #U 5VTKPI CPGA5RTGFC KO YF#RR #U 9QTF#RRNKECVKQP KO PCYC6CDGNK #U 5VTKPI 5WD QKGNC KO VOR$QQNGCP #U $QQNGCP PCYC6CDGNK 6JKU9QTMDQQM5JGGVU 4CPIG # VOR$QQNGCP 7VYQTQMWOGPV +H VOR$QQNGCP 6JGP /UI$QZ QMWOGPV /5 9QTF YTC FCP[OK VCDGNK XD%T A PCYC6CDGNK XD%T A QUVCN RQO[UNPKG WVYQTQP[ XD+PHQTOCVKQP 5WMEGU YF#RR8KUKDNG 6TWG 'NUG /UI$QZ 9[UVCRKN[ DNGF[ RQFECU VYQTGPKC FQMWOGPVW /5 9QTF XD%T A QMWOGPV OQIN XD%T A PKG QUVCE WVYQTQP[ XD%T A QUVCE WVYQTQP[ DNGFCOK XD%T A 5RTCYF EQ OQINQ D[E RT[E[PC DNGFW XD'ZENCOCVKQP 0KGRQYQFGPKG 'PF +H 'PF 5WD (WPEVKQP 7VYQTQMWOGPV #U $QQNGCP KO YFQE #U QEWOGPV KO O[4CPIG9 #U 9QTF4CPIG KO O[4CPIG' #U 4CPIG KO O[6CDNG #U 6CDNG KO O[5GN #U 9QTF5GNGEVKQP KO KNG9KGT #U .QPI KO KNG-QN #U .QPI 1P 'TTQT )Q6Q 'TTA7VYQTQMWOGPV 7VYQTQMWOGPV 6TWG KNG9KGT 6JKU9QTMDQQM5JGGVU 4CPIG PCYCP[CMTGU4QYU%QWPV KNG-QN 6JKU9QTMDQQM5JGGVU 4CPIG PCYCP[CMTGU%QNWOPU%QWPV 5GV YF#RR %TGCVG1DLGEV 9QTF#RRNKECVKQP YF#RR8KUKDNG 6TWG 5GV YFQE YF#RRQEWOGPVU#FF
  7. 7. 46 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA 9KVJ YFQE 5GV O[4CPIG9 4CPIG YF#RR5GNGEVKQP6[RG2CTCITCRJ O[4CPIG9+PUGTV$GHQTG PCYC6CDGNK YF#RR5GNGEVKQP'PF-G[ 7PKVYF.KPG YF#RR5GNGEVKQP6[RG2CTCITCRJ YF#RR5GNGEVKQP5GNGEV 5GV O[6CDNG 6CDNGU#FF YF#RR5GNGEVKQP4CPIG KNG9KGT KNG-QN +H 9UVCYCPGA6CDGNK O[6CDNG KNG9KGT KNG-QN (CNUG 6JGP )Q6Q å'TTA7VYQTQMWOGPV 'PF 9KVJ 'ZKV (WPEVKQP 'TTA7VYQTQMWOGPV 'TT%NGCT 5GV O[6CDNG 0QVJKPI 5GV O[4CPIG9 0QVJKPI +H 0QV YFQE +U 0QVJKPI 6JGP YFQE%NQUG 5CXG%JCPIGU(CNUG 5GV YFQE 0QVJKPI 'PF +H +H 0QV YF#RR +U 0QVJKPI 6JGP YF#RR3WKV 5CXG%JCPIGU(CNUG 5GV YF#RR 0QVJKPI 'PF +H 7VYQTQMWOGPV (CNUG 'PF (WPEVKQP (WPEVKQP 9UVCYCPGA6CDGNK VCDGNC #U 6CDNG KNG9KGT #U .QPI KNG-QN #U .QPI #U $QQNGCP KO MQO #U %GNN KO YKGT #U .QPI MQN #U .QPI KO UVCTV9KGT #U .QPI 1P 'TTQT )Q6Q 'TTA9UVCYCPGA6CDGNK 9UVCYCPGA6CDGNK 6TWG 6JKU9QTMDQQM5JGGVU 4CPIG PCYCP[CMTGU'PF ZN7R5GNGEV 6JKU9QTMDQQM5JGGVU 4CPIG PCYCP[CMTGU'PF ZN6Q.GHV5GNGEV RQDKGT PT YKGTUC RQECVMQYGIQ UVCTV9KGT %.PI 4KIJV #EVKXG%GNN#FFTGUU (QT YKGT 6Q KNG9KGT (QT MQN 6Q KNG-QN VCDGNC%GNN YKGT MQN4CPIG6GZV 6JKU9QTMDQQM5JGGVU %GNNU YKGT åUVCTV9KGT MQN 0GZV MQN 0GZV YKGT 'ZKV (WPEVKQP 'TTA9UVCYCPGA6CDGNK 'TT%NGCT 9UVCYCPGA6CDGNK (CNUG 'PF (WPEVKQP Przyjrzyj się dokładnie temu listingowi. Przede wszystkim chodzi o to, byś zwrócił uwa- gę na deklarację obiektów 4CPIG. Czy widzisz ró nice?
  8. 8. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 47 Na dysku CD-ROM, w katalogu PrzykladyCz_II, w pliku CreateDoc.xls znajduje się pełny kod, opisy i odpowiedź na pytanie. Obiekt Application Jest to bardzo interesujący obiekt i będzie on często przeze mnie u ywany w przykła- dach. Obiekt Application odwołuje się do aktywnej aplikacji Office. Oznacza to, e pod- czas pracy w edytorze tekstów Word, obiekt Application odwołuje się właśnie do tego programu oraz zawiera wszystkie obiekty i kolekcje obiektów tej aplikacji. Jak nale y to rozumieć? Mo esz u yć tego obiektu do zastosowania metod lub ustawień właści- wości dla całej aplikacji: #RRNKECVKQP5GV1RVKQP 5JQY 5VCVWU $CT 6TWG lub do wywołania metod lub ustawień właściwości dla dowolnego obiektu (kolekcji obiektów) danej aplikacji, tak jakbyś osobiście tych obiektów u ywał: QEOF1RGP(QTO COÎYKGPKC (otwieranie formularza „Zamówienia”). W instrukcji pierwszej jawnie posłu yłem się obiektem Application. Przykład drugi ju nie zawierał jawnego wywołania obiektu Application, a mimo to podany kod jest po- prawny i zostanie prawidłowo zinterpretowany przez aplikację Access. Jak to mo liwe? Jeśli nie wiesz, przeczytaj jeszcze raz to, co dotychczas przeczytałeś. W zdaniu drugim zapewniam Cię, e obiekt Application posiada wszystkie obiekty danej aplikacji. Dla VBA nie musisz jawnie posługiwać się tym kwalifikatorem obiektu. Oczywiście przykład drugi będzie poprawny wyłącznie w aplikacji Access, ponieważ inne programy z pakietu Office nie posiadają obiektu Q%OF. O obiektach poszcze- gólnych aplikacji dowiesz się w kolejnych częściach książki. Instancyjność aplikacji Rozpatrując aplikacje Office pod kątem wykorzystania ich w kodzie, a uściślając — pod kątem tworzenia nowej instancji klasy aplikacji, wyró niamy aplikacje jedno- lub wie- lokrotnego wystąpienia, u ycia. Na przykład MS Word jest aplikacją jednokrotnego wystąpienia. Oznacza to, e kod: KO YF#RR #U 9QTF#RRNKECVKQP 5GV YF#RR 0GY 9QTF#RRNKECVKQP niezale nie od tego, jak wiele w danej chwili jest uruchomionych instancji (kopii) MS Word, zawsze będzie tworzył nową instancję aplikacji. Zaś aplikacja wielokrotnego wystąpienia (jaką jest na przykład Outlook), niezale nie od tego, jak wiele w kodzie bę- dzie odwołań do instancji tej aplikacji, gdy ta aplikacja jest otwarta, zawsze będzie wska- zywać na aplikację ju otwartą. Przykładowo, je eli Outlook będzie otwarty, wszystkie odwołania do nowej instancji klasy (aplikacji) w przedstawionym kodzie (Listing 2.2): Listing 2.2. Odwołania do instancji aplikacji KO 1W#RRA #U 1WVNQQM#RRNKECVKQP KO 1W#RRA #U 1WVNQQM#RRNKECVKQP KO 1W#RRA #U 1WVNQQM#RRNKECVKQP
  9. 9. 48 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA 5GV 1W#RRA 0GY 1WVNQQM#RRNKECVKQP 5GV 1W#RRA %TGCVG1DLGEV 1WVNQQM#RRNKECVKQP 5GV 1W#RRA )GV1DLGEV 1WVNQQM#RRNKECVKQP zawsze będą wskazywać na tę samą instancję MS Outlook, ju otwartą. Tabela 2.1 przedstawia typy aplikacji MS Office. Tabela 2.1. Podział aplikacji MS Office ze względu na krotność instancji Aplikacja Krotność instancji Tworzy za każdym razem... MS Access jedno… nową instancję aplikacji niezale nie od liczby ju uruchomionych MS Excel jedno… nową instancję aplikacji niezale nie od liczby ju uruchomionych MS Word jedno… nową instancję aplikacji niezale nie od liczby ju uruchomionych MS FrontPage jedno… nową instancję aplikacji niezale nie od liczby ju uruchomionych MS Outlook wielo… zmienną obiektową zwracającą instancję aplikacji ju uruchomionej MS PowerPoint wielo… zmienną obiektową zwracającą instancję aplikacji ju uruchomionej Jak zauwa yłeś, do tworzenia nowej instancji klasy słu y funkcja %TGCVG1DLGEV. Są dwa najwa niejsze zastosowania tej funkcji: Sprawdzenie, czy na danym komputerze jest zainstalowana aplikacja, której tworzysz kopię. Przykładowy kod (Listing 2.3): Listing 2.3. U ycie funkcji CreateObject do sprawdzenia, czy na danym komputerze jest zainstalowana aplikacja KO #RR1DL #U 1DLGEV 5WD %[,GUV#EEGUU KO D$QQN #U $QQNGCP D$QQN 6YQT-QRKG#RNKMCELK #EEGUU#RRNKECVKQP +H 0QV D$QQN 6JGP /UI$QZ /5 #EEGUU PKG LGUV CKPUVCNQYCP[ PC V[O MQORWVGTG XD+PHQTOCVKQP 2T[MTQ OK 'ZKV 5WD 'PF +H +H D$QQN 6JGP /UI$QZ /5 #EEGUU LGUV CKPUVCNQYCP[ PC V[O MQORWVGTG XD+PHQTOCVKQP ,GUV 9KVJ #RR1DL VW OQGU FQNCE[E QFRQYKGFPK MQF PR 'PF 9KVJ 'PF +H 'PF 5WD
  10. 10. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 49 (WPEVKQP 6YQT-QRKG#RNKMCELK #RR0COG #U 5VTKPI #U $QQNGCP 6YQT-QRKG#RNKMCELK 6TWG 1P 'TTQT 4GUWOG 0GZV 5GV #RR1DL %TGCVG1DLGEV #RR0COG +H 'TT 6JGP PKG CKPCUVCNQYCPC CRNKMCELC 6YQT-QRKG#RNKMCELK (CNUG 'PF +H 'PF (WPEVKQP Na dysku CD-ROM w katalogu PrzykladyCz_II znajdziesz plik CzyJest.xls, z ko- dem listingu 2.3. Zwróć też uwagę na deklarację obiektu aplikacji, odbywa się on w sposób opóźniony. Odwołanie się do aplikacji, której nie na lokalnym komputerze ale jest na innym komputerze w sieci. Przykładem takiego zastosowania mo e być potrzeba wydrukowania raportu z bazy MS Access umiejscowionej na serwerze z pliku MS Excel, nawet jeśli MS Access nie jest zainstalowany na komputerze, z którego wyszło ądanie drukowania. Wtedy u ycie funkcji %TGCVG1DLGEV musi odbyć się z dwoma argumentami: nazwą aplikacji i nazwą serwera. Listing 2.4. Drukowanie z serwera 5WD TWMWL5GTYGTC KO #EE#RR #U #EEGUU#RRNKECVKQP 1P 'TTQT 4GUWOG 0GZV 5GV #EE#RR %TGCVG1DLGEV #EEGUU#RRNKECVKQP /QL5GTYGT +H 'TT 6JGP /UI$QZ $NGFPC PCYC UGTYGTC NWD UGTYGT PKG HWPMELQPWLG XD'ZENCOCVKQP 2TQDNGO 'ZKV 5WD 'PF +H 9KVJ #EE#RR VW KPUVTWMELG FKCNCLCEG PC QDKGMEKG FTWMWLCEG TCRQTV 'PF 9KVJ 'PF 5WD Aby kod listingu 2.4 mógł zadziałać muszą być spełnione następujące warunki: zainstalowany MS Office XP (funkcja CreateObject z dwoma argumentami jest do- stępna dopiero od wersji XP) oraz odpowiednio skonfigurowany DCOM na serwe- rze i lokalnym komputerze (na przykład programem Dcomcnfg.exe). W tekście opisującym krotność instancji posłu yłem się równie funkcją )GV1DLGEV. Mo esz jej u ywać do zwrócenia informacji o tym, czy: jest ju uruchomiona aplikacja i utworzyć zmienną obiektową wskazującą na tę aplikację. Listing 2.5 ilustruje przykładowe zastosowanie funkcji )GV1DLGEV.
  11. 11. 50 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Listing 2.5. Czy jest uruchomiona aplikacja? 5WD %[1VYCTV[#EEGUU KO D$QQN #U $QQNGCP D$QQN %[1VYCTVC#RR #EEGUU#RRNKECVKQP LGUNK PKG QVYCTVC CRNKMCELC VYQT PQYC MQRKG +H 0QV D$QQN 6JGP D$QQN 6YQT-QRKG#RNKMCELK #EEGUU#RRNKECVKQP +H D$QQN 6JGP 9KVJ #RR1DL VW OQGU FQNCE[E QFRQYKGFPK MQF PR 'PF 9KVJ 'PF +H 'PF 5WD (WPEVKQP %[1VYCTVC#RR #RR0COG #U 5VTKPI #U $QQNGCP %[1VYCTVC#RR 6TWG 1P 'TTQT 4GUWOG 0GZV URTCYF E[ LGUV QVYCTVC 5GV #RR1DL )GV1DLGEV #RR0COG +H 'TT 6JGP PKG WTWEJQOKQPC CRNKMCELC %[1VYCTVC#RR (CNUG 'PF +H 'PF (WPEVKQP Jeżeli masz uruchomionych kilka kopii aplikacji, którą chcesz zautomatyzować, nie masz gwarancji, która instancję zwróci Ci funkcja )GV1DLGEV, ponieważ funkcja ta tworzy zmienną obiektową wskazującą na aktualnie otwartą aplikację jednokrotnego wystąpienia. oraz do otwarcia pliku przez odpowiednią aplikację MS Office. Przyjrzyj się listingowi 2.6. Listing 2.6. Otwarcie odpowiedniej aplikacji MS Office według rozszerzenia pliku. 5WD 1VYQT KO DDQQN #U $QQNGCP KO UEKGMCQ2NKMW #U 5VTKPI UEKGMCQ2NKMW VGUVFQE DDQQN 1VYQT1FRQYKGFPKC#RNKMCELG UEKGMCQ2NKMW +H DDQQN 6JGP /UI$QZ 2NKM UEKGMCQ2NKMW QUVCN QVYCTV[ XD%T A C EJYKNG QUVCPKG COMPKGV[ XD+PHQTOCVKQP 7FCNQ UKG #RR1DL#EVKXCVG WCMV[YPKL QMPQ CRNKMCELK RTGF COMPKGEKGO #RR1DL%NQUG 5GV #RR1DL 0QVJKPI 'PF +H 'PF 5WD (WPEVKQP 1VYQT1FRQYKGFPKC#RNKMCELG UEKGMCQ2NKMW #U 5VTKPI #U $QQNGCP 1VYQT1FRQYKGFPKC#RNKMCELG 6TWG
  12. 12. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 51 1P 'TTQT 4GUWOG 0GZV 5GV #RR1DL )GV1DLGEV UEKGMCQ2NKMW +H 'TT 6JGP 1VYQT1FRQYKGFPKC#RNKMCELG (CNUG 'PF (WPEVKQP Instancyjność aplikacji nie jest łatwym zagadnieniem, ale mam nadzieję, e choć tro- chę przybli yłem Ci tę tematykę. Obiekt Commandbars Ka da z aplikacji Office posiada własny zestaw pasków menu i narzędzi. Programu- jąc własne programy pod Office zapewne chciałbyś umieć programowo tworzyć wła- sne paski narzędzi czy menu. W tej części tego rozdziału opiszę jak to zrobić. Na początek słowo wyjaśnienia: jeśli u ywam słowa pasek bez kontekstu, to mam na myśli pasek menu lub pasek narzędzi lub pasek menu podręcznego. W ka dym innym przypadku precyzuję, o jaki pasek mi chodzi. Podobieństwa i różnice Wszystkie aplikacje Office u ywają tej samej technologii do tworzenia pasków menu i pasków narzędzi. Technologię tę firma Microsoft nazwała „Commandbars Object Model”. Są trzy rodzaje pasków: paski narzędzi, paski menu i menu podręczne. Menu podręczne są wyświetlane na trzy sposoby: jako przeciągnij-upuść z paska menu, jako podmenu i jako menu kontekstowe. Menu kontekstowe są wyświetlane, jeśli kliknie- my prawym klawiszem myszy. Poniewa obiekty CommandBars są dostępne we wszystkich aplikacjach Office, mo esz napisać kod, by manipulować paskami narzędzi czy menu we wszystkich aplikacjach Office. Ka da aplikacja Office przechowuje informacje o swoich paskach w innym miej- scu i, w niektórych przypadkach, w inny sposób. Podstawową ró nicą jest to, jak i gdzie ka dy program Office przechowuje paski utworzone przez u ytkownika. Kiedy poczynisz zmiany we wbudowanych paskach, informacje o tych zmianach zosta- ną zapisane w rejestrze Windows w profilu każdego użytkownika (jeśli Windows jest skonfigurowany na kilku użytkowników). Informacje o zakresie „widzialności i „loka- lizacji są przechowywane w rejestrze Windows bez podziału na użytkowników. Po- nadto każda aplikacja Office przechowuje swoje paski w dokumencie, w którym te paski zostały utworzone lub w konkretnym pliku. Oznacza to, że możesz kopiować paski tylko między dokumentami tego samego typu. Zatem, nie możesz skopiować paska z MS Word i używać go w MS Access. CommandBars aplikacji MS Access Paski, które utworzysz w programie MS Access, są przechowywane w bazie danych, w której zostały utworzone. Jeśli chcesz utworzyć pasek, który będzie dostępny w innych
  13. 13. 52 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA bazach danych, musisz utworzyć go w bibliotecznej bazie danych i ustawić odwołanie do tej bibliotecznej bazy danych w ka dej bazie, w której dany pasek ma być dostępny. Informacje o wbudowanych paskach narzędzi przechowywane są w rejestrze. CommandBars aplikacji MS Excel MS Excel umo liwia Ci przechowywanie pasków w danym skoroszycie lub w obszarze roboczym. Domyślnie paski Excel tworzone programowo są zapisywane w obszarze ro- boczym danego u ytkownika. Jeśli Windows ma zdefiniowanych wielu u ytkowników, jak na przykład w środowisku Windows NT, obszar roboczy u ytkownika zapisywany jest w katalogu C:Winnt w pliku utworzonym od nazwy u ytkownika — jak podano poni ej. Jeśli nie zostały utworzone profile u ytkowników, to obszar roboczy u ytkownika za- pisywany jest w katalogu C:Windows w pliku o nazwie składającej się z następujących elementów: nazwy u ytkownika podanej w oknie dialogowym rejestrującym produkty Office (na przykład: Dorcia), numeru wersji Office (na przykład: 8), rozszerzenia tego pliku — *.xlb. W wyniku tego otrzymujemy nazwę pliku: Dorcia8.xlb. Aby zapisać pasek w danym skoroszycie, musisz otworzyć okno dialogowe Dostosuj…, a następnie nacisnąć przycisk Dołącz. W polu po lewej stronie wybierz swój pasek i kliknij przycisk Kopiuj. Niestety, możesz kopiować paski do skoroszytu tylko „ręcznie”, niemożliwe jest skopiowanie paska z poziomu VBA. Podobnie rzecz ma się, jeśli chodzi o usuwanie. Jeśli chcesz usunąć pasek z aktywnego skoroszytu, wybierz z okna po prawej stronie swój pasek, a następnie kliknij przycisk Usuń. Nie bój się dodawać i usuwać paski z aktywnego skoroszytu. Usuwasz tylko ich kopie z tego skoroszytu, a nie z obszaru roboczego. Wszystkie paski zapisane w obszarze roboczym będą dostępne w ka dym z otwieranych skoroszytów. Jeśli chcesz, by dany pasek nie był dostępny w innych skoroszytach, musisz programowo go usunąć lub ukryć. Paski z danego skoroszytu będą dostępne tyl- ko w tym skoroszycie. Jeżeli wybierzesz polecenie z paska zapisanego w obszarze roboczym, utworzonego w skoroszycie X (tu jest zapisany kod, który polecenie ma wykonać), to skoroszyt X zostanie automatycznie otwarty i będzie widoczny. Jeśli otworzysz skoroszyt zawiera- jący pasek, który nie istnieje w Twoim obszarze roboczym, to zostanie on skopiowa- ny do obszaru roboczego. Ta kopia nie jest usuwana po zamknięciu tego skoroszytu.
  14. 14. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 53 CommandBars aplikacji MS Word MS Word mo e przechowywać paski w kilku miejscach: w pliku Normal.dot (szablo- nie globalnym), innym szablonie (*.dot) lub w danym dokumencie (*.doc). Ró nica polega na tym, e paski przechowywane w pliku Normal.dot są dostępne dla ka dego dokumentu, który tworzysz, nawet jeśli jest oparty na innym szablonie. Nie jest dobrą praktyką przechowywać własne paski narzędzi w pliku szablonu glo- balnego, ponieważ może to spowodować rozrost tego pliku do dużych rozmiarów i MS Word będzie ładował się wolno. Ponadto, będąc administratorem sam dbałbyś o to, by plik Normal.dot był chroniony przed zapisem. Uchroniłoby Cię to przed groź- nymi wirusami. Zatem przechowuj własne paski narzędzi w pliku zwykłego szablonu. Pasek utworzony w szablonie będzie dostępny w ka dym dokumencie opartym na tym szablonie. Jeśli zaś pasek został utworzony w dokumencie, to będzie on dostępny tyl- ko po otwarciu tego dokumentu. Domyślnie wszystkie paski, które utworzysz, będą zapisane w pliku Normal.dot., chyba e zapiszesz je dla danego szablonu lub dokumentu w oknie DostosujZapisz w… Jeśli utworzysz własny pasek za pomocą VBA, musisz określić, gdzie ma zostać zapisany za pomocą właściwości CustomizationContext obiektu Application. CustomizationContext — zwraca lub ustawia obiekt, szablon lub dokument, w którym zmieniasz paski. Właściwość ta jest zarówno do odczytu, jak i zapisu. Poni szy przy- kład (listing 2.7) dodaje kombinację klawiszy do polecenia Zamknij i zapisuje w pliku szablonu globalnego. Listing 2.7. Dodawanie kombinacji klawiszy do polecenia w pasku 5WD #FF-G[6Q%QPVTQN %WUVQOKCVKQP%QPVGZV 0QTOCN6GORNCVG -G[$KPFKPIU#FF -G[%QFG$WKNF-G[%QFG YF-G[%QPVTQN YF-G[#NV YF-G[9 A -G[%CVGIQT[YF-G[%CVGIQT[%QOOCPF %QOOCPF (KNG%NQUG 'PF 5WD Poni szy przykład (listing 2.8) dodaje przycisk Informacje o wersji pliku do paska Stan- dardowy i zapisuje w pliku szablonu, na którym oparty jest aktywny dokument. Listing 2.8. Dodawanie przycisku do paska %WUVQOKCVKQP%QPVGZV #EVKXGQEWOGPV#VVCEJGF6GORNCVG #RRNKECVKQP%QOOCPF$CTU 5VCPFCTF %QPVTQNU#FF 6[RGOUQ%QPVTQN$WVVQP A + $GHQTG Obiekt CommandBars reprezentuje kolekcję obiektów CommandBar (pasków narzędzi, menu) w aplikacji.
  15. 15. 54 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Kolekcja pasków Ka da z aplikacji Office posiada nie jeden, a wiele pasków. Jeśli chciałbyś wyliczyć wszystkie paski dostępne w aplikacji, posłu się obiektem CommandBars, który re- prezentuje kolekcję pasków, by zwrócić pojedynczy obiekt CommandBar. Listing 2.9 przedstawia przykładową procedurę, która wyświetla w oknie Instrukcje bezpośrednie zarówno nazwę, jak i nazwę lokalną paska menu i paska narzędzi oraz wartość, która identyfikuje, czy pasek menu lub pasek narzędzi jest widoczny. Listing 2.9. Wyliczanie pasków 5WD 9[NKE2CMK KO EDCT CU %QOOCPF$CT (QT 'CEJ EDCT KP #RRNKECVKQP%QOOCPF$CTU GDWI2TKPV EDCT0COG EDCT0COG.QECN EDCT8KUKDNG 0GZV 'PF 5WD Dodawanie paska do kolekcji Dodawanie paska do kolekcji jest bardzo proste. Wystarczy posłu yć się metodą #FF. Listing przedstawia procedurę, która tworzy pasek narzędzi i nadaje mu nazwę Moj- Pasek. Następnie wyświetla go jako pasek narzędzi pływający (nie mający stałej po- zycji wśród pasków narzędzi). Czytaj uwagi w dalszej części ksią ki, by zrozumieć, dlaczego wyliczam zarówno nazwę, jak i nazwę lokalną. Listing 2.10. Tworzenie paska 5WD 7VYQT2CUGM 5GV EDCT %QOOCPF$CTU#FF 0COG /QL2CUGM 2QUKVKQPOUQ$CT(NQCVKPI EDCT8KUKDNG 6TWG 'PF 5WD Do utworzonego przed chwilą paska mo esz dodać polecenia lub zmienić miejsce jego dokowania. Aby odwołać się do istniejącego paska, musisz u yć składni %QOOCPF $CTU KPFGZ, gdzie KPFGZ jest nazwą lub indeksem paska narzędzi. Następująca instruk- cja dokuje pasek narzędzi nazwany MojPasek w dolnej części okna aplikacji: %QOOCPF $CTU /QL2CUGM 2QUKVKQP OUQ$CT$QVVQO. Możesz używać nazwy lub indeksu, by określić pasek menu lub pasek narzędzi z li- sty dostępnych pasków menu lub pasków narzędzi w kolekcji aplikacji. Aczkolwiek, musisz posłużyć się nazwą, by określić menu, menu podręczne lub podmenu. Jeśli dwa lub więcej z pasków użytkownika będą miały tę samą nazwę, obiekt %QOOCPF $CTU KPFGZ zwróci pierwszą z nich. By upewnić się, że zwracasz poprawne menu lub podmenu, zlokalizuj kontrolkę, która przechowuje to menu. Pasek Reprezentuje pojedynczy pasek narzędzi lub menu w kolekcji pasków narzędzi lub menu aplikacji.
  16. 16. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 55 Listing 2.11 przedstawia funkcję, która sprawdza, czy w kolekcji pasków znajduje się pasek o nazwie określonej przez procedurę, która wywołuje funkcję 2CUGM. Jeśli znajdzie, czyni go widocznym i chroni jego miejsce dokowania. Funkcja zwraca prawdę, je eli pasek został znaleziony i fałsz, je eli nie udało się znaleźć określonego paska w kolekcji pasków aplikacji. Listing 2.11. Szukanie paska w kolekcji pasków (WPEVKQP 2CUGM ED0COG CU 5VTKPI #U $QQNGCP KO ED #U %QOOCPF$CT PCNGKQP[ (CNUG (QT 'CEJ ED +P %QOOCPF$CTU +H ED0COG ED0COG 6JGP ED2TQVGEVKQP OUQ$CT0Q%JCPIGQEM ED8KUKDNG 6TWG PCNGKQP[ 6TWG 'PF +H 0GZV ED 2CUGM PCNGKQP[ 'PF (WPEVKQP Kopiowanie paska Kopiowanie paska mo e być wykonane na dwa sposoby. Pierwszy polega na „ręcznym” skopiowaniu, drugi na skopiowaniu programowym. Aby programowo skopiować pa- sek, nale y najpierw utworzyć nowy pasek, a następnie posłu yć się metodą %QR[, by skopiować ka de z poleceń z oryginalnego paska do nowego. Przykładową procedurę kopiowania paska Formatowanie ilustruje listing 2.12. Listing 2.12. Kopiowanie paska 5WD -QRKWL +H -QRKWL2CUGM (QTOCVVKPKI 0GY(QTOCVVKPI 6TWG 6JGP /UI$QZ 2CUGM QUVCN UMQRKQYCP[ XD+PHQTOCVKQP 2QYQFGPKG 'PF +H 'PF 5WD (WPEVKQP -QRKWL2CUGM QT[I0CYC #U 5VTKPI PQYC0CYC #U 5VTKPI A 1RVKQPCN RQMC #U $QQNGCP 6TWG #U $QQNGCP KO ED1T[I #U %QOOCPF$CT KO ED-QRKC #U %QOOCPF$CT KO EDEQPVTQN #U %QOOCPF$CT%QPVTQN KO ED6[RG #U .QPI 1P 'TTQT )Q6Q $NCF-QRKQYCPKC 5GV ED1T[I %QOOCPF$CTU QT[I0CYC ED6[RG ED1T[I6[RG 5GNGEV %CUG ED6[RG %CUG OUQ$CT6[RG/CPW$CT 5GV ED-QRKC %QOOCPF$CTU#FF 0COGPQYC0CYC 2QUKVKQPOUQ$CT/GPW$CT %CUG OUQ$CT6[RG2QRWR 5GV ED-QRKC %QOOCPF$CTU#FF 0COGPQYC0CYC 2QUKVKQPOUQ$CT6[RG2QRWR %CUG 'NUG 5GV ED-QRKC %QOOCPF$CTU#FF 0COGPQYC0CYC 'PF 5GNGEV
  17. 17. 56 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA (QT 'CEJ ED%QPVTQN KP ED1T[I%QPVTQNU ED%QPVTQN%QR[ 0GZV ED%QPVTQN +H RQMC 6JGP +H ED-QRKC6[RG OUQ$CT6[RG2QRWR 6JGP ED-QRKC5JQY2QRWR 'NUG ED-QRKC8KUKDNG RQMC 'PF +H 'PF +H -QRKWL2CUGM 6TWG 'ZKV (WPEVKQP $NCF-QRKQYCPKC -QRKWL2CUGM (CNUG 'PF (WPEVKQP Usuwanie paska Usuwanie paska, tak jak dodawanie czy kopiowanie, mo esz wykonać „ręcznie” lub napisać odpowiednią funkcję, procedurę. Jest jednak jedno małe „ale”. Paska typu Pop-up nie mo esz usunąć „ręcznie” w oknie dialogowym Dostosuj. Jedyną mo liwo- ścią jest usunięcie takiego paska z kodu. Przykładową procedurę usuwającą pasek, który kopiowaliśmy w poprzednim rozdziale, przedstawia listing 2.13. Listing 2.13. Usuwanie paska 5WD 7UWP %QOOPF$CTU 0GY(QTOCVVKPI GNGVG 'PF 5WD Jednak bardziej uniwersalnym rozwiązaniem będzie kod przedstawiony w listingu 2.14. Listing 2.14. Usuwanie paska z programem obsługi błędów (WPEVKQP 7UWP2CUGM PCYC2CUMC #U 5VTKPI #U $QQNGCP 1P 'TTQT 4GUWOG 0GZV #RRNKECVKQP%QOOCPF$CTU PCYC2CUMCGNGVG 7UWP2CUGM +KH 'TT (CNUG 6TWG 'PF (WPEVKQP Je eli dobrze przyjrzałeś się listingowi, to zapewne zauwa yłeś, e umieściłem tam instrukcję 1P 'TTQT 4GUWOG 0GZV, która ma za zadanie przechwycić i obsłu yć błąd, kiedy podana nazwa nie jest nazwą paska lub paska nie ma w kolekcji pasków. Taka sytuacja mo e wystąpić równie , je eli próbujesz usunąć któryś z wbudowanych pa- sków narzędzi, na przykład Standardowy. Blokowanie paska przed modyfikacjami Czasami trzeba zablokować pasek przed modyfikacjami ze strony innych u ytkowników. Zadanie to nie jest takie proste, bo u ytkownicy mogą dotrzeć do pasków na trzy sposoby:
  18. 18. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 57 1. u ywając polecenia WidokPaski NarzędziDostosuj, 2. klikając prawym klawiszem myszy, gdy wskaźnik znajdzie się na szarym polu pasków, 3. klikając prawym klawiszem myszy, gdy wskaźnik znajdzie się na którymś z pasków. Na szczęście jest rozwiązanie. Po pierwsze: ukryj pasek menu lub wyłącz polecenie WidokPaski Narzędzi, wtedy będziesz miał pewność, e u ytkownik nie będzie miał dostępu do modyfikacji pa- sków pierwszą z wymienionych metod. Po drugie: u yj poni szego polecenia, by zabrać prawa do przeglądania i modyfikowania niestandardowych pasków narzędzi za pomocą 2. i 3. metody: %QOOCPFDCTU 6QQNDCT .KUV 'PCDNGF (CNUG. Dodawanie poleceń do paska Poni szy przykład (listing 2.15) dodaje nowy przycisk w menu Narzędzia. W procedu- rze kliknięcia na tym przycisku umieszcza funkcję, która wyświetli komunikat. Listing 2.15. Dodanie polecenia z kodu i przypisanie mu procedury 5WD 7VYQT2QNGEGPKG 5GV PGY+VGO %QOOCPF$CTU 6QQNU %QPVTQNU#FF 6[RGOUQ%QPVTQN$WVVQP 9KVJ PGY+VGO $GIKP)TQWR 6TWG %CRVKQP -QOWPKMCV (CEG+ UYKPMC 1P#EVKQP -QOWPKMCV 'PF 9KVJ 'PF 5WD 5WD -QOWPKMCV /UI$QZ 6Q LGUV MQOWPKMCV URQF PCMW UYKPMK XD%TKVKECN -QOWPKMCV 'PF 5WD Używaj nazwy, a nie nazwy lokalnej, by mieć pewność, że zwracasz prawidłowe menu. Pokazywanie i ukrywanie poleceń W zale ności od tego, jak bardzo rozbudowana będzie Twoja aplikacja, będziesz musiał utworzyć jakiś uniwersalny pasek, w którym umieścisz tak wiele poleceń, jak będzie konieczne. Jednak e nie zawsze wszystkie polecenia muszą być w danym momencie widoczne. Przykładowo, na jednym formularzu u ytkownik będzie miał dostępnych tylko pięć elementów paska, a na drugim ju siedem. Taka sytuacja zaistnieje tylko wtedy, gdy ka dy z formularzy będzie słu yć do czego innego. Czy jednak zawsze trzeba ukrywać polecenia? Czasami wystarczy uniemo liwić dostęp do nich w inny sposób, ale o tym ju w dalszej części ksią ki.
  19. 19. 58 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Oto prosta instrukcja zmieniająca stan widzialności polecenia na pasku: %QOOCPF$CTU 9QTMUJGGV /GPW $CT %QPVTQNU 2NKM 8KUKDNG 6TWG Jeśli często w aplikacji będziesz pokazywał lub ukrywał jakieś polecenie, lepiej jest napisać procedurę, która będzie pobierała 2 argumenty: etykietę polecenia i stan. Przykła- dowa procedura dla aplikacji Excel mogłaby wyglądać tak, jak przedstawia listing 2.16. Listing 2.16. Procedura pokazywania i ukrywania poleceń paska 5WD 2QMC2QNGEGPKG2CUMC GV[MKGVC #U 5VTKPI 1RVKQPCN UVCP #U $QQNGCP 6TWG KO EPVTN #U %QOOCPF$CT%QPVTQN (QT 'CEJ EPVTN +P #RRNKECVKQP%QOOCPF$CTU 9QTMUJGGV /GPW $CT %QPVTQNU +H EPVTN%CRVKQP GV[MKGVC 6JGP EPVTN8KUKDNG UVCP 'ZKV (QT 'PF +H 0GZV 'PF 5WD Jeśli zechcesz zmienić pasek menu w innej aplikacji Office, użyj /GPW $CT zamiast 9QTMUJGGV /GPW $CT. Jeśli powy sza procedura (listing 2.16) zostanie wywołana tylko z argumentem GV[MKGVC, to domyślnie poka e dane polecenie. Parametr UVCP nie jest wymagany. Aby ukryć jakieś polecenie, po etykiecie podaj równie UVCP (CNUG. Następujący kod: 2QMC2Q NGEGPKG2CUMC 2NKM (CNUG WMT[YC RQNGEGPKG Plik C MQNGLP[ 2QMC2QNGEGPKG 2CUMC 2NKM pokazuje wcześniej ukryte polecenie. Do ustawiania domyślnych parametrów wywoływanej procedury lub funkcji służy słowo kluczowe 1RVKQPCN. Przyjrzyj się dokładnie procedurze 2QMC2QNGEGPKG2CUMC, a zauważysz, że stan zadeklarowałem jako wartość typu $QQNGCP i od razu ustawi- łem na 6TWG. Jeżeli w parametrach, które pobiera funkcja, znajdzie się wartość ty- pu 8CTKCPV, to nie możesz jej przypisać wartości domyślnej (ze względu na to, że nie wiesz jak konkretnie wartość zostanie przekazana do funkcji). Aby sprawdzić, czy procedura została wywołana z wartością, która nie jest wymagalna, musisz użyć funkcji +U/KUUKPI VWVCL YCTVQUE V[RW XCTKCPV , by zwrócić prawdę (podany argu- ment) lub fałsz. Następnie będziesz mógł przypisać jakąś wartość. Włączanie i wyłączanie poleceń Czy pamiętasz jak pisałem, e nie zawsze trzeba ukrywać polecenia i czasami wystar- czy wyłączyć to polecenie? Do włączania lub wyłączania poleceń paska słu y właści- wość Enabled. Mo esz ustawić dowolny stan dla danego polecenia na przykład tak: %QOOCPF$CTU 9QTMUJGGV /GPW $CT %QPVTQNU 2NKM 'PCDNGF 6TWG lub posłu się procedurą podobną do 2QMC2QNGEGPKG2CUMC w poprzednim rozdziale, tylko zamiast właściwości Visible, u yj Enabled. Proste? Mam nadzieję, e tak. Za- pewne zauwa yłeś, e zajmowałem się dotychczas tylko poleceniami głównymi. Jak dotrzeć do poleceń, umieszczonych wewnątrz tych poleceń? Zastanów się i spróbuj napisać odpowiedni kod.
  20. 20. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 59 Obiekt Assistant Obiekt Assistant to popularny w pakiecie Asystent. Wiadomo, e generalnie podpo- wiada, co mamy zrobić, przy okazji posługując się ciekawymi efektami graficznymi. Asystent to doskonałe narzędzie do Twoich aplikacji. Mo na go tak zaprogramować, by nie tylko wyświetlał podpowiedzi, ale równie współdziałał z elementami interfej- su aplikacji. Mo esz, na przykład, za pomocą Asystenta uruchamiać polecenia z paska lub wstawiać grafikę do dokumentu. Ciekawą sprawą jest to, e cały proces zachodzi bez zamykania okna aplikacji. Asystenta mo esz zaprogramować tak, by wykonywał wszystkie czynności jakie chcesz. Do tego celu musisz ustawić zmienną obiektową, która pozwoli na manipulowanie wszystkimi właściwościami i metodami Asystenta. Mo esz na przykład uczynić Asy- stenta widocznym, przenieść go w inne miejsce na ekranie, określić animację, którą chcesz uruchomić i wyświetlić Assistant balloons (słowa tego nie tłumaczymy, ale dla ułatwienia będę posługiwał się określeniem podpowiedź, podpowiedzi) zawierające okre- ślony przez Ciebie tekst i kontrolki (np. pola opcji). Obiekt Assistant reprezentuje Asystenta pakietu Office. Obiekt Assistant nie jest ko- lekcją obiektów Assistant i tylko jeden Assistant mo e być aktywny w danym czasie. Popularny Asystent mo e przyjmować jedną z wielu zaprogramowanych postaci. Po- staci te ukryte są w plikach o rozszerzeniu *.act i najczęściej znajdują się w katalogu C:Program FilesMicrosoft OfficeOfficeActors. Tabela 2.2 przedstawia nazwy po- szczególnych plików dla ka dej z postaci Asystenta. Tabela 2.2. Nazwy plików Asystenta Postać (nazwa oryginalna) Postać (polski odpowiednik) Nazwa pliku Office Logo Logo Logo.act PowerPup Super Pies Powerpup.act The Genius Geniusz Genius.act Hoverbot Poduszkobot Hoverbot.act Scribble Świstek Scribble.act The Dot Punkt Dot.act Clippit Spinacz Clippit.act Mother Nature Matka Natura MNature.act Will Will Will.act Posługując się nazwą pliku mo esz określić, jakiego Asystenta chcesz w danej chwili wyświetlić. Słu y do tego właściwość FileName obiektu Assistant. Musisz być jednak pewien, e na komputerze u ytkownika zainstalowane są składniki odpowiadające za wyświetlanie odpowiedniej postaci Asystenta. W innym przypadku będzie występował błąd. Ponadto, ka dy z u ytkowników personalizuje Office, co oznacza, e tylko dana postać Asystenta mo e mu odpowiadać.
  21. 21. 60 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Aby wyświetlić aktualną (u ywaną przez u ytkownika) postać Asystenta, wykonaj ten kod: 9KVJ #UUKUVCPV 8KUKDNG 6TWG 'PF 9KVJ Samo wyświetlenie Asystenta jeszcze nic nie oznacza. Nic nie będzie podpowiadał. Do komunikacji z u ytkownikiem poprzez Asystenta będziesz potrzebował obiektu Balloon. Różnice w programowaniu Asystenta dla pakietów Office: do pakietu Office XP Asy- stent jest albo widoczny i dostępny, albo niewidoczny i niedostępny, ale nigdy nie można go całkowicie wyłączyć. Od pakietu Office XP Asystent ma nową właściwość On i może być albo włączony, albo wyłączony. Ta właściwość decyduje o tym, czy Asystent jest dostępny w całym pakiecie. Dlatego, podczas programowania Asy- stenta w pakiecie Office XP, zwróć szczególną uwagę na to, w jakim stanie znaj- dował się Asystent zanim zacząłeś nim manipulować w kodzie. Najlepiej przypisz do zmiennej jego stan przed wywołaniem, a po zakończeniu prac z Asystentem, ustaw stan Asystenta na tę zmienną. Przyjrzyj się listingowi 2.17. Listing 2.17. Korzystanie z Asystenta 5WD #U[U KO E[9NCEQP[ #U $CNQQP KO E[9KFQEP[ #U $CNQQP 9KVJ #UUKUVCPV E[9NCEQP[ 1P E[9KFQEP[ 8KUKDNG 'PF 9KVJ RT[YTQE WUVCYKGPKC #U[UVGPVC 9KVJ #UUKUVCPV 1P E[9NCEQP[ 8KUKDNG E[9KFQEP[ 'PF 9KVJ Balloon Jak ju wspomniałem, obiekt Balloon Asystenta słu y do komunikacji z u ytkownikiem Twojej aplikacji. Jest on zaprojektowany tak, byś mógł łatwo go wywoływać, ale nie ma na celu zastąpienia okien dialogowych. Powiedzmy sobie, e jest tylko środkiem pomocniczym. Obiekt Balloon reprezentuje podpowiedź wyświetlaną za pomocą Asystenta, z na- główkiem i wiadomością tekstową. Mo e on zawierać kontrolki takie jak: pola wyboru (CheckBoxes) lub etykiety (Labels). Balloon nie jest kolekcją Balloons, poniewa jest pojedynczym obiektem. W jednym czasie mo e być widoczny tylko jeden Balloon, aczkolwiek mo liwe jest zdefiniowanie wielu Balloons i wywołanie dowolnego z nich wtedy, kiedy będzie potrzebny. Do utworzenia nowego obiektu Balloon słu y właści- wość NewBalloon.
  22. 22. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 61 Listing 2.18 przedstawia przykład tworzenia pojedynczego obiektu Balloon. Listing 2.18. Tworzenie pojedynczego obiektu Balloon 5WD 2QLGF2QFRQY KO RQFRQYKGF #U $CNNQQP 5GV RQFRQYKGF #UUKUVCPV0GY$CNNQQP 9KVJ RQFRQYKGF *GCFKPI 1VQ PCLRTQUVU[ RT[MNCF VYQTGPKC RQFRQYKGFK 6GZV KO RQFRQYKGF #U $CNNQQP XD%T.H A 5GV RQFRQYKGF #UUKUVCPV0GY$CNNQQP XD%T.H A 9KVJ RQFRQYKGF XD%T.H A *GCFKPI 1VQ PCLRTQUVU[ RT[MNCF VYQTGPKC RQFRQYKGFK å XD%T.H A 6GZV ,GUV VQ PCLRTQUVU[ RT[MNCF VYQTGPKC RQFRQYKGFK å XD%T.H A $WVVQP OUQ$WVVQP5GV1- XD%T.H A 5JQY XD%T.H A 'PF 9KVJ $WVVQP OUQ$WVVQP5GV1- 5JQY 'PF 9KVJ 'PF 5WD Listing 2.19 przedstawia przykład tworzenia wielu obiektów Balloon. Listing 2.19. Przykład tworzenia wielu obiektów Balloon 5WD -KNMC2QFRQYKGFK#U[UVGPVC KO RQFRQYKGF #U $CNNQQP KO RQFRQYKGF #U $CNNQQP KO RQFRQYKGF #U $CNNQQP KO QFR #U .QPI 5GV RQFRQYKGF #UUKUVCPV0GY$CNNQQP 9KVJ RQFRQYKGF *GCFKPI 2QFRQYKGF RKGTYUC 6GZV %[ EJEGU QDCE[E MQNGLPC RQFRQYKGF! $WVVQP OUQ$WVVQP5GV1M%CPEGN 'PF 9KVJ 5GV RQFRQYKGF #UUKUVCPV0GY$CNNQQP 9KVJ RQFRQYKGF *GCFKPI 2QFRQYKGF FTWIC 6GZV %[ EJEGU QDCE[E MQNGLPC RQFRQYKGF! $WVVQP OUQ$WVVQP5GV1M%CPEGN 'PF 9KVJ 5GV RQFRQYKGF #UUKUVCPV0GY$CNNQQP 9KVJ RQFRQYKGF *GCFKPI 2QFRQYKGF VTGEKC 6GZV 6Q LW MQPKGE RQFRQYKGFK $WVVQP OUQ$WVVQP5GV1- 'PF 9KVJ
  23. 23. 62 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA QFR RQFRQYKGF5JQY +H QFR OUQ$CNNQQP$WVVQP1- 6JGP QFR RQFRQYKGF5JQY +H QFR OUQ$CNNQQP$WVVQP1- 6JGP RQFRQYKGF5JQY 'PF +H 'PF +H 'PF 5WD Listing 2.20 przedstawia trzy procedury. Pierwsza wywołuje procedurę tworzącą nową podpowiedź z kilkoma opcjami wyboru i wyświetla podpowiedź. Druga jest powołana do tego, by dowiedzieć się, jakiego wyboru dokonał u ytkownik, a trzecia wyświetla, równie przez Asystenta, odpowiedź. Listing 2.20. Kompleksowa obsługa Asystenta 5WD 9[YQNCL1RELG #U[UVGPVCL1RELG V[VWN VGMUV Y[DQT Y[DQT Y[DQT 'PF 5WD 5WD #U[UVGPVCL1RELG V[VWN #U 5VTKPI VGMUV #U 5VTKPI QRELC2TCYKFNQYC #U .QPI å2CTCO#TTC[ Y[DQT[ #U 8CTKCPV KO RQFRQYKGF #U $CNNQQP KO K #U .QPI Z #U .QPI KO Y[DQT #U 5VTKPI 5GV RQFRQYKGF #UUKUVCPV0GY$CNNQQP 9KVJ RQFRQYKGF $CNNQQP6[RG OUQ$CNNQQP6[RG$WNNGVU $WVVQP OUQ$WVVQP5GV1M%CPEGN *GCFKPI V[VWN 6GZV VGMUV RQDKGT KNG RTGMCCP[EJ RCTCOGVTQY (QT K .$QWPF Y[DQT[ 6Q 7$QWPF Y[DQT[ Y[DQT Y[DQT[ K %JGEM$QZGU K 6GZV Y[DQT 0GZV K Z 5JQY 'PF 9KVJ ,CMC1RELC RQFRQYKGF Z QRELC2TCYKFNQYC 'PF 5WD 5WD ,CMC1RELC DCN #U $CNNQQP Y[D #U .QPI RTCY #U .QPI KO K #U .QPI KO VOR$QQN #U $QQNGCP +H Y[D 6JGP VOR$QQN DCN%JGEM$QZGU RTCY%JGEMGF +H VOR$QQN 6TWG 6JGP #U[UVGPVCL1FRQYKGF 5WRGT $TCYQ RTCYKFNQYC QFRQYKGF
  24. 24. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 63 'NUG #U[UVGPVCL1FRQYKGF 7WWRRU 2T[MTQ OK VQ PKG LGUV RTCYKFNQYC åQFRQYKGF 'PF +H 'PF +H 'PF 5WD Obiekt FileSearch Obiekt FileSearch jest programowym odzwierciedleniem okna dialogowego Otwórz do- stępnego z menu Plik. Oznacza to, e masz do dyspozycji wszystkie metody i właści- wości, które są normalnie dostępne w powołanym oknie. Co ciekawe, wcale nie mu- sisz u ywać tego okna, a wręcz mo esz skonstruować własne. Obiekt FileSearch posiada dwie metody i kilka właściwości, których mo esz u yć do zbudowania własnego okna do poszukiwania plików. Musisz u yć właściwości File- Search, by zwrócić odwołanie do tego obiektu. Następnie posłu się metodą NewSearch, by zresetować (wyczyścić) wszystkie kryteria poprzedniego poszukiwania. Metoda NewSearch nie czyści kryterium LookIn, czyli ście ki, która jest przeszukiwa- na. Aby ją wyczyścić, a raczej ustawić na nowo, po prostu przypisz jej inną wartość. Listing 2.21 przedstawia przykład kodu, który powoduje wyświetlenie wszystkich pli- ków, które w nazwie mają słowo „office”, znalezionych w określonej lokalizacji. W przy- padku niepowodzenia wyświetlony zostanie komunikat, e nie znaleziono określonych plików. Listing 2.21. Poszukiwanie plików z kodu 5WD 5WMCL2NKMQY KO MQO #U 5VTKPI 9KVJ #RRNKECVKQP(KNG5GCTEJ 0GY5GCTEJ .QQM+P % 5GCTEJ5WD(QNFGTU 6TWG (KNG0COG QHHKEG (KNG6[RG OUQ(KNG6[RG#NN(KNGU +H 'ZGEWVG 6JGP 5GNGEV %CUG (QWPF(KNGU%QWPV %CUG MQO PCNCNGO (QWPF(KNGU%QWPV A RNKM YGFNWI CFCP[EJ MT[VGTKQY RQUWMKYCPKC /UI$QZ MQO XD+PHQTOCVKQP -QOWPKMCV %CUG MQO PCNCNGO (QWPF(KNGU%QWPV A RNKMK YGFNWI CFCP[EJ MT[VGTKQY RQUWMKYCPKC /UI$QZ MQO XD+PHQTOCVKQP -QOWPKMCV
  25. 25. 64 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA %CUG 'NUG MQO PCNCNGO (QWPF(KNGU%QWPV A RNKMQY YGFNWI CFCP[EJ MT[VGTKQY RQUWMKYCPKC /UI$QZ MQO XD+PHQTOCVKQP -QOWPKMCV 'PF 5GNGEV (QT K 6Q (QWPF(KNGU%QWPV /UI$QZ (QWPF(KNGU K XD+PHQTOCVKQP K 0GZV K 'NUG /UI$QZ 0KG PCNCNGO RNKMQY YGFNWI CFCP[EJ A MT[VGTKQY RQUWMKYCPKC XD'ZENCOCVKQP $TCM 'PF +H 'PF 9KVJ 'PF 5WD Na dysku CD-ROM w katalogu PrzykladyCz_II znajdziesz przykład własnego okienka do poszukiwania plików, plik FileSearch.xls. Obiekt DocumentProperties Ka dy plik pakietu Office ma wbudowane pewne właściwości. Mo esz dodawać rów- nie własne właściwości, czy to manualnie, czy to z kodu. U ywając tych właściwości mo esz tworzyć, przechowywać i śledzić informacje o dokumentach pakietu Office. Są to między innymi: data utworzenia, autor, dane o osobie, która dokonała ostatnich zmian i wiele, wiele innych. MS Access nie posiada obiektu DocumentProperties do przechowywania wbudowa- nych i własnych właściwości wyświetlanych w oknie dialogowym Właściwości bazy danych. Aby zwrócić kolekcję DocumentProperties, u yj dwóch podstawowych właściwości: BuiltInDocumentProperties, zawierającej wszystkie wbudowane właściwości dokumentu, CustomDocumentProperties, zawierającej wszystkie dodane właściwości dokumentu. Listing 2.22 przedstawia przykładową procedurę wyliczającą po nazwie wbudowane wła- ściwości aktywnego skoroszytu i ich wartości. Listing 2.22. Wyliczanie wbudowanych właściwości aktywnego skoroszytu i ich wartości 5WD 9[NKE9DWFQYCPG9NCUEKYQUEK'ZEGN 1P 'TTQT )Q6Q 'TTA9[NKE9DWFQYCPG9NCUEKQYUEK'ZEGN TY 9QTMUJGGVU #EVKXCVG
  26. 26. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 65 (QT 'CEJ R +P #EVKXG9QTMDQQM$WKNVKPQEWOGPV2TQRGTVKGU %GNNU TY 8CNWG R0COG %GNNU TY 8CNWG R8CNWG TY TY 0GZV 'ZKV 5WD 'TTA9[NKE9DWFQYCPG9NCUEKQYUEK'ZEGN 5GNGEV %CUG 'TT0WODGT %CUG %GNNU TY 8CNWG DTCM FCP[EJ 4GUWOG 0GZV %CUG 'NUG /UI$QZ 2T[E[PC DNGFW 'TTGUETKRVKQP XD%TKVKECN $NCF PT å 'TT0WODGT 'PF 5GNGEV 'TT%NGCT 'PF 5WD Identyczną procedurę nale ałoby napisać do wyliczenia własnych, dodanych właściwo- ści danego dokumentu. Oczywiście, jeśli dany kod miałby być uruchomiony dla aplika- cji MS Word, zamiast wyra enia #EVKXG9QTMDQQM nale ałoby u yć #EVKXGQEWOGPV. Posługując się tymi właściwościami mo na bardzo du o się dowiedzieć o historii do- kumentu. Mianowicie, kiedy i przez kogo był ostatnio zapisany, czy został wydruko- wany i kto go drukował oraz uzyskać wiele innych ciekawych informacji. Zastanów się, jak mógłbyś je wykorzystać. Środowisko aplikacji Dlaczego środowisko aplikacji? Nazwałem ten rozdział tak, poniewa wszystkie podane funkcje są związane ze środowiskiem, otoczeniem, sprawami związanymi z aplikacją, którą projektujesz. Bardzo często oprócz typowych informacji zawartych w dokumen- cie, skoroszycie czy bazie danych będziesz potrzebował innych, np. jaki u ytkownik jest w tej chwili zalogowany? gdzie jest katalog systemowy, tymczasowy? jak wywołać inny program? i wiele, wiele innych. Funkcja Environ Pierwsza z kilku funkcji związanych ze środowiskiem aplikacji, bardzo interesująca. Słu y do zwracania wartości typu 5VTKPI odpowiadającej wartości zmiennej otocze- nia systemu operacyjnego. Ja osobiście u ywałem jej w kilku sytuacjach:
  27. 27. 66 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Dla aplikacji pracującej w Windows NT® odczytywałem u ytkownika. W ten sposób pomijałem proces logowania uprawnionych u ytkowników. Oczywiście aplikacja kontrolowała, kto miał nadane uprawnienia. Do zwrócenia wartości ście ki katalogu TEMP. Składnia tej funkcji jest następująca: 'PXKTQP ]GPXUVTKPI ^ PWODGT_. GPXUVTKPI — jest to wyra enie znakowe zawierające nazwę zmiennej otoczenia. Argument nieobowiązkowy. PWODGT — jest to wyra enie numeryczne odpowiadające liczbie porządkowej ciągu otoczenia w tablicy ciągów otoczenia. Argument PWODGT mo e być dowolnym wyra eniem numerycznym, ale przed u yciem jego wartość jest zaokrąglana do najbli szej liczby całkowitej. Argument nieobowiązkowy. Mo esz posłu yć się tą funkcją na dwa sposoby: 1. U yć argumentu GPXUVTKPI, na przykład tak: OKGPPC 'PXKTQP 2#6* Je eli argument GPXUVTKPI zostanie znaleziony w tablicy ciągów otoczenia, zwracana jest wartość Zmiennej środowiskowej. 2. U yć argumentu PWODGT: OKGPPC 'PXKTQP Je eli argument PWODGT zostanie znaleziony w tablicy ciągów otoczenia, zwracana jest nazwa zmiennej i jej wartość w następującej postaci: OKGPPCYCTVQUEAOKGPPGL Kiedy nie zostanie znaleziony aden z argumentów, funkcja 'PXKTQP zwróci ciąg o zerowej długości (). W listingu 2.23 funkcja 'PXKTQP zwraca nazwy i wartości wszystkich zmiennych śro- dowiska. Listing 2.23. Wyliczanie zmiennych środowiskowych 5WD 9[NKEOKGPPG KO OKGPPC #U 5VTKPI -QOWPKMCV #U 5VTKPI KO K #U +PVGIGT K Q OKGPPC 'PXKTQP K -QOWPKMCV -QOWPKMCV XD%T OKGPPC K K .QQR 7PVKN OKGPPC /UI$QZ -QOWPKMCV 'PF 5WD
  28. 28. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 67 Funkcja Shell Funkcja ta uruchamia określony program. W przypadku powodzenia zwraca wartość ty- pu 8CTKCPV (QWDNG) reprezentującą identyfikator zadania odpowiadającego uruchomio- nemu programowi. W przypadku niepowodzenia zwraca zero. Składnia tej funkcji: 5JGNN RCVJPCOG=YKPFQYUV[NG?. RCVJPCOG — jest to nazwa programu, który ma być uruchomiony. U ycie wraz ze wszystkimi potrzebnymi argumentami lub opcjami podawanymi w wierszu poleceń; mo e zawierać nazwę katalogu lub folderu oraz nazwę dysku. Argument obowiązkowy typu 8CTKCPV (5VTKPI). YKPFQYUV[NG — podając ten argument określasz styl okna, w którym ma być wykonywany program. Pomijając go, uruchomisz program w postaci zminimalizowanej z fokusem. Argument nieobowiązkowy typu 8CTKCPV (+PVGIGT). Argument ten mo e przyjąć jedną z wartości przedstawionych w tabeli 2.3. Tabela 2.3. Wartości parametru windowstyle Wartość Opis działania XD*KFG 0 Okno jest ukrywane, a fokus jest przekazywany do tego ukrytego okna. XD0QTOCN(QEWU 1 Okno otrzymuje fokus, a rozmiar i poło enie okna są przywracane do stanu początkowego. XD/KPKOKGF(QEWU 2 Okno jest wyświetlane w postaci zminimalizowanej z fokusem. XD/CZKOKGF(QEWU 3 Okno jest maksymalizowane i ma fokus. XD0QTOCN0Q(QEWU 4 Odtwarzany jest ostatni rozmiar i poło enie okna. Aktualnie aktywne okno pozostaje aktywne. XD/KPKOKGF0Q(QEWU 6 Okno jest wyświetlane jako ikona. Aktualnie aktywne okno pozostaje aktywne. Funkcja 5JGNN uruchamia programy w sposób asynchroniczny. Oznacza to, że pro- gram uruchomiony przez funkcję 5JGNN może się nie zakończyć przed rozpoczęciem wykonywania instrukcji występujących po funkcji 5JGNN. Przykład wykorzystania funkcji 5JGNN przedstawia listing 2.24. Listing 2.24. Przykład wykorzystania funkcji Shell KO /QL2TQITCO /QL2TQITCO 5JGNN %/QL2TQITCO':' +H /QL2TQITCO 6JGP VWVCL QMTGUN EQ EJEGU TQDKE WTWEJQOKQP[O RTQITCOGO 'NUG /UI$QZ 7TWEJQOKGPKG RTQITCOW PKG RQYKQFNQ UKG XD%TKVKECN 79#)# 'PF +H
  29. 29. 68 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Spotkałem się z wykorzystaniem funkcji 5JGNN do pakowania plików, które były na- stępnie wysyłane do zainteresowanych osób. Muszę przyznać, e jest to bardzo ciekawe wykorzystanie tej funkcji. Instrukcja AppActivate Instrukcja #RR#EVKXCVG uaktywnia okno aplikacji. Składnia: #RR#EVKXCVG VKVNG= YCKV?. VKVNG — wyra enie znakowe określające tekst umieszczony na pasku tytułu uaktywnianego okna aplikacji. W celu uaktywnienia aplikacji zamiast argumentu VKVNG mo na równie u yć identyfikatora zadania zwracanego przez funkcję 5JGNN. Argument obowiązkowy. YCKV — wartość typu $QQNGCP, która określa, czy aplikacja wołająca inną aplikację ma fokus. Wartość (CNUG (domyślnie) powoduje, e wywoływana aplikacja jest uaktywniana niezale nie od tego, czy aplikacja miała fokus. Wartość 6TWG powoduje, e aplikacja wołająca czeka, a zostanie do niej przekazany fokus, a następnie uaktywnia podaną aplikację. Argument nieobowiązkowy. Instrukcja #RR#EVKXCVG przenosi fokus na podaną aplikację lub okno, ale nie wpływa na to, czy aplikacja jest minimalizowana czy maksymalizowana. Fokus jest przenoszony z okna uaktywnionej aplikacji, gdy u ytkownik wykonuje czynność związaną ze zmianą fokusu lub zamyka okno dialogowe. Aby uruchomić aplikację lub ustawić styl okna, nale y u yć funkcji 5JGNN. Podczas określania, która aplikacja ma zostać uaktywniona, argument VKVNG jest porównywany z tytułami wszystkich aktualnie działających aplikacji. Jeśli żaden z tytułów okien nie jest zgodny z porównywanym wzorcem, uruchamiana jest ta aplikacja, dla której początkowa część tytułu odpowiada wartości argumentu VKVNG. Jeśli zostało uruchomionych kilka kopii tej samej aplikacji o podanym tytule, zosta- nie wybrana jedna w nich. Gdy podany program jest ju uruchomiony, uaktywniasz jego okno wywołując go w podany sposób: #RR#EVKXCVG /KETQUQHV 9QTF Poniewa instrukcja #RR#EVKXCVG mo e u ywać wartości zwróconej przez funkcję 5JGNN, mo esz uaktywnić okno aplikacji poprzednio uruchomionej funkcją 5JGNN. Przykłady wykorzystania funkcji 5JGNN i #RR#EVKXCVG przedstawia listing 2.25. Listing 2.25. Przykłady wykorzystania funkcji Shell i AppActivate 9QTF+ 5JGNN %2TQITCO (KNGU/KETQUQHV 1HHKEG1HHKEG9+0914':' #RR#EVKXCVG 9QTF+ 'ZEGN+ 5JGNN %2TQITCO (KNGU/KETQUQHV 1HHKEG1HHKEG':%'.':' #RR#EVKXCVG 'ZEGN+
  30. 30. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 69 Funkcja DoEvents Funkcja ta przekazuje sterowanie do systemu operacyjnego, umo liwiając przetwarzanie zdarzeń. Sterowanie to zwracane jest po obsłu eniu przez system operacyjny wszystkich zdarzeń z systemowej kolejki oraz po wysłaniu z kolejki SendKeys wszystkich kluczy. We wszystkich aplikacjach Office funkcja Q'XGPVU zwraca wartość zero. Z kolei w au- tonomicznych wersjach systemu Visual Basic, jak np. Visual Basic, Standard Edition, funkcja Q'XGPVU zwraca wartość typu +PVGIGT reprezentującą liczbę otwartych for- mularzy. Funkcja Q'XGPVU jest bardzo przydatna, gdy wykonywany program zajmuje du o czasu procesora. Korzystając z tej funkcji (tylko w razie takiej potrzeby), pozwalasz systemo- wi operacyjnemu na obsługę bez zbytniego opóźnienia zdarzeń takich, jak naciśnięcia klawiszy czy kliknięcia myszą. Przekazując sterowanie za pomocą funkcji Q'XGPVU, upewnij się, czy procedura oddająca sterowanie NIE ZOSTANIE ponownie wywołana z innej części programu przed powrotem sterowania po pierwszym wywołaniu funkcji Q'XGPVU. Grozi to trud- nymi do przewidzenia skutkami, uszkodzeniami plików, a nawet systemu. Pamię- taj też, że funkcji Q'XGPVU nie należy stosować, jeśli inne aplikacje mogą w tym czasie odwoływać się do procedury, która oddała sterowanie. Jak u ywać tej funkcji, poka ę przy opisywaniu kolejnej. Funkcja Timer Zwraca wartość typu 5KPING określającą liczbę sekund, które minęły od północy. W tym przykładzie (listing 2.26) funkcja 6KOGT przerywa wykonywanie aplikacji na okre- ślony czas i pozwala, by w trakcie tej przerwy mogły działać inne procesy. Listing 2.26. Przykład przerwania wykonywania aplikacji KO NWIQUE2TGTY[ 5VCTV -QPKGE %CU%CNM +H /UI$QZ 0CEKUPKL 6CM CD[ RTGTYCE RTQITCO PC UGMWPF XD;GU 6JGP NWIQUE2TGTY[ 7UVCY FNWIQUE RTGTY[ 5VCTV 6KOGT 2QDKGT ECU RQECVMW RTGTY[ Q 9JKNG 6KOGT 5VCTV NWIQUE2TGTY[ Q'XGPVU 2QYQN FKCNCE KPP[O RTQEGUQO .QQR -QPKGE 6KOGT 2QDKGT ECU CMQPEGPKC RTGTY[ %CU%CNM -QPKGE 5VCTV 1DNKE ECU ECNMQYKV[ /UI$QZ 2TGTYC VTYCNC %CU%CNM UGMWPF 'NUG 'PF 'PF +H
  31. 31. 70 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Aplikacja MS Excel posiada oddzielną funkcję. W aplikacji MS Excel do zatrzymania wykonywania kodu na określony czas lub do określonej godziny służy funkcja 9CKV. Listing 2.27 ilustruje procedurę %GMCL, która w parametrach wywołania pobiera czas w sekundach. Listing 2.27. Procedura Czekaj 5WD CVT[OCL /UI$QZ 2Q PCEKUPKGEKW 1- CRNKMCELC QUVCPKG YUVT[OCPC PC UGMWPF %GMCL /UI$QZ /KPGNQ UGMWPF 'PF 5WD 5WD %GMCL KNG5GMWPF #U +PVGIGT KO CMV)QF #U +PVGIGT KO CMV/KP #U +PVGIGT KO CMV5GM #U +PVGIGT KO ECU1EGM #U 5VTKPI CMV)QF *QWT 0QY CMV/KP /KPWVG 0QY CMV5GM 5GEQPF 0QY ECU1EGM 6KOG5GTKCN CMV)QF CMV/KP CMV5GM KNG5GMWPF #RRNKECVKQP9CKV ECU1EGM 'PF 5WD Instrukcja SendKeys Wysyła do aktywnego okna dane generowane przez naciśnięcie klawiszy, tak jakby zostały one wprowadzone z klawiatury. Składnia: 5GPF-G[U UVTKPI= YCKV?. UVTKPI — wyra enie znakowe określające naciśnięcia klawiszy. Argument obowiązkowy. Aby u yć klawiszy specjalnych, musisz wpisać ich kod (tabela 4.2). YCKV — wartość typu $QQNGCP określająca typ czekania. Wartość (CNUG (domyślnie) oznacza, e sterowanie powróci do procedury zaraz po wysłaniu sekwencji naciśnięć klawiszy. Wartość 6TWG oznacza, e sterowanie powróci do procedury po przetworzeniu wysłanych naciśnięć klawiszy. Argument nieobowiązkowy. Ka dy klawisz jest reprezentowany przez jeden lub więcej znaków. Aby przesłać je- den znak umieszczony na klawiaturze, jako wartość nale y podać ten znak. Na przy- kład, aby przesłać literę A, argumentowi 5VTKPI nale y nadać wartość #. Aby przesłać więcej ni jeden znak, nale y dołączać kolejne znaki do ciągu. I tak, aby przesłać lite- ry A, B i C, argumentowi 5VTKPI nale y nadać wartość #$%. Znaki plus (+), daszek (^), procent (%), tylda (~) i nawiasy okrągłe ( ) mają w instrukcji 5GPF-G[U specjalne znaczenie. Aby przesłać dowolny z tych znaków, nale y umieścić je w nawiasach klamrowych {}. Na przykład, aby przesłać znak plus, nale y napisać] _.
  32. 32. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 71 Nawiasy kwadratowe [ ] nie mają specjalnego znaczenia w instrukcji 5GPF-G[U, jed- nak e muszą być one umieszczane w nawiasach okrągłych. Mogą one mieć znaczenie w innych aplikacjach, np. przy dynamicznej wymianie danych (DDE). Aby przesłać na- wiasy klamrowe, nale y wpisać ]]_ i ]__. Znaki, które nie są wyświetlane po naciśnięciu klawisza, takie jak Enter czy Tab, oraz klawisze oznaczające akcje, a nie znaki, są reprezentowane przez następujące kody (tabela 2.4): Aby przesłać kombinację klawisza z klawiszami Shift, Ctrl, lub Alt, nale y poprzedzić kod klawisza odpowiednimi kodami z tabeli 2.5 Aby określić, e klawisze Shift, Ctrl lub Alt mają być wciśnięte w momencie naciska- nia kilku innych klawiszy, nale y kody tych klawiszy ująć w nawias. Na przykład, aby określić, e ma być wciśnięty klawisz Shift, podczas naciskania klawiszy E i C, nale y napisać '% . Aby określić, e klawisz Shift ma być wciśnięty tylko podczas naciskania klawisza E, nale y napisać '% . Aby określić kolejne naciśnięcia tego samego klawisza, nale y napisać]MNCYKU NKEDC_. Parametry MNCYKU i NKEDC muszą być rozdzielone spacją. Na przykład, ].'(6 _ oznacza, e kod klawisza STRZAŁKA W LEWO ma zostać wysłany 42 razy; ]J _ oznacza, e kod klawisza H zostanie wysłany 10 razy. Za pomocą funkcji 5GPF-G[U nie można wysyłać naciśnięć klawiszy do aplikacji, która nie została zaprojektowana dla systemu Microsoft Windows. 5GPF-G[U nie umożliwia również wysłania klawisza PRINT SCREEN ]2465%_ do żadnej aplikacji. Listing 2.28 ilustruje wykorzystanie funkcji 5JGNN do uruchomienia aplikacji Kalkulator systemu Microsoft Windows. Za pomocą funkcji 5GPF-G[U wysyłane są naciśnięcia kla- wiszy w celu pomno enia liczb i zakończenia pracy Kalkulatora. Listing 2.28. U ycie funkcji Shell i SendKeys w praktyce 5WD /PQGPKG KO YTCE9CTV + YTCE9CTV 5JGNN %#.%':' #RR#EVKXCVG YTCE9CTV (QT + 6Q 5GPF-G[U + ]
  33. 33. _ 6TWG 0GZV + 5GPF-G[U 6TWG 5GPF-G[U ](_ 6TWG 'PF 5WD Automakra Po serii ciekawych instrukcji i funkcji przyszedł czas na automakra. Są one nieroze- rwalnie związane ze środowiskiem aplikacji, to znaczy, e są wykonywane zaraz po uruchomieniu aplikacji czy dokumentu.
  34. 34. 72 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Tabela 2.4. Kody klawiszy funkcyjnych Klawisz Kod BACKSPACE ]$#%-52#%'_, ]$5_ lub ]$-52_ BREAK ]$4'#-_ CAPS LOCK ]%#25.1%-_ DEL lub DELETE ]'.'6'_ lub ]'._ STRZAŁKA W DÓŁ ]190_ END ]'0_ ENTER ]'06'4_ lub ` ESC ]'5%_ HELP ]*'.2_ HOME ]*1/'_ INS lub INSERT ]+05'46_ lub ]+05_ STRZAŁKA W LEWO ].'(6_ NUM LOCK ]07/.1%-_ PAGE DOWN ]2)0_ PAGE UP ]2)72_ PRINT SCREEN ]2465%_ STRZAŁKA W PRAWO ]4+)*6_ SCROLL LOCK ]5%41...1%-_ TAB ]6#$_ STRZAŁKA W GÓRĘ ]72_ F1 ](_ F2 ](_ F3 ](_ F4 ](_ F5 ](_ F6 ](_ F7 ](_ F8 ](_ F9 ](_ F10 ](_ F11 ](_ F12 ](_ F13 ](_ F14 ](_ F15 ](_ F16 ](_
  35. 35. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 73 Tabela 2.5. Kody klawiszy specjalnych Klawisz Kod SHIFT CTRL @ ALT Automakra to takie makra, które noszą specjalną nazwę, przez co program automa- tycznie je uruchamia, gdy zajdzie określona sytuacja, na przykład, kiedy uruchomisz lub zamkniesz dany program lub dokument. Tabela 2.6 przedstawia nazwy makr rozpoznawane przez poszczególne aplikacje Office. Tabela 2.6. Nazwy automakr Program Nazwa Kiedy zostaje uruchomione? Word #WVQ'ZGE Podczas otwierania (ładowania) szablonu globalnego Word. #WVQ0GY Za ka dym razem, kiedy tworzysz nowy dokument. #WVQ1RGP Za ka dym razem, kiedy otwierasz istniejący dokument (szablon). #WVQ%NQUG Za ka dym razem, kiedy zamykasz dokument (szablon). #WVQ'ZKV Podczas zamykania szablonu globalnego lub zamykania aplikacji Word. #WVQA1RGP Za ka dym razem, kiedy otwierasz istniejący skoroszyt (szablon). #WVQA#EVKXCVG Za ka dym razem, kiedy uaktywniasz obiekt. Excel #WVQAGCEVKXCVG Za ka dym razem, kiedy deaktywujesz obiekt. #WVQA%NQUG Za ka dym razem, kiedy zamykasz skoroszyt (szablon). Access #WVQ'ZGE Za ka dym razem, kiedy otwierasz bazę danych. Oczywiście automakra nie są jedynymi procedurami uruchamianymi podczas otwie- rania określonego rodzaju dokumentu. Większość dokumentów pakietu Office posia- da własne procedury uruchamiane wraz z otwarciem czy zamknięciem dokumentu. Podstawowe procedury przedstawione są w tabeli 2.7. Je eli chcesz poznać inne, zaj- rzyj do przeglądarki obiektów. Tabela 2.7. Inne makra uruchamiane automatycznie Aplikacja Nazwa procedury Kiedy zostaje uruchomione? Word QEWOGPVA0GY Za ka dym razem, kiedy tworzysz nowy dokument. QEWOGPVA1RGP Za ka dym razem, kiedy otwierasz istniejący dokument (szablon). QEWOGPVA%NQUG Za ka dym razem, kiedy zamykasz istniejący dokument (szablon). Excel 9QTMDQQMA1RGP Za ka dym razem, kiedy otwierasz skoroszyt (szablon). 9QTMDQQMA$GHQTG%NQUG Za ka dym razem, kiedy zamykasz skoroszyt (szablon).
  36. 36. 74 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA W literaturze spotkałem się z określeniem, i automakra pozostały dla zachowania zgod- ności z poprzednimi wersjami VBA dla Office. Ale czy tak jest naprawdę? Nie wiem. Wielokrotnie spotkałem się nawet w najnowszych szablonach, kreatorach z autopro- cedurami, zamiast z nowymi procedurami uruchomieniowymi dla poszczególnych do- kumentów. Jak utworzyć automakro w Wordzie? Je eli automakro ma być umieszczone w szablonie globalnym… Wstaw moduł do PQTOCN i nadaj mu dowolną nazwę. W module tym umieść na przykład taką procedurę: 5WD #WVQ'ZGE VW KPUVTWMELG MVQTG OCLC D[E Y[MQP[YCPG 'PF 5WD Je eli automakro ma być umieszczone w szablonie i (lub) dokumencie… Wstaw moduł do tego szablonu (dokumentu) i nadaj mu dowolną nazwę. W module tym umieść na przykład taką procedurę: 5WD #WVQ1RGP VW KPUVTWMELG MVQTG OCLC D[E Y[MQP[YCPG 'PF 5WD Automakra mogą być przechowywane w szablonie globalnym, innym szablonie lub dokumencie. W przypadku wystąpienia konfliktu nazw (wiele makr będzie miało tę samą nazwę), Word uruchomi makro w najbliższym kontekście. Na przykład, jeżeli utworzysz makro #WVQ%NQUG w szablonie i dokumencie, Word uruchomi tylko makro z dokumentu. Jeśli utworzysz makro #WVQ0GY w szablonie globalnym, makro to zosta- nie uruchomione pod warunkiem, że nie będzie zawierał takiego żaden z otwartych dokumentów lub szablonów. Jak utworzyć automakro w Excelu? Podobnie jak w Wordzie, do aktywnego skoroszytu musisz wstawić moduł i nadać mu dowolną nazwę. Następnie umieść w nim procedurę, jak pokazuje przykład poni ej: 5WD #WVQA1RGP VW KPUVTWMELG MVQTG OCLC D[E Y[MQP[YCPG 'PF 5WD Aby uruchomić makra #WVQA#EVKXCVG lub #WVQAGCEVKXCVG, musisz posłużyć się me- todą 4WP#WVQ/CETQU. Metoda 4WP#WVQ/CETQU dla MS Excela ma następującą składnię: Y[TCGPKG4WP#WVQOCETQU MVQTG Y[TC GPKG — określa skoroszyt. Argument obowiązkowy. MVÎTG — argument obowiązkowy, określający makro do uruchomienia. Mo e przyjąć jedną z następujących postaci (tabela 2.8):
  37. 37. Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 75 Tabela 2.8. Wartości argumentu które dla metody RunAutoMacros Wartość Uruchamia… ZN#WVQ1RGP procedurę #WVQA1RGP. ZN#WVQ%NQUG procedurę #WVQA%NQUG. ZN#WVQ#EVKXCVG procedurę #WVQA#EVKXCVG. ZN#WVQGCEVKXCVG procedurę #WVQAGCEVKXCVG. Jak utworzyć automakro w programie Access? Tu zagadnienie nieco się komplikuje, a to ze względu na kilka czynników. Postaram się jednak Ci to wszystko wytłumaczyć. Mo esz utworzyć makro, które będzie automatycznie się uruchamiało podczas otwiera- nia bazy danych na dwa sposoby: 1. Dodać nowe makro (oczywiście odpowiednio je nazwać) i tam określić wszystkie polecenia do wykonania. Zawartość makra #WVQ'ZGE: Pole Akcja Pole Nazwa formularza 1VYQT HQTOWNCT 1MTGUN PCYG HQTOWNCTC MVQT[ OC D[E WTWEJCOKCP[ PC UVCTEKG 2. Wstawić moduł i umieścić w nim funkcję, którą ka dorazowo będzie wykonywała baza danych podczas otwierania. Następnie dodać nowe makro, a w nim określić, jaki kod ma wykonać. W polu Akcja umieść 7TWEJQO MQF, a w polu Nazwa funkcji nazwę funkcji, która ma zostać wykonana. Zawartość makra #WVQ'ZGE: Pole Akcja Pole Nazwa funkcji 7TWEJQO MQF 1VYCTEKG Zawartość modułu: (WPEVKQP 1VYCTEKG VW KPUVTWMELG MVQTG OCLC D[E Y[MQP[YCPG 'PF (WPEVKQPU Oczywiście, sposób drugi jest bardziej wydajny, bo masz praktycznie nieograniczone mo liwości (no, chyba e ograniczone do mo liwości języka VBA i Twoich). Zaś sposób pierwszy pozwala Ci wykonać tylko akcje dostępne w polu Akcja. Zapewne zwróciłeś uwagę, że w aplikacjach Word i Excel używaliśmy słowa kluczo- wego 5WD, a w Access (WPEVKQP. I to jest właśnie ta podstawowa różnica w konstruk- cji modułu.
  38. 38. 76 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Aby wyłączyć działanie automakr, wystarczy podczas otwierania określonego doku- mentu Office przytrzymać klawisz Shift. Nie da się jednak zatrzymać automakr za- pisanych w dodatkach. Directory. Przejście przez dotychczasowe rozdziały powinno dać biegłość we wszyst- kich głównych elementach Active Directory i doprowadzić do rozpoczęcia pierwszego rzeczywistego Ostrzeżenie Wiesz ju jak umieszczać automakra w dokumentach Office. Chcę Cię jednak ostrzec, e automakra są często wykorzystywane w wirusach. W dokumentach Word najczęściej dochodzi do zara enia szablonu globalnego, po czym w tym szablonie umieszczana jest procedura #WVQ'ZGE z instrukcjami destrukcyjnymi. Je eli otwierasz jakikolwiek dokument Word, który nie powinien mieć adnych makr czy kodu, a pojawia się ostrze- enie o makrowirusach, oznacza to, e najprawdopodobniej masz zara ony szablon glo- balny. Oczywiście nic tak nie pomo e jak dobry program antywirusowy, ale mo esz spróbować się bronić sam. Utwórz skrót do programu Word, po czym wejdź do wła- ściwości tego skrótu. W polu Obiekt docelowy dodaj na końcu ście ki do programu po spacji parametr O. Spowoduje to wywoływanie aplikacji Word bez opcji uruchamiania automakra. Oczywiście makro #WVQ'ZGE, które sam napisałeś, równie nie zostanie uru- chomione. Jeśli jednak Twoja aplikacja wymaga, by jakieś makro było uruchamiane wraz z programem Word, musisz utworzyć makro i nadać mu na przykład nazwę 9NCUP[ #WVQ'ZGE, po czym otwierać aplikację przez skrót utworzony w następujący sposób: 1. Utwórz skrót do programu Word, po czym wejdź do właściwości tego skrótu. 2. W polu Obiekt docelowy dodaj na końcu ście ki do programu po spacji parametr O oraz nazwę Twego makra (bez spacji): O9NCUP[#WVQ'ZGE. Excel posiada tak e pewne właściwości startowe. Jeśli chcesz, by jakiś skoroszyt był uruchamiany za ka dym razem, kiedy jest uruchamiany Excel, wystarczy, e zapiszesz go w katalogu: Program FilesMicrosoft OfficeOfficeXlStart. Mo esz w ten sposób monitować kto, kiedy i jaki otwierał skoroszyt. Taką metodę wykorzystywał słynny wirus o nazwie „Laroux”. Umieszczał on we wspo- mnianym katalogu skoroszyt o nazwie „Personal”, który automatycznie uruchamiał się wraz programem Excel. Po otwarciu skoroszytu uaktywniał się wirus, który sprawdzał, czy pozostałe skoroszyty (otwarte przez u ytkownika lub nowo utworzone) zawierają ar- kusz o nazwie takiej, jak wirus. Jeśli nie, tworzył taki arkusz, ukrywał i wstawiał moduł z kodem wirusa. Otwarcie tak zara onego pliku na dowolnym, innym komputerze powo- dowało utworzenie pliku Personal.xls (jeśli nie istniał) itd., itd. Istnieje kilkanaście odmian tego wirusa. Najłagodniejsza utrudnia ycie tylko wtedy, jeśli wykonujesz jakieś czyn- ności automatycznie (z kodu), szczególnie kiedy w odwołaniach do arkuszy nie posługi- wałeś się nazwą, a indeksem. W najgroźniejszej swej odmianie wirus formatuje dyski. Przykłady skrótów z opcjami uruchamiania lub wyłączania automakr dla poszczegól- nych aplikacji znajdują się na dysku CD-ROM w katalogu PrzykładyCz_II, pliki *.lnk.

×