Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00405 007307 11067815 na godz. na dobę w sumie
MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA - książka
MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA - książka
Autor: Liczba stron: 140
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-878-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> aplikacje biurowe >> vba - programowanie
Porównaj ceny (książka, ebook, audiobook).
Pakiet Microsoft Office to nie tylko zaawansowany zestaw aplikacji biurowych, ale także platforma, na podstawie której programiści Visual Basica for Applications mogą pisać własne programy. Chociaż możliwości dostosowania poszczególnych aplikacji Office'a do specyficznych wymagań użytkownika bez konieczności pisania kodu są spore, dopiero użycie VBA pozwala na tworzenie własnych kreatorów, dodatków i asystentów.

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

Opisano:

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ń

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl MS Office 2000 i 2002/XP. Tworzenie w³asnych aplikacji w VBA Autor: Maciej £oġ ISBN: 83-7197-878-2 Format: B5, stron: 138 Pakiet Microsoft Office to nie tylko zaawansowany zestaw aplikacji biurowych, ale tak¿e platforma, na podstawie której programiġci Visual Basica for Applications mog¹ pisaæ w³asne programy. Chocia¿ mo¿liwoġci dostosowania poszczególnych aplikacji Office a do specyficznych wymagañ u¿ytkownika bez koniecznoġci pisania kodu s¹ spore, dopiero u¿ycie VBA pozwala na tworzenie w³asnych kreatorów, dodatków i asystentów. Ksi¹¿ka „MS Office 2000 i 2002/XP. Tworzenie w³asnych aplikacji VBA” opisuje sposób tworzenia specyficznych dla MS Office dodatków z u¿yciem jêzyka Visual Basic for Applications. Przeznaczona jest dla osób znaj¹cych ten jêzyk programowania w stopniu podstawowym, chc¹cych poznaæ tajniki programowania Worda, Excela i Accessa. Opisano: • Ró¿ne rodzaje plików, u¿ywanych przez MS Office • Wykorzystanie technologii ActiveX • Tworzenie w³asnych pasków narzêdziowych • Tworzenie asystentów • Pisanie kreatorów Worda • Integracjê poszczególnych sk³adników pakietu Office • Pisanie w³asnej aplikacji wyszukuj¹cej pliki Excela • Tworzenie bazy danych opartej na Accessie jako samodzielnej aplikacji Programiġci VBA znajd¹ w tej ksi¹¿ce tak¿e wiele cennych wskazówek dotycz¹cych efektywnego wykorzystania dostêpnych typów danych oraz optymalizacji kodu. Autor prezentuje wiele fragmentów kodu, które mo¿esz zastosowaæ we w³asnych aplikacjach. Dostosuj MS Office do swoich wymagañ : • Pisz w³asne kreatory i dodatki do aplikacji Office • Naucz siê integrowaæ poszczególne programy pakietu • Poznaj wewnêtrzne mechanizmy dzia³ania Office a • Skorzystaj z æwiczeñ i fragmentów kodu dostêpnych na p³ycie CD Spis treści Podziękowania...................................................n................................ 5 Zanim rozpoczniesz…................................n......................................... 7 Do kogo jest adresowana ta książka? ...................................................a...................... 7 O czym jest ta książka? ...................................................a......................................... 8 Rozdział 1. Programowanie — informacje ogólne.................................................. 9 Projekt to podstawa ...................................................a.............................................. 9 Czemu ma służyć aplikacja?...................................................a............................. 9 Kto będzie jej używał? ...................................................a...................................11 Wizualizacja...................................................a..................................................1a1 Przelanie pomysłu na papier...................................................a............................11 Podsumowanie ...................................................a..............................................12 Najważniejsze informacje o VBA...................................................a..........................12 Efektywne stosowanie typów ...................................................a..........................12 Prawda i fałsz (Boolean)...................................................a.................................15 Numeryczne typy danych ...................................................a...............................16 Tablice...................................................a...................................................a.......18 Optymalizacja kodu ...................................................a.......................................20 Odwołania do funkcji Windows API...................................................a................31 Pliki pakietu Office ...................................................a........................................34 Rozdział 2. Wspólne cechy i obiekty programów Office ....................................... 43 Obiekty Office 97 — omówienie...................................................a...........................43 Dobrodziejstwo ActiveX...................................................a.................................43 Obiekt Application ...................................................a.........................................47 Obiekt Commandbars...................................................a.....................................51 Obiekt Assistant..................................................a..............................................59 Obiekt FileSearch ...................................................a..........................................63 Obiekt DocumentProperties ...................................................a............................64 Środowisko aplikacji ...................................................a............................................65 Funkcja Environ ...................................................a............................................65 Funkcja Shell...................................................a.................................................67 Instrukcja AppActivate ...................................................a...................................68 Funkcja DoEvents.....................................a...................................................a.....69 Funkcja Timer ...................................................a...............................................69 Instrukcja SendKeys ...................................................a......................................70 Automakra ...................................................a...................................................a.71 4 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA Rozdział 3. Programowanie — MS Word..............................n............................... 77 Tworzenie szablonu z własnym paskiem narzędzi ...................................................a...77 Tworzenie własnego kreatora...................................................a................................80 Współpraca z innymi aplikacjami Office...................................................a................87 Współpraca z MS Access.................................a..................................................8a8 Współpraca z MS Excel...................................................a..................................90 Rozdział 4. Programowanie — MS Excel ...................................................n......... 93 Własne okno dialogowe poszukiwania plików ...................................................a........93 Dodajemy element do menu kontekstowego — nowa funkcja.....................................94 Tworzenie aplikacji „krok po kroku” ...................................................a.....................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...................................................a..............104 Rozdział 5. Programowanie — MS Access ...................................................n.... 109 SQL jako motor baz danych ...................................................a...............................109 Tworzenie formularza wyszukującego dane ...................................................a.........110 Uwagi o konstruowaniu zapytań w kodzie...................................................a......114 Podformularze i podraporty ...................................................a................................115 MS Access i Internet...................................................a..........................................116 Eksportowanie tabeli, kwerendy, formularza lub raportu w formacie HTML........116 Eksportowanie danych do serwera FTP w sieci Internet.....................................116 Współpraca z XML...................................................a......................................117 Tworzenie bazy danych jako samodzielnej aplikacji................................................117 Ograniczenia bazy danych ...................................................a............................117 Parametryzacja bazy danych...................................................a.........................118 Zakończenie ...................................................n............................... 131 Skorowidz...................................................n................................... 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:NCU ZEGN#RRNKECVKQPlub KOFQE9TFCU9QTF 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)! i 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:NCU 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 QPUVPCYCP[ CMTGU#U5VTKPI CPGA5RTGFC KOYF#RR#U9QTF#RRNKECVKQP KOPCYC6CDGNK#U5VTKPI 5WD Q KGNC KOVOR$QQNGCP#U$QQNGCP PCYC6CDGNK6JKU9QTMDQQM5JGGVU  4CPIG # VOR$QQNGCP7VYQT QMWOGPV +HVOR$QQNGCP6JGP /UI$QZ QMWOGPV/59QTFYTCFCP[OKVCDGNKXD UTA  PCYC6CDGNK XD TA QUVCNRQO[UNPKGWVYQTQP[XD+PHQTOCVKQP5UWMEGU YF#RR8KUKDNG6TWG NUG /UI$QZ9[UVCRKN[DNGF[RQFECUVYQTGPKCFQMWOGPVW/5U9QTFXD TA  QMWOGPVOQINXD TA PKGQUVCEWVYQTQP[XD TA QUVCEWVYQTQP[DNGFCOKXD TA 5RTCYFEQOQINQD[ERT[E[PCDNGFWXD ZENCUOCVKQP0KGRQYQFGPKG PF+H PF5WD (WPEVKQP7VYQT QMWOGPV #U$QQNGCP KOYF QE#U QEWOGPV KOO[4CPIG9#U9QTF4CPIG KOO[4CPIG #U4CPIG KOO[6CDNG#U6CDNG KOO[5GN#U9QTF5GNGEVKQP KOKNG9KGT#U.QPI KOKNG-QN#U.QPI 1P TTQT)Q6Q TTA7VYQT QMWOGPV 7VYQT QMWOGPV6TWG KNG9KGT6JKU9QTMDQQM5JGGVU  4CPIG PCYCP[ CMTGU 4QYU UQWPV KNG-QN6JKU9QTMDQQM5JGGVU  4CPIG PCYCP[ CMTGU  QNWOPUU QWPV 5GVYF#RR TGCVG1DLGEV 9QTF#RRNKECVKQP YF#RR8KUKDNG6TWG 5GVYF QEYF#RR QEWOGPVU#FF 46 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA 9KVJYF QE 5GVO[4CPIG94CPIG YF#RR5GNGEVKQP6[RG2CTCITCRJ O[4CPIG9+PUGTV$GHQTGPCYC6CDGNK YF#RR5GNGEVKQP PF-G[7PKVYF.KPG YF#RR5GNGEVKQP6[RG2CTCITCRJ YF#RR5GNGEVKQP5GNGEV 5GVO[6CDNG6CDNGU#FF YF#RR5GNGEVKQP4CPIGKUNG9KGTKNG-QN +H9UVCY CPGA6CDGNK O[6CDNGKNG9KGTKNG-QN (CNUGU6JGP)Q6Q å TTA7VYQT QMWOGPV  PF9KVJ ZKV(WPEVKQP TTA7VYQT QMWOGPV  TT NGCT 5GVO[6CDNG0QVJKPI 5GVO[4CPIG90QVJKPI +H0QVYF QE+U0QVJKPI6JGP YF QE NQUG5CXG JCPIGU(CNUG 5GVYF QE0QVJKPI  PF+H +H0QVYF#RR+U0QVJKPI6JGP YF#RR3WKV5CXG JCPIGU(CNUG 5GVYF#RR0QVJKPI  PF+H 7VYQT QMWOGPV(CNUG PF(WPEVKQP (WPEVKQP9UVCY CPGA6CDGNK VCDGNC#U6CDNGKNG9KGT#U.QPIKNG-QN#U.QPI #U$QQNGCP KOMQO#U GNN KOYKGT#U.QPIMQN#U.QPI KOUVCTV9KGT#U.QPI 1P TTQT)Q6Q TTA9UVCY CPGA6CDGNK 9UVCY CPGA6CDGNK6TWG 6JKU9QTMDQQM5JGGVU  4CPIG PCYCP[ CMTGU  PF ZN7R 5GNGEV 6JKU9QTMDQQM5JGGVU  4CPIG PCYCP[ CMTGU  PF ZN6Q.GHV 5GNGEUV RQDKGTPTYKGTUCRQECVMQYGIQ UVCTV9KGT .PI 4KIJV #EVKXG GNN#FFTGUU  (QTYKGT6QKNG9KGT (QTMQN6QKNG-QN VCDGNC GNN YKGTMQN 4CPIG6GZV6JKU9QTMDQQM5UJGGVU   GNNU YKGT åUVCTV9KGTMQN 0GZVMQN 0GZVYKGT ZKV(WPEVKQP TTA9UVCY CPGA6CDGNK  TT NGCT 9UVCY CPGA6CDGNK(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: KOYF#RR#U9QTF#RRNKECVKQP 5GVYF#RR0GY9QTF#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 KO1W#RRA#U1WVNQQM#RRNKECVKQP KO1W#RRA#U1WVNQQM#RRNKECVKQP KO1W#RRA#U1WVNQQM#RRNKECVKQP 48 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA 5GV1W#RRA0GY1WVNQQM#RRNKECVKQP 5GV1W#RRA TGCVG1DLGEV 1WVNQQM#RRNKECVKQP 5GV1W#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 Krotność instancji Tworzy za każdym razem... nową instancję aplikacji niezależnie od liczby już uruchomionych nową instancję aplikacji niezależnie od liczby już uruchomionych nową instancję aplikacji niezależnie od liczby już uruchomionych nową instancję aplikacji niezależnie od liczby już uruchomionych zmienną obiektową zwracającą instancję aplikacji już uruchomionej zmienną obiektową zwracającą instancję aplikacji już uruchomionej Aplikacja MS Access jedno… MS Excel jedno… MS Word jedno… MS FrontPage jedno… MS Outlook wielo… MS PowerPoint wielo… 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#U1DLGEV 5WD [,GUV#EEGUU KOD$QQN#U$QQNGCP D$QQN6YQT-QRKG#RNKMCELK #EEGUU#RRNKECVKQP +H0QVD$QQN6JGP /UI$QZ/5#EEGUUPKGLGUVCKPUVCNQYCP[PCV[UOMQORWVGTG XD+PHQTOCVKQP2T[MTQOK  ZKV5WD  PF+H +HD$QQN6JGP /UI$QZ/5#EEGUULGUVCKPUVCNQYCP[PCV[OMQUORWVGTGXD+PHQTOCVKQP ,GUV 9KVJ#RR1DL  VWOQGUFQNCE[EQFRQYKGFPKMQFPR  PF9KVJ  PF+H PF5WD Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 49 (WPEVKQP6YQT-QRKG#RNKMCELK #RR0COG#U5VTKPI #U$QQNGCUP 6YQT-QRKG#RNKMCELK6TWG 1P TTQT4GUWOG0GZV 5GV#RR1DL TGCVG1DLGEV #RR0COG +H TT6JGP PKGCKPCUVCNQYCPCCRNKMCELC 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 TWMWL 5GTYGTC KO#EE#RR#U#EEGUU#RRNKECVKQP 1P TTQT4GUWOG0GZV 5GV#EE#RR TGCVG1DLGEV #EEGUU#RRNKECVKQP/QL5GTYUGT +H TT 6JGP /UI$QZ$NGFPCPCYCUGTYGTCNWDUGTYGTPKGHWPMELQPWLGXD ZENCOCVKQP2TQDNGO  ZKV5WD PF+H 9KVJ#EE#RR  VWKPUVTWMELGFKCNCLCEGPCQDKGMEKGFTWMWLCEGTCRUQTV  PF9KVJ PF5WD 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  KOD$QQN#U$QQNGCP D$QQN [1VYCTVC#RR #EEGUU#RRNKECVKQP LGUNKPKGQVYCTVCCRNKMCELCVYQTPQYCMQRKG +H0QVD$QQN6JGPD$QQN6YQT-QRKG#RNKMCELK #EEGUUU#RRNKECVKQP +HD$QQN6JGP 9KVJ#RR1DL  VWOQGUFQNCE[EQFRQYKGFPKMQFPRU  PF9KVJ  PF+H  PF5WD (WPEVKQP [1VYCTVC#RR #RR0COG#U5VTKPI #U$QQNGCP  [1VYCTVC#RR6TWG 1P TTQT4GUWOG0GZV  URTCYFE[LGUVQVYCTVC 5GV#RR1DL)GV1DLGEV #RR0COG +H TT6JGP PKGWTWEJQOKQPCCRNKMCELC  [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. 5WD1VYQT KODDQQN#U$QQNGCP KOUEKGMC Q2NKMW#U5VTKPI UEKGMC Q2NKMW  VGUVFQE DDQQN1VYQT1FRQYKGFPKC#RNKMCELG UEKGMC Q2NKMW +HDDQQN6JGP /UI$QZ2NKM UEKGMC Q2NKMW QUVCNQVYCUTV[XD TA  CEJYKNGQUVCPKGCOMPKGV[XDU+PHQTOCVKQP7FCNQUKG #RR1DL#EVKXCVG WCMV[YPKLQMPQCRNKMCELKRTGFUCOMPKGEKGO #RR1DL NQUG 5GV#RR1DL0QVJKPI  PF+H PF5WD (WPEVKQP1VYQT1FRQYKGFPKC#RNKMCELG UEKGMC Q2NKMW#U5VTKUPI #U$QQNGCP 1VYQT1FRQYKGFPKC#RNKMCELG6TWG Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 51 1P TTQT4GUWOG0GZV 5GV#RR1DL)GV1DLGEV UEKGMC Q2NKMW +H TT 6JGP1VYQT1FRQYKGFPKC#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 Dostosujapisz 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 QPVGZV0QTOCN6GORNCVG -G[$KPFKPIU#FF-G[ QFG$WKNF-G[ QFG YF-G[ QPVTQNYF-G[#NVYF-G[U9 A -G[ CVGIQT[YF-G[ CVGIQT[ QOOCPF QOOCPF(KNG NQUUG PF5WD 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#EVKXG QEWOGPV#VVCEJGF6GORNCVG #RRNKECVKQP QOOCPF$CTU 5VCPFCTF  QPVTQNU#FF6[RGOUQU QPVTQN$WVVQPA + $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 5WD9[NKE2CMK  KOEDCTCU QOOCPF$CT (QT CEJEDCTKP#RRNKECVKQP QOOCPF$CTU  GDWI2TKPVEDCT0COGEDCT0COG.QECNEDCT8KUKDNG 0GZV  PF5WD 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 5WD7VYQT2CUGM 5GVEDCT QOOCPF$CTU#FF 0COG/QL2CUGM2QUKVKQPOUQ$CTU(NQCVKPI EDCT8KUKDNG6TWG PF5WD 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 2QUKVKQPOUQ$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 (WPEVKQP2CUGM ED0COGCU5VTKPI #U$QQNGCP KOED#U QOOCPF$CT PCNGKQP[(CNUG (QT CEJED+P QOOCPF$CTU +HED0COGED0COG6JGP ED2TQVGEVKQPOUQ$CT0Q JCPIG QEM ED8KUKDNG6TWG PCNGKQP[6TWG  PF+H 0GZVED 2CUGMPCNGKQP[ 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 (QTOCVVKPKI0GY(QTOCVVKPI6TWG 6JGP /UI$QZ2CUGMQUVCNUMQRKQYCP[XD+PHQTOCVKQPU2QYQFGPKG  PF+H PF5WD (WPEVKQP-QRKWL2CUGM QT[I0CYC#U5VTKPIPQYC0CYC#U5UVTKPIA 1RVKQPCNRQMC#U$QQNGCP6TWG #U$QQNGCP  KOED1T[I#U QOOCPF$CT  KOED-QRKC#U QOOCPF$CT  KOEDEQPVTQN#U QOOCPF$CT QPVTQN  KOED6[RG#U.QPI 1P TTQT)Q6Q$NCF-QRKQYCPKC 5GVED1T[I QOOCPF$CTU QT[I0CYC ED6[RGED1T[I6[RG 5GNGEV CUGED6[RG CUGOUQ$CT6[RG/CPW$CT 5GVED-QRKC QOOCPF$CTU#FF 0COGPQYC0CYC2QUKVKUQPOUQ$CT/GPW$CT CUGOUQ$CT6[RG2QRWR 5GVED-QRKC QOOCPF$CTU#FF 0COGPQYC0CYC2QUKVKUQPOUQ$CT6[RG2QRWR CUG NUG 5GVED-QRKC QOOCPF$CTU#FF 0COGPQYC0CYC  PF5GNGEV 56 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA (QT CEJED QPVTQNKPED1T[I QPVTQNU ED QPVTQN QR[ 0GZVED QPVTQN +HRQMC6JGP +HED-QRKC6[RGOUQ$CT6[RG2QRWR6JGP ED-QRKC5JQY2QRWR NUG ED-QRKC8KUKDNGRQMC PF+H  PF+H -QRKWL2CUGM6TWG  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 5WD7UWP  QOOPF$CTU 0GY(QTOCVVKPI  GNGVG PF5WD 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 (WPEVKQP7UWP2CUGM PCYC2CUMC#U5VTKPI #U$QQNGCP 1P TTQT4GUWOG0GZV #RRNKECVKQP QOOCPF$CTU PCYC2CUMC  GNGVG 7UWP2CUGM+KH TT (CNUG6TWG  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 5WD7VYQT2QNGEGPKG 5GVPGY+VGO QOOCPF$CTU 6QQNU  QPVTQNU#FF 6[RGOUUQ QPVTQN$WVVQP 9KVJPGY+VGO $GIKP)TQWR6TWG  CRVKQP-QOWPKMCV (CEG+  UYKPMC 1P#EVKQP-QOWPKMCV PF9KVJ  PF5WD 5WD-QOWPKMCV /UI$QZ6QLGUVMQOWPKMCVURQFPCMWUYKPMKXD TKVUKECN-QOWPKMCV  PF5WD 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 8KUKDNGU6TWG 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 5WD2QMC2QNGEGPKG2CUMC GV[MKGVC#U5VTKPI1RVKQPCNUUVCP#U$QQNGCP6TWG  KOEPVTN#U QOOCPF$CT QPVTQN (QT CEJEPVTN+P#RRNKECVKQP QOOCPF$CTU 9QTMUJGGV/GPWU$CT  QPVTQNU +HEPVTN CRVKQPGV[MKGVC6JGP EPVTN8KUKDNGUVCP  ZKV(QT  PF+H 0GZV  PF5WD 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 NGEGPKG2CUMC2NKM(CNUG WMT[YCRQNGEGPKGPlikCMQNGLP[ 2QMC2QNGEGPKG 2CUMC2NKM 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 ŎVWVCLYCTVQUEV[RWXCTKCPVŏ , 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  PCDNGFU6TWG 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 PowerPup The Genius Hoverbot Scribble The Dot Clippit Mother Nature Will Logo Super Pies Geniusz Poduszkobot Świstek Punkt Spinacz Matka Natura Will Logo.act Powerpup.act Genius.act Hoverbot.act Scribble.act Dot.act Clippit.act MNature.act 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 8KUKDNG6TWG PF9KVJ 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 KOE[9NCEQP[#U$CNQQP KOE[9KFQEP[#U$CNQQP 9KVJ#UUKUVCPV E[9NCEQP[1P E[9KFQEP[8KUKDNG PF9KVJ RT[YTQEWUVCYKGPKC#U[UVGPVC 9KVJ#UUKUVCPV 1PE[9NCEQP[ 8KUKDNGE[9KFQEP[ PF9KVJ 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 5WD2QLGF2QFRQY KORQFRQYKGF#U$CNNQQP 5GVRQFRQYKGF#UUKUVCPV0GY$CNNQQP 9KVJRQFRQYKGF *GCFKPI1VQPCLRTQUVU[RT[MNCFVYQTGPKCURQFRQYKGFK 6GZV KORQFRQYKGF#U$CNNQQPXD T.HA 5GVRQFRQYKGF#UUKUVCPV0GY$CNNQQPUXD T.HA 9KVJRQFRQYKGFXD T.HA *GCFKPI1VQPCLRTQUVU[RT[MNCFUVYQTGPKCRQFRQYKGFK åXD T.HA 6GZV,GUVVQPCLRTQUVU[RT[MNUCFVYQTGPKCRQFRQYKGFK åXD T.HA $WVVQPOUQ$WVVQP5GV1-XD T.HA 5JQYXD T.HA  PF9KVJ $WVVQPOUQ$WVVQP5GV1- 5JQY  PF9KVJ PF5WD 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 KORQFRQYKGF#U$CNNQQP KORQFRQYKGF#U$CNNQQP KORQFRQYKGF#U$CNNQQP KOQFR#U.QPI 5GVRQFRQYKGF#UUKUVCPV0GY$CNNQQP 9KVJRQFRQYKGF *GCFKPI2QFRQYKGFRKGTYUC 6GZV [EJEGUQDCE[EMQNGLPCRQFRQYKGFU! $WVVQPOUQ$WVVQP5GV1M CPEGN  PF9KVJ 5GVRQFRQYKGF#UUKUVCPV0GY$CNNQQP 9KVJRQFRQYKGF *GCFKPI2QFRQYKGFFTWIC 6GZV [EJEGUQDCE[EMQNGLPCRQFRQYKGF! $WVVQPOUQ$WVVQP5GV1M CPEGN  PF9KVJ 5GVRQFRQYKGF#UUKUVCPV0GY$CNNQQP 9KVJRQFRQYKGF *GCFKPI2QFRQYKGFVTGEKC 6GZV6QLWMQPKGERQFRQYKGFK $WVVQPOUQ$WVVQP5GV1-  PF9KVJ 62 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA QFRRQFRQYKGF5JQY +HQFROUQ$CNNQQP$WVVQP1-6JGP QFRRQFRQYKGF5JQY +HQFROUQ$CNNQQP$WVVQP1-6JGP RQFRQYKGF5JQY  PF+H PF+H PF5WD 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 5WD9[YQNCL1RELG #U[UVGPV CL1RELGV[VWNVGMUVY[DQTY[DQTY[UDQT PF5WD 5WD#U[UVGPV CL1RELG V[VWN#U5VTKPIVGMUV#U5VTKPIQRUELC2TCYKFNQYC#U.QPI å2CTCO#TTC[Y[DQT[ #U8CTKCPV KORQFRQYKGF#U$CNNQQP KOK#U.QPIZ#U.QPI KOY[DQT#U5VTKPI 5GVRQFRQYKGF#UUKUVCPV0GY$CNNQQP 9KVJRQFRQYKGF $CNNQQP6[RGOUQ$CNNQQP6[RG$WNNGVU $WVVQPOUQ$WVVQP5GV1M CPEGN *GCFKPIV[VWN 6GZVVGMUV  RQDKGTKNGRTGMCCP[EJRCTCOGVTQY (QTK.$QWPF Y[DQT[ 6Q7$QWPF Y[DQT[ Y[DQTY[DQT[ K  JGEM$QZGU K  6GZVY[DQT 0GZVK Z5JQY PF9KVJ ,CMC1RELCRQFRQYKGFZQRELC2TCYKFNQYC PF5WD 5WD,CMC1RELC DCN#U$CNNQQPY[D#U.QPIRTCY#U.QPI KOK#U.QPI KOVOR$QQN#U$QQNGCP +HY[D6JGP VOR$QQNDCN JGEM$QZGU RTCY  JGEMGF +HVOR$QQN6TWG6JGP #U[UVGPV CL1FRQYKGF5WRGT$TCYQRTCYKFNUQYCQFRQYKGF Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 63  NUG #U[UVGPV CL1FRQYKGF7WWRRU2T[MTQOKUVQPKGLGUVRTCYKFNQYC åQFRQYKGF  PF+H PF+H PF5WD 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 5WD5WMCL2NKMQY KOMQO#U5VTKPI 9KVJ#RRNKECVKQP(KNG5GCTEJ 0GY5GCTEJ .QQM+P   5GCTEJ5WD(QNFGTU6TWG (KNG0COGQHHKEG (KNG6[RGOUQ(KNG6[RG#NN(KNGU +H ZGEWVG  6JGP 5GNGEV CUG(QWPF(KNGU QWPV  CUG MQO PCNCNGO(QWPF(KNGU QWPVUA RNKMYGFNWICFCP[EJMT[VGTUKQYRQUWMKYCPKC /UI$QZMQOXD+PHQTOCVKQP-QOWPKMCV  CUG MQO PCNCNGO(QWPF(KNGU QWPVUA RNKMKYGFNWICFCP[EJMT[VGUTKQYRQUWMKYCPKC /UI$QZMQOXD+PHQTOCVKQP-QOWPKMCV 64 MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA  CUG NUG MQO PCNCNGO(QWPF(KNGU QWPVUA RNKMQYYGFNWICFCP[EJMT[VUGTKQYRQUWMKYCPKC /UI$QZMQOXD+PHQTOCVKQP-QOWPKMCV  PF5GNGEV (QTK6Q(QWPF(KNGU QWPV /UI$QZ(QWPF(KNGU K XD+PHQTOCVKQPK 0GZVK  NUG /UI$QZ0KGPCNCNGORNKMQYYGFNWICFCP[EJUA MT[VGTKQYRQUWMKYCPKCXD ZENCOCVKUQP$TCM  PF+H PF9KVJ PF5WD 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 5WD9[NKE9DWFQYCPG9NCUEKYQUEK ZEGN 1P TTQT)Q6Q TTA9[NKE9DWFQYCPG9NCUEKQYUEK ZEGN TY 9QTMUJGGVU  #EVKXCVG Rozdział 2. ♦ Wspólne cechy i obiekty programów Office 65 (QT CEJR+P#EVKXG9QTMDQQM$WKNVKP QEWOGPV2TQRGTVKGU  GNNU TY 8CNWGR0COG  GNNU TY 8CNWGR8CNWG TYTY  0GZV ZKV5WD TTA9[NKE9DWFQYCPG9NCUEKQYUEK ZEGN 5GNGEV CUG TT0WODGT  CUG  GNNU TY 8CNWGDTCMFCP[EJ 4GUWOG0GZV  CUG NUG /UI$QZ2T[E[PCDNGFW TT GUETKRVKQPUXD TKVKECN$NCFPT å TT0WODGT  PF5GNGEV  TT NGCT PF5WD 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ć #EVKXG QEWOGPV. 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 5WD9[NKE OKGPPG KO OKGPPC#U5VTKPI-QOWPKMCV#U5VTKPI KOK#U+PVGIGT K Q  OKGPPC PXKTQP K -QOWPKMCV-QOWPKMCVXD T OKGPPC KK  .QQR7PVKN OKGPPC /UI$QZ-QOWPKMCV PF5WD 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ść XD*KFG XD0QTOCN(QEWU XD/KPKOKGF(QEWU XD/CZKOKGF(QEWU XD0QTOCN0Q(QEWU XD/KPKOKGF0Q(QEWU Opis działania 0 1 2 3 4 6 Okno jest ukrywane, a fokus jest przekazywany do tego ukrytego okna. Okno otrzymuje fokus, a rozmiar i położenie okna są przywracane do stanu początkowego. Okno jest wyświetlane w postaci zminimalizowanej z fokusem. Okno jest maksymalizowane i ma fokus. Odtwarzany jest ostatni rozmiar i położenie okna. Aktualnie aktywne okno pozostaje aktywne. 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 /QL2TQITCO5JGNN   /QL2TQITCO :  +H/QL2TQITCO 6JGP  VWVCLQMTGUNEQEJEGUTQDKEWTWEJQOKQP[ORTQITCUOGO NUG /UI$QZ7TWEJQOKGPKGRTQITCOWPKGRQYKQFNQUKGXD TKUVKECN79#)# 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#EVKXCVGVKVNG=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/KETQUQHV9QTF 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 /KETQUQHV1HHKEG 1HHKEG 9+0914  : U #RR#EVKXCVG9QTF+ ZEGN+ 5JGNN   2TQITCO(KNGU /KETQUQHV1HHKEG 1HHKEG : . U:  #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żeni
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

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

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: