SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
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
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
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
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:
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.
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
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?
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
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
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.
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
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
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.
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.
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.
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
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:
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.
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.
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ć.
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.
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
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
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
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
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:
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
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
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+
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
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ć]
_.
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 +     ]
_  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.
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                           ](_
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).
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):
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Tworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceTworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceWydawnictwo Helion
 
Microsoft Office 2007 PL. Rady i wskazówki. Rozwiązania w biznesie
Microsoft Office 2007 PL. Rady i wskazówki. Rozwiązania w biznesieMicrosoft Office 2007 PL. Rady i wskazówki. Rozwiązania w biznesie
Microsoft Office 2007 PL. Rady i wskazówki. Rozwiązania w biznesieWydawnictwo Helion
 
Tworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikTworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikWydawnictwo Helion
 
Macromedia Flash MX 2004. Oficjalny podręcznik
Macromedia Flash MX 2004. Oficjalny podręcznikMacromedia Flash MX 2004. Oficjalny podręcznik
Macromedia Flash MX 2004. Oficjalny podręcznikWydawnictwo Helion
 
Adobe PageMaker 7.0. Oficjalny podręcznik
Adobe PageMaker 7.0. Oficjalny podręcznikAdobe PageMaker 7.0. Oficjalny podręcznik
Adobe PageMaker 7.0. Oficjalny podręcznikWydawnictwo Helion
 
Po prostu OpenOffice.ux.pl 2.0
Po prostu OpenOffice.ux.pl 2.0Po prostu OpenOffice.ux.pl 2.0
Po prostu OpenOffice.ux.pl 2.0Wydawnictwo Helion
 
Excel 2007. Język VBA i makra. Rozwiązania w biznesie
Excel 2007. Język VBA i makra. Rozwiązania w biznesieExcel 2007. Język VBA i makra. Rozwiązania w biznesie
Excel 2007. Język VBA i makra. Rozwiązania w biznesieWydawnictwo Helion
 
ABC tworzenia stron WWW. Wydanie II
ABC tworzenia stron WWW. Wydanie IIABC tworzenia stron WWW. Wydanie II
ABC tworzenia stron WWW. Wydanie IIWydawnictwo Helion
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieWydawnictwo Helion
 
Tworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW w praktyce. Wydanie IITworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW w praktyce. Wydanie IIWydawnictwo Helion
 
Excel z elementami VBA w firmie
Excel z elementami VBA w firmieExcel z elementami VBA w firmie
Excel z elementami VBA w firmieWydawnictwo Helion
 

Was ist angesagt? (20)

Dreamweaver MX 2004
Dreamweaver MX 2004Dreamweaver MX 2004
Dreamweaver MX 2004
 
Tworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceTworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyce
 
Microsoft Office 2007 PL. Rady i wskazówki. Rozwiązania w biznesie
Microsoft Office 2007 PL. Rady i wskazówki. Rozwiązania w biznesieMicrosoft Office 2007 PL. Rady i wskazówki. Rozwiązania w biznesie
Microsoft Office 2007 PL. Rady i wskazówki. Rozwiązania w biznesie
 
Tworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnikTworzenie stron WWW. Ilustrowany przewodnik
Tworzenie stron WWW. Ilustrowany przewodnik
 
ABC tworzenia stron WWW
ABC tworzenia stron WWWABC tworzenia stron WWW
ABC tworzenia stron WWW
 
Macromedia Flash MX 2004. Oficjalny podręcznik
Macromedia Flash MX 2004. Oficjalny podręcznikMacromedia Flash MX 2004. Oficjalny podręcznik
Macromedia Flash MX 2004. Oficjalny podręcznik
 
Adobe PageMaker 7.0. Oficjalny podręcznik
Adobe PageMaker 7.0. Oficjalny podręcznikAdobe PageMaker 7.0. Oficjalny podręcznik
Adobe PageMaker 7.0. Oficjalny podręcznik
 
Contribute 2. Szybki start
Contribute 2. Szybki startContribute 2. Szybki start
Contribute 2. Szybki start
 
Po prostu OpenOffice.ux.pl 2.0
Po prostu OpenOffice.ux.pl 2.0Po prostu OpenOffice.ux.pl 2.0
Po prostu OpenOffice.ux.pl 2.0
 
Po prostu Office 2003 PL
Po prostu Office 2003 PLPo prostu Office 2003 PL
Po prostu Office 2003 PL
 
Excel 2007. Język VBA i makra. Rozwiązania w biznesie
Excel 2007. Język VBA i makra. Rozwiązania w biznesieExcel 2007. Język VBA i makra. Rozwiązania w biznesie
Excel 2007. Język VBA i makra. Rozwiązania w biznesie
 
ABC tworzenia stron WWW. Wydanie II
ABC tworzenia stron WWW. Wydanie IIABC tworzenia stron WWW. Wydanie II
ABC tworzenia stron WWW. Wydanie II
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. Programowanie
 
Tworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW w praktyce. Wydanie IITworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW w praktyce. Wydanie II
 
Po prostu Excel 2003 PL
Po prostu Excel 2003 PLPo prostu Excel 2003 PL
Po prostu Excel 2003 PL
 
Po prostu FrontPage 2003 PL
Po prostu FrontPage 2003 PLPo prostu FrontPage 2003 PL
Po prostu FrontPage 2003 PL
 
Dreamweaver MX. Ćwiczenia
Dreamweaver MX. ĆwiczeniaDreamweaver MX. Ćwiczenia
Dreamweaver MX. Ćwiczenia
 
ABC języka HTML i XHTML
ABC języka HTML i XHTMLABC języka HTML i XHTML
ABC języka HTML i XHTML
 
Excel z elementami VBA w firmie
Excel z elementami VBA w firmieExcel z elementami VBA w firmie
Excel z elementami VBA w firmie
 
Access. Programowanie w VBA
Access. Programowanie w VBAAccess. Programowanie w VBA
Access. Programowanie w VBA
 

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

Microsoft Access. Podręcznik administratora
Microsoft Access. Podręcznik administratoraMicrosoft Access. Podręcznik administratora
Microsoft Access. Podręcznik administratoraWydawnictwo Helion
 
Visual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyVisual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyWydawnictwo Helion
 
Visual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaVisual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaWydawnictwo Helion
 
MS Office 2003 PL w biznesie. Tom I i II
MS Office 2003 PL w biznesie. Tom I i IIMS Office 2003 PL w biznesie. Tom I i II
MS Office 2003 PL w biznesie. Tom I i IIWydawnictwo Helion
 
Excel 2003. Programowanie. Zapiski programisty
Excel 2003. Programowanie. Zapiski programistyExcel 2003. Programowanie. Zapiski programisty
Excel 2003. Programowanie. Zapiski programistyWydawnictwo Helion
 
Komputer PC w nowoczesnej firmie
Komputer PC w nowoczesnej firmieKomputer PC w nowoczesnej firmie
Komputer PC w nowoczesnej firmieWydawnictwo Helion
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyWydawnictwo Helion
 
100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual StudioWydawnictwo Helion
 
MS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowanaMS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowanaWydawnictwo Helion
 
Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++Wydawnictwo Helion
 
Visual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaVisual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaWydawnictwo Helion
 
Asembler. Podręcznik programisty
Asembler. Podręcznik programistyAsembler. Podręcznik programisty
Asembler. Podręcznik programistyWydawnictwo Helion
 
Programowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoProgramowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoWydawnictwo Helion
 

Ähnlich wie MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA (20)

Microsoft Access. Podręcznik administratora
Microsoft Access. Podręcznik administratoraMicrosoft Access. Podręcznik administratora
Microsoft Access. Podręcznik administratora
 
Access 2003 PL. Kurs
Access 2003 PL. KursAccess 2003 PL. Kurs
Access 2003 PL. Kurs
 
Visual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyVisual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programisty
 
Visual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaVisual Basic .NET. Encyklopedia
Visual Basic .NET. Encyklopedia
 
MS Office 2003 PL w biznesie. Tom I i II
MS Office 2003 PL w biznesie. Tom I i IIMS Office 2003 PL w biznesie. Tom I i II
MS Office 2003 PL w biznesie. Tom I i II
 
Excel 2003. Programowanie. Zapiski programisty
Excel 2003. Programowanie. Zapiski programistyExcel 2003. Programowanie. Zapiski programisty
Excel 2003. Programowanie. Zapiski programisty
 
ABC MS Office 2007 PL
ABC MS Office 2007 PLABC MS Office 2007 PL
ABC MS Office 2007 PL
 
Visual Basic 2005. Od podstaw
Visual Basic 2005. Od podstawVisual Basic 2005. Od podstaw
Visual Basic 2005. Od podstaw
 
Komputer PC w nowoczesnej firmie
Komputer PC w nowoczesnej firmieKomputer PC w nowoczesnej firmie
Komputer PC w nowoczesnej firmie
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programisty
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Win32ASM. Asembler w Windows
Win32ASM. Asembler w WindowsWin32ASM. Asembler w Windows
Win32ASM. Asembler w Windows
 
100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual Studio
 
MS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowanaMS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowana
 
Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++
 
Visual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaVisual Basic .NET. Księga eksperta
Visual Basic .NET. Księga eksperta
 
Asembler. Podręcznik programisty
Asembler. Podręcznik programistyAsembler. Podręcznik programisty
Asembler. Podręcznik programisty
 
OpenOffice 1.1.x UX.PL
OpenOffice 1.1.x UX.PLOpenOffice 1.1.x UX.PL
OpenOffice 1.1.x UX.PL
 
Access 2007 PL. Kurs
Access 2007 PL. KursAccess 2007 PL. Kurs
Access 2007 PL. Kurs
 
Programowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoProgramowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdego
 

Mehr von Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 

Mehr von Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 

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

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. _ 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. 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. 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. 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. 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. 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.