You are on page 1of 37

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

MS Office 2000 i 2002/XP.


Tworzenie wasnych
aplikacji w VBA
Autor: Maciej o
ISBN: 83-7197-878-2
Format: B5, stron: 138

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

Pakiet Microsoft Office to nie tylko zaawansowany zestaw aplikacji biurowych, ale take
platforma, na podstawie ktrej programici Visual Basica for Applications mog pisa
wasne programy. Chocia moliwoci dostosowania poszczeglnych aplikacji Office'a
do specyficznych wymaga uytkownika bez koniecznoci pisania kodu s spore,
dopiero uycie VBA pozwala na tworzenie wasnych kreatorw, dodatkw i asystentw.
Ksika MS Office 2000 i 2002/XP. Tworzenie wasnych aplikacji VBA opisuje sposb
tworzenia specyficznych dla MS Office dodatkw z uyciem jzyka Visual Basic for
Applications. Przeznaczona jest dla osb znajcych ten jzyk programowania w stopniu
podstawowym, chccych pozna tajniki programowania Worda, Excela i Accessa.
Opisano:

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Rne rodzaje plikw, uywanych przez MS Office


Wykorzystanie technologii ActiveX
Tworzenie wasnych paskw narzdziowych
Tworzenie asystentw
Pisanie kreatorw Worda
Integracj poszczeglnych skadnikw pakietu Office
Pisanie wasnej aplikacji wyszukujcej pliki Excela
Tworzenie bazy danych opartej na Accessie jako samodzielnej aplikacji
Programici VBA znajd w tej ksice take wiele cennych wskazwek dotyczcych
efektywnego wykorzystania dostpnych typw danych oraz optymalizacji kodu. Autor
prezentuje wiele fragmentw kodu, ktre moesz zastosowa we wasnych aplikacjach.
Dostosuj MS Office do swoich wymaga :

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Pisz wasne kreatory i dodatki do aplikacji Office


Naucz si integrowa poszczeglne programy pakietu
Poznaj wewntrzne mechanizmy dziaania Office'a
Skorzystaj z wicze i fragmentw kodu dostpnych na pycie CD

Spis treci
Podzikowania...................................................................................5
Zanim rozpoczniesz.........................................................................7
Do kogo jest adresowana ta ksika? ......................................................................... 7
O czym jest ta ksika? ............................................................................................ 8

Rozdzia 1. Programowanie informacje oglne..................................................9


Projekt to podstawa ................................................................................................. 9
Czemu ma suy aplikacja?................................................................................ 9
Kto bdzie jej uywa? ......................................................................................11
Wizualizacja.....................................................................................................11
Przelanie pomysu na papier...............................................................................11
Podsumowanie .................................................................................................12
Najwaniejsze informacje o VBA.............................................................................12
Efektywne stosowanie typw .............................................................................12
Prawda i fasz (Boolean) ....................................................................................15
Numeryczne typy danych ..................................................................................16
Tablice.............................................................................................................18
Optymalizacja kodu ..........................................................................................20
Odwoania do funkcji Windows API...................................................................31
Pliki pakietu Office ...........................................................................................34

Rozdzia 2. Wsplne cechy i obiekty programw Office.......................................43


Obiekty Office 97 omwienie..............................................................................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

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

Rozdzia 3. Programowanie MS Word.............................................................77


Tworzenie szablonu z wasnym paskiem narzdzi ......................................................77
Tworzenie wasnego kreatora...................................................................................80
Wsppraca z innymi aplikacjami Office...................................................................87
Wsppraca z MS Access...................................................................................88
Wsppraca z MS Excel.....................................................................................90

Rozdzia 4. Programowanie MS Excel ............................................................93


Wasne okno dialogowe poszukiwania plikw ...........................................................93
Dodajemy element do menu kontekstowego nowa funkcja.....................................94
Tworzenie aplikacji krok po kroku ........................................................................96
Wasne menu podrczne dla formularzy MS Word i MS Excel............................100
Wska katalog w formularzu MS Word i MS Excel............................................102
Wsppraca z innymi aplikacjami Office.................................................................104

Rozdzia 5. Programowanie MS Access .......................................................109


SQL jako motor baz danych ..................................................................................109
Tworzenie formularza wyszukujcego 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
Wsppraca z XML.........................................................................................117
Tworzenie bazy danych jako samodzielnej aplikacji................................................117
Ograniczenia bazy danych ...............................................................................117
Parametryzacja bazy danych ............................................................................118

Zakoczenie..................................................................................131
Skorowidz......................................................................................133

Rozdzia 2.

Wsplne cechy i obiekty


programw Office
Cho tak wiele rni aplikacje Office od siebie, bo kada suy do czego innego, to
przygldajc si im od strony informatycznej widzimy, e maj wiele wsplnego. Jak
wiele maj wsplnego, tak te wiele je rni. Rozdzia 2 jest powicony wanie tym
podobiestwom i rnicom.

Obiekty Office 97 omwienie


W tym rozdziale zajm si obiektami pakietu Office dostpnymi w kadej z omawianych 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
Domylam si, e nieraz spotkae si z terminem ActiveX. By moe nawet dokadnie
wiesz, co on oznacza, ale tytuem przypomnienia:

44

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

ActiveX to nazwa zbioru technologii, ktre pozwalaj budowa i uywa


obiektw za pomoc technologii COM 1 i DCOM 2.
Na czym polega to dobrodziejstwo w pakiecie Office? Aplikacje takie jak Word, Excel
czy Access s wanie obiektami ActiveX. To oznacza, e moesz manipulowa jedn
aplikacj Office z poziomu drugiej. Ba, mao tego, moesz rwnie uzyska dostp do
obiektw tej aplikacji, niezalenie od tego, czy bdziesz to robi lokalnie na swoim komputerze, czy w sieci.
Jak tego dokona?
Jeli chcesz uruchomi kod w jednej aplikacji Office, ktry bdzie pracowa z obiektami w innej aplikacji, musisz wykona nastpujce kroki:
1. Ustaw odwoanie do biblioteki tej innej aplikacji w oknie dialogowym Odwoania

(menu Narzdzia). Jeli tego dokonasz, uzyskasz dostp do tej aplikacji oraz
wszystkich jej obiektw, waciwoci i metod. Chcesz odwoa si do Worda,
wska Microsoft Word 8.0 Object Library. Chcesz odwoa si do Excela, wska
Microsoft Excel 8.0 Object Library. Chcesz odwoa si do MS Access, wska
Microsoft Access 8.0 Object Library.
Pamitaj, nie musisz wskazywa biblioteki typu do aplikacji, w ktrej pracujesz,
a tylko do aplikacji, do ktrej chcesz uzyska dostp!
2. Zadeklaruj zmienn obiektow, ktra wskae na obiekty w innej aplikacji
okrelonego typu. Deklaracja zmiennej obiektowej za pomoc klauzuli 
 spowoduje utworzenie zmiennej zawierajcej odwoanie do dowolnego

obiektu. Dostp do tego obiektu bdzie odbywa si w sposb opniony, tzn.


przez dowizanie w trakcie wykonywania programu. Dlatego lepiej jest utworzy
zmienn obiektow okrelonego typu, tj. zadeklarowa zmienn obiektow
z okrelonym identyfikatorem klasy. Spowoduje to tzw. dowizanie wczesne,
dokonywane w trakcie kompilacji programu. Tak zmienn moesz na przykad
utworzy tak:
    

 lub
  
 .
Uywajc odwoa bez numeru wersji utworzysz obiekt w wersji wywoywanej aplikacji, takiej, jaka jest aktualnie zainstalowana na komputerze. Jeli jeste pewien, e jest to Office 97, to zadeklaruj zmienn obiektow z numerem wersji, np.
 
  . I jeszcze jedna istotna rzecz nie wszystkie
obiekty, ich waciwoci i metody bd dostpne w poprzednich wersjach aplikacji
Office (z czasw, kiedy nabywao si kad aplikacj oddzielnie)!

1
2

COM (ang. Component Object Model) technologia umoliwiajca tworzenie obiektw oraz dostp
do nich z programu Windows.
DCOM (ang. Distributed Component Object Model) technologia umoliwiajca dystrybucj
obiektw w sieci lokalnej i Internecie.

Rozdzia 2. Wsplne cechy i obiekty programw Office

45

3. Uyj funkcji  z identyfikatorem klasy aplikacji (OLE Programmatic

Identifier), by uzyska dostp do tej aplikacji lub jej obiektw. Przypisanie


do zmiennej obiektowej wartoci bdzie wygldao tak:
   
 

 deklaracja zmiennej,     
 

 przypisanie wartoci.
4. Uyj waciwoci i metod obiektu przechowywanego w zmiennej. Na przykad,
nastpujca instrukcja spowoduje utworzenie nowego skoroszytu:  
!!.
5. Po zakoczeniu prac z inn aplikacj, uyj metody "
, by j zamkn.
Oto jak tego dokona:  "
.

Listing 2.1 demonstruje, jak z programu MS Excel przenie dane do programu


MS Word.
Listing 2.1. MS Word w MS Excel

   

  
 
!  
  " #

$# %&
' 
' 
  " #"(
!#(
%)&* %)&
' +$%&
,-' "(
.
' $.!    #/0#/
1/  " #/1/0#/

 
$22230#,- 3$ 

 4
#"$


.
' !
 #  
  $$.! 222/0#/
$5/0#/
6
 $3/0#/
6
 $# /0#/
  3 #   # $30#   37 
 ,  $#
8$ +$%&
' 
  
 $
* !
! * 
*  
* 
" #
" #

!  
!
9
:
9
; <" +$
+$"$
!"(
!#(
%)&* %   
&*
$
:"(
!#(
%)&* %   
&$
$
  ;#= %!  &
 4
#"$
    $


46

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


!( 
* !* 
  ">   (
* !,
'-  " #
    :+5 9
  ">   (
   
" #" #
 %  * 3!3:&
,-!
  " #%" #3!3:&8 
"(<"
 +$
  !(
8$ 
+$5
  
" #7(
* !7(
,-7  ,
7("(
  
 0( 
58 

  7(
  ,,-7 ,
7("(
 ?$ 0( 
58 

 7(
  ,+$8 

 8$ 
8$ !
  " #% # 
" #3!
93:
9&
' 



93
9

 !
9
; <" !
  " #
!
  " #"$
"(
!#(
%)&* %   
&  % +& 
"(
!#(
%)&* %   
&  % "9-& 
1#
   

 !9%*(% 0 

3)&&6)
8)"!
8)":
 # %3&* " "(
!#(
%)&
%@

 !3&
7 
7 
8$ 
!
  " #5
  
!
  " #8 

 8$ 

Przyjrzyj si dokadnie temu listingowi. Przede wszystkim chodzi o to, by zwrci uwag na deklaracj obiektw #$. Czy widzisz rnice?

Rozdzia 2. Wsplne cechy i obiekty programw Office

47

Na dysku CD-ROM, w katalogu Przyklady\Cz_II, w pliku CreateDoc.xls znajduje si


peny kod, opisy i odpowied na pytanie.

Obiekt Application
Jest to bardzo interesujcy obiekt i bdzie on czsto przeze mnie uywany w przykadach. Obiekt Application odwouje si do aktywnej aplikacji Office. Oznacza to, e podczas pracy w edytorze tekstw Word, obiekt Application odwouje si wanie do tego
programu oraz zawiera wszystkie obiekty i kolekcje obiektw tej aplikacji. Jak naley
to rozumie? Moesz uy tego obiektu do zastosowania metod lub ustawie waciwoci dla caej aplikacji:  

 
 %&  '( ) lub do
wywoania metod lub ustawie waciwoci dla dowolnego obiektu (kolekcji obiektw)
danej aplikacji, tak jakby osobicie tych obiektw uywa:   * + ,&


(otwieranie formularza Zamwienia).
W instrukcji pierwszej jawnie posuyem si obiektem Application. Przykad drugi ju
nie zawiera jawnego wywoania obiektu Application, a mimo to podany kod jest poprawny i zostanie prawidowo zinterpretowany przez aplikacj Access. Jak to moliwe?
Jeli nie wiesz, przeczytaj jeszcze raz to, co dotychczas przeczytae. W zdaniu drugim
zapewniam Ci, e obiekt Application posiada wszystkie obiekty danej aplikacji. Dla
VBA nie musisz jawnie posugiwa si tym kwalifikatorem obiektu.
Oczywicie przykad drugi bdzie poprawny wycznie w aplikacji Access, poniewa
inne programy z pakietu Office nie posiadaj obiektu  . O obiektach poszczeglnych aplikacji dowiesz si w kolejnych czciach ksiki.

Instancyjno aplikacji
Rozpatrujc aplikacje Office pod ktem wykorzystania ich w kodzie, a ucilajc pod
ktem tworzenia nowej instancji klasy aplikacji, wyrniamy aplikacje jedno- lub wielokrotnego wystpienia, uycia. Na przykad MS Word jest aplikacj jednokrotnego
wystpienia. Oznacza to, e kod:
 
!  
 7!  

niezalenie od tego, jak wiele w danej chwili jest uruchomionych instancji (kopii)
MS Word, zawsze bdzie tworzy now instancj aplikacji. Za aplikacja wielokrotnego
wystpienia (jak jest na przykad Outlook), niezalenie od tego, jak wiele w kodzie bdzie odwoa do instancji tej aplikacji, gdy ta aplikacja jest otwarta, zawsze bdzie wskazywa na aplikacj ju otwart. Przykadowo, jeeli Outlook bdzie otwarty, wszystkie
odwoania do nowej instancji klasy (aplikacji) w przedstawionym kodzie (Listing 2.2):
Listing 2.2. Odwoania do instancji aplikacji
;$)
;$ 
;$A
;$ 
;$B
;$ 

48

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


;$)7;$ 
;$A ;#= %;$ &
;$B<;#= %3;$ &

zawsze bd 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 wzgldu na krotno instancji
Aplikacja

Krotno instancji

Tworzy za kadym razem...

MS Access

jedno

MS Excel

jedno

now instancj aplikacji niezalenie od liczby


ju uruchomionych
now instancj aplikacji niezalenie od liczby
ju uruchomionych

MS Word

jedno

now instancj aplikacji niezalenie od liczby


ju uruchomionych

MS FrontPage

jedno

now instancj aplikacji niezalenie od liczby


ju uruchomionych

MS Outlook

wielo

zmienn obiektow zwracajc instancj aplikacji


ju uruchomionej

MS PowerPoint

wielo

zmienn obiektow zwracajc instancj aplikacji


ju uruchomionej

Jak zauwaye, do tworzenia nowej instancji klasy suy funkcja . S dwa
najwaniejsze zastosowania tej funkcji:
 Sprawdzenie, czy na danym komputerze jest zainstalowana aplikacja, ktrej

tworzysz kopi. Przykadowy kod (Listing 2.3):


Listing 2.3. Uycie funkcji CreateObject do sprawdzenia, czy na danym komputerze jest zainstalowana
aplikacja
;#=
;#= 
$#C
 

%&
#'
' 
#'": =% 

 &
,-7#'"(
.
' . 

=
 
   $3
0#,- 3>
 $#
  ,,-#'"(
.
' . 

=
 
   $30#,- 3
C
222
!(;#=
1$
      35
  !(
  ,  $#

Rozdzia 2. Wsplne cechy i obiekty programw Office

49

8$ ": =%7 


&
' 
": ="$
; *
$7 
;#= ;#= %7 &
,- DAE"(1 
     =
": =8 

  ,  8$ 

Na dysku CD-ROM w katalogu \Przyklady\Cz_II\ znajdziesz plik CzyJest.xls, z kodem listingu 2.3. Zwr te uwag na deklaracj obiektu aplikacji, odbywa si on
w sposb opniony.
 Odwoanie si do aplikacji, ktrej nie na lokalnym komputerze ale jest na innym

komputerze w sieci. Przykadem takiego zastosowania moe by potrzeba


wydrukowania raportu z bazy MS Access umiejscowionej na serwerze z pliku
MS Excel, nawet jeli MS Access nie jest zainstalowany na komputerze, z ktrego
wyszo danie drukowania. Wtedy uycie funkcji  musi odby si
z dwoma argumentami: nazw aplikacji i nazw serwera.
Listing 2.4. Drukowanie z serwera
$#$$= %&
 
 

 
; *
$7 
  ;#= % 

 3.=&
,- FGH"(
.
' '    
 $#
-$ =$=230#   3>#
 $#
 ,!( 
1$
$ =   =  # 3 $$=  
  !(
 $#

Aby kod listingu 2.4 mg zadziaa musz by spenione nastpujce warunki:


zainstalowany MS Office XP (funkcja CreateObject z dwoma argumentami jest dostpna dopiero od wersji XP) oraz odpowiednio skonfigurowany DCOM na serwerze i lokalnym komputerze (na przykad programem Dcomcnfg.exe).

W tekcie opisujcym krotno instancji posuyem si rwnie funkcj -.


Moesz jej uywa do zwrcenia informacji o tym, czy:
 jest ju uruchomiona aplikacja i utworzy zmienn obiektow wskazujc na t
aplikacj. Listing 2.5 ilustruje przykadowe zastosowanie funkcji -.

50

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

Listing 2.5. Czy jest uruchomiona aplikacja?


$#;  

%&
#'
' 
#';  % 

 &
1=
    = 3 
,-7#'"(#'": =% 

 &
,-#'"(
!(;#=
1$
      35
  !(
  ,  $#
8$ ;  %7 
&
' 
;  "$
; *
$7 
1
  3 =
 
;#=<;#= %37 &
,- DAE"(1$$ (   =
;  8 

  ,  8$ 

Jeeli masz uruchomionych kilka kopii aplikacji, ktr chcesz zautomatyzowa, nie
masz gwarancji, ktra instancj zwrci Ci funkcja <;#= , poniewa funkcja ta
tworzy zmienn obiektow wskazujc na aktualnie otwart aplikacj jednokrotnego
wystpienia.
 oraz do otwarcia pliku przez odpowiedni aplikacj MS Office. Przyjrzyj si

listingowi 2.6.
Listing 2.6. Otwarcie odpowiedniej aplikacji MS Office wedug rozszerzenia pliku.
$#;%&
##
' 

 >$


 >$5I
  
##;;    =%
 >$&
,-##"(
.
' >51/
 >$/1
  2/0#/
  (
  30#,- 3+ 

;#= 0 1$ =  =   
;#=

;#=7(
  ,  $#
8$ ;;    =%
 >$
&
' 
;;    ="$

Rozdzia 2. Wsplne cechy i obiekty programw Office

51

; *
$7 
;#=<;#= %
 >$&
,- FGH"(;;    =8 

 8$ 

Instancyjno aplikacji nie jest atwym zagadnieniem, ale mam nadziej, e cho troch przybliyem Ci t tematyk.

Obiekt Commandbars
Kada z aplikacji Office posiada wasny zestaw paskw menu i narzdzi. Programujc wasne programy pod Office zapewne chciaby umie programowo tworzy wasne paski narzdzi czy menu. W tej czci tego rozdziau opisz jak to zrobi.
Na pocztek sowo wyjanienia: jeli uywam sowa pasek bez kontekstu, to mam na
myli pasek menu lub pasek narzdzi lub pasek menu podrcznego. W kadym innym
przypadku precyzuj, o jaki pasek mi chodzi.

Podobiestwa i rnice
Wszystkie aplikacje Office uywaj tej samej technologii do tworzenia paskw menu
i paskw narzdzi. Technologi t firma Microsoft nazwaa Commandbars Object
Model. S trzy rodzaje paskw: paski narzdzi, paski menu i menu podrczne. Menu
podrczne s wywietlane na trzy sposoby: jako przecignij-upu z paska menu, jako
podmenu i jako menu kontekstowe. Menu kontekstowe s wywietlane, jeli klikniemy prawym klawiszem myszy.
Poniewa obiekty CommandBars s dostpne we wszystkich aplikacjach Office, moesz
napisa kod, by manipulowa paskami narzdzi czy menu we wszystkich aplikacjach
Office. Kada aplikacja Office przechowuje informacje o swoich paskach w innym miejscu i, w niektrych przypadkach, w inny sposb. Podstawow rnic jest to, jak i gdzie
kady program Office przechowuje paski utworzone przez uytkownika.
Kiedy poczynisz zmiany we wbudowanych paskach, informacje o tych zmianach zostan zapisane w rejestrze Windows w profilu kadego uytkownika (jeli Windows jest
skonfigurowany na kilku uytkownikw). Informacje o zakresie widzialnoci" i lokalizacji" s przechowywane w rejestrze Windows bez podziau na uytkownikw. Ponadto kada aplikacja Office przechowuje swoje paski w dokumencie, w ktrym te
paski zostay utworzone lub w konkretnym pliku. Oznacza to, e moesz kopiowa
paski tylko midzy dokumentami tego samego typu. Zatem, nie moesz skopiowa
paska z MS Word i uywa go w MS Access.

CommandBars aplikacji MS Access


Paski, ktre utworzysz w programie MS Access, s przechowywane w bazie danych,
w ktrej zostay utworzone. Jeli chcesz utworzy pasek, ktry bdzie dostpny w innych

52

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

bazach danych, musisz utworzy go w bibliotecznej bazie danych i ustawi odwoanie do


tej bibliotecznej bazy danych w kadej bazie, w ktrej dany pasek ma by dostpny.
Informacje o wbudowanych paskach narzdzi przechowywane s w rejestrze.

CommandBars aplikacji MS Excel


MS Excel umoliwia Ci przechowywanie paskw w danym skoroszycie lub w obszarze
roboczym. Domylnie paski Excel tworzone programowo s zapisywane w obszarze roboczym danego uytkownika. Jeli Windows ma zdefiniowanych wielu uytkownikw,
jak na przykad w rodowisku Windows NT, obszar roboczy uytkownika zapisywany
jest w katalogu C:\Winnt\ w pliku utworzonym od nazwy uytkownika jak podano
poniej.
Jeli nie zostay utworzone profile uytkownikw, to obszar roboczy uytkownika zapisywany jest w katalogu C:\Windows w pliku o nazwie skadajcej si z nastpujcych
elementw:
 nazwy uytkownika podanej w oknie dialogowym rejestrujcym produkty Office

(na przykad: Dorcia),


 numeru wersji Office (na przykad: 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 nastpnie nacisn przycisk Docz. W polu po lewej stronie wybierz swj pasek
i kliknij przycisk Kopiuj.
Niestety, moesz kopiowa paski do skoroszytu tylko rcznie, niemoliwe jest
skopiowanie paska z poziomu VBA. Podobnie rzecz ma si, jeli chodzi o usuwanie.

Jeli chcesz usun pasek z aktywnego skoroszytu, wybierz z okna po prawej stronie
swj pasek, a nastpnie kliknij przycisk Usu. Nie bj 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 bd dostpne w kadym z otwieranych
skoroszytw. Jeli chcesz, by dany pasek nie by dostpny w innych skoroszytach,
musisz programowo go usun lub ukry. Paski z danego skoroszytu bd dostpne tylko w tym skoroszycie.
Jeeli wybierzesz polecenie z paska zapisanego w obszarze roboczym, utworzonego
w skoroszycie X (tu jest zapisany kod, ktry polecenie ma wykona), to skoroszyt X
zostanie automatycznie otwarty i bdzie widoczny. Jeli otworzysz skoroszyt zawierajcy pasek, ktry nie istnieje w Twoim obszarze roboczym, to zostanie on skopiowany do obszaru roboczego. Ta kopia nie jest usuwana po zamkniciu tego skoroszytu.

Rozdzia 2. Wsplne cechy i obiekty programw Office

53

CommandBars aplikacji MS Word


MS Word moe przechowywa paski w kilku miejscach: w pliku Normal.dot (szablonie globalnym), innym szablonie (*.dot) lub w danym dokumencie (*.doc). Rnica
polega na tym, e paski przechowywane w pliku Normal.dot s dostpne dla kadego
dokumentu, ktry tworzysz, nawet jeli jest oparty na innym szablonie.
Nie jest dobr praktyk przechowywa wasne paski narzdzi w pliku szablonu globalnego, poniewa moe to spowodowa rozrost tego pliku do duych rozmiarw
i MS Word bdzie adowa si wolno. Ponadto, bdc administratorem sam dbaby
o to, by plik Normal.dot by chroniony przed zapisem. Uchronioby Ci to przed gronymi wirusami. Zatem przechowuj wasne paski narzdzi w pliku zwykego szablonu.

Pasek utworzony w szablonie bdzie dostpny w kadym dokumencie opartym na tym


szablonie. Jeli za pasek zosta utworzony w dokumencie, to bdzie on dostpny tylko po otwarciu tego dokumentu.
Domylnie wszystkie paski, ktre utworzysz, bd zapisane w pliku Normal.dot., chyba
e zapiszesz je dla danego szablonu lub dokumentu w oknie Dostosuj\Zapisz w Jeli
utworzysz wasny pasek za pomoc VBA, musisz okreli, gdzie ma zosta zapisany
za pomoc waciwoci CustomizationContext obiektu Application.
CustomizationContext zwraca lub ustawia obiekt, szablon lub dokument, w ktrym
zmieniasz paski. Waciwo ta jest zarwno do odczytu, jak i zapisu. Poniszy przykad (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
$# :"%&
$
  7 " 
:' 
 : 5'$ : % :3 :3 :!&3
: 5 :   3  58

 $#

Poniszy przykad (listing 2.8) dodaje przycisk Informacje o wersji pliku do paska Standardowy i zapisuje w pliku szablonu, na ktrym oparty jest aktywny dokument.
Listing 2.8. Dodawanie przycisku do paska
$
   0 $ ( " 
   ' 
%   &
 "5
'$3
,5AJAA3'-5

Obiekt CommandBars reprezentuje kolekcj obiektw CommandBar (paskw narzdzi,


menu) w aplikacji.

54

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

Kolekcja paskw
Kada z aplikacji Office posiada nie jeden, a wiele paskw. Jeli chciaby wyliczy
wszystkie paski dostpne w aplikacji, posu si obiektem CommandBars, ktry reprezentuje kolekcj paskw, by zwrci pojedynczy obiekt CommandBar. Listing 2.9
przedstawia przykadow procedur, ktra wywietla w oknie Instrukcje bezporednie
zarwno nazw, jak i nazw lokaln paska menu i paska narzdzi oraz warto, ktra
identyfikuje, czy pasek menu lub pasek narzdzi jest widoczny.
Listing 2.9. Wyliczanie paskw
$#! > %&
 # 
  ' 
8 ( #    ' 

#$> # 7 3 # 7 9 3 # 4


#
7 
  $#

Dodawanie paska do kolekcji


Dodawanie paska do kolekcji jest bardzo proste. Wystarczy posuy si metod .
Listing przedstawia procedur, ktra tworzy pasek narzdzi i nadaje mu nazw MojPasek. Nastpnie wywietla go jako pasek narzdzi pywajcy (nie majcy staej pozycji wrd paskw narzdzi). Czytaj uwagi w dalszej czci ksiki, by zrozumie,
dlaczego wyliczam zarwno nazw, jak i nazw lokaln.
Listing 2.10. Tworzenie paska
$#+>
%&
 # )  ' 

# )4
#"$
 $#

%7 5.=>
3>
5
' 8 &

Do utworzonego przed chwil paska moesz doda polecenia lub zmieni miejsce jego
dokowania. Aby odwoa si do istniejcego paska, musisz uy skadni  .
'
 , gdzie
 jest nazw lub indeksem paska narzdzi. Nastpujca instrukcja dokuje pasek narzdzi nazwany MojPasek w dolnej czci okna aplikacji:  .
'/0! 0

  '' .
Moesz uywa nazwy lub indeksu, by okreli pasek menu lub pasek narzdzi z listy dostpnych paskw menu lub paskw narzdzi w kolekcji aplikacji. Aczkolwiek,
musisz posuy si nazw, by okreli menu, menu podrczne lub podmenu. Jeli
dwa lub wicej z paskw uytkownika bd miay t sam nazw, obiekt   6
' 
%  & zwrci pierwsz z nich. By upewni si, e zwracasz poprawne menu lub
podmenu, zlokalizuj kontrolk, ktra przechowuje to menu.

Pasek
Reprezentuje pojedynczy pasek narzdzi lub menu w kolekcji paskw narzdzi lub
menu aplikacji.

Rozdzia 2. Wsplne cechy i obiekty programw Office

55

Listing 2.11 przedstawia funkcj, ktra sprawdza, czy w kolekcji paskw znajduje si
pasek o nazwie okrelonej przez procedur, ktra wywouje funkcj 0!. Jeli znajdzie,
czyni go widocznym i chroni jego miejsce dokowania. Funkcja zwraca prawd, jeeli
pasek zosta znaleziony i fasz, jeeli nie udao si znale okrelonego paska w kolekcji
paskw aplikacji.
Listing 2.11. Szukanie paska w kolekcji paskw
8$ >
% #7 
&
' 
 #
  ' 
 8 

8 ( #,  ' 

,- #7  #7 "(


 #> 
' 7(  
 #4
#"$
 "$
  ,7  #
>
 
 8$ 

Kopiowanie paska
Kopiowanie paska moe by wykonane na dwa sposoby. Pierwszy polega na rcznym
skopiowaniu, drugi na skopiowaniu programowym. Aby programowo skopiowa pasek, naley najpierw utworzy nowy pasek, a nastpnie posuy si metod  1, by
skopiowa kade z polece z oryginalnego paska do nowego. Przykadow procedur
kopiowania paska Formatowanie ilustruje listing 2.12.
Listing 2.12. Kopiowanie paska
$#:$=%&
,-:$=>
%8 378 3"$&"(
.
' >

 
 30#,- 3> 
  ,  $#
8$ :$=>
%7  
3 7  
3
;  
' "$&
' 
 #;
  ' 
 #: 
  ' 
 # 
  ' 
 #"
9
; <"' : 
 #;  ' 
%7  &
 #" #;"
 
 #"


' ". $' 
 #:   ' 
 %7 5 7  3>
5
' .$' &


' ">$
 #:   ' 
 %7 5 7  3>
5
' ">$&

 

 #:   ' 
 %7 5 7  &
   

56

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


8 ( # #;

 #
7  #
,- "(
,- #: "
' ">$"(
 #: (>$


 #: 4
# 
 ,  ,:$=>
"$
 8$ 
' :  5
:$=>
8 

  8$ 

Usuwanie paska
Usuwanie paska, tak jak dodawanie czy kopiowanie, moesz wykona rcznie lub
napisa odpowiedni funkcj, procedur. Jest jednak jedno mae ale. Paska typu
Pop-up nie moesz usun rcznie w oknie dialogowym Dostosuj. Jedyn moliwoci jest usunicie takiego paska z kodu. Przykadow procedur usuwajc pasek, ktry
kopiowalimy w poprzednim rozdziale, przedstawia listing 2.13.
Listing 2.13. Usuwanie paska
$#+
$%&
 ' 
%78 &
 $#

Jednak bardziej uniwersalnym rozwizaniem bdzie kod przedstawiony w listingu 2.14.


Listing 2.14. Usuwanie paska z programem obsugi bdw
8$ +
$>
%  >
 
&
' 
; *
$7 
   ' 
%  >
 &
+
$>
,-% FGH38 
3"$&
  8$ 

Jeeli dobrze przyjrzae si listingowi, to zapewne zauwaye, e umieciem tam


instrukcj   #  2, ktra ma za zadanie przechwyci i obsuy bd,
kiedy podana nazwa nie jest nazw paska lub paska nie ma w kolekcji paskw. Taka
sytuacja moe wystpi rwnie, jeeli prbujesz usun ktry z wbudowanych paskw narzdzi, na przykad Standardowy.

Blokowanie paska przed modyfikacjami


Czasami trzeba zablokowa pasek przed modyfikacjami ze strony innych uytkownikw.
Zadanie to nie jest takie proste, bo uytkownicy mog dotrze do paskw na trzy sposoby:

Rozdzia 2. Wsplne cechy i obiekty programw Office

57

1. uywajc polecenia Widok\Paski Narzdzi\Dostosuj,


2. klikajc prawym klawiszem myszy, gdy wskanik znajdzie si na szarym polu

paskw,
3. klikajc prawym klawiszem myszy, gdy wskanik znajdzie si na ktrym

z paskw.
Na szczcie jest rozwizanie.
Po pierwsze: ukryj pasek menu lub wycz polecenie Widok\Paski Narzdzi, wtedy
bdziesz mia pewno, e uytkownik nie bdzie mia dostpu do modyfikacji paskw pierwsz z wymienionych metod.
Po drugie: uyj poniszego polecenia, by zabra prawa do przegldania i modyfikowania
niestandardowych paskw narzdzi za pomoc 2. i 3. metody:   )
3
   *.

Dodawanie polece do paska


Poniszy przykad (listing 2.15) dodaje nowy przycisk w menu Narzdzia. W procedurze kliknicia na tym przycisku umieszcza funkcj, ktra wywietli komunikat.
Listing 2.15. Dodanie polecenia z kodu i przypisanie mu procedury
$#+> %&
,  ' 
%"
&

!(,
'<$"$
 :$ 
8 ,JA1

; :$ 
 !(
  $#

%"5
'$&

$#:$ %&
.
' "=
$ 
  $
30# 3:$ 
  $#

Uywaj nazwy, a nie nazwy lokalnej, by mie pewno, e zwracasz prawidowe menu.

Pokazywanie i ukrywanie polece


W zalenoci od tego, jak bardzo rozbudowana bdzie Twoja aplikacja, bdziesz musia
utworzy jaki uniwersalny pasek, w ktrym umiecisz tak wiele polece, jak bdzie
konieczne. Jednake nie zawsze wszystkie polecenia musz by w danym momencie
widoczne. Przykadowo, na jednym formularzu uytkownik bdzie mia dostpnych tylko
pi elementw paska, a na drugim ju siedem. Taka sytuacja zaistnieje tylko wtedy, gdy
kady z formularzy bdzie suy do czego innego. Czy jednak zawsze trzeba ukrywa
polecenia? Czasami wystarczy uniemoliwi dostp do nich w inny sposb, ale o tym ju
w dalszej czci ksiki.

58

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

Oto prosta instrukcja zmieniajca stan widzialnoci polecenia na pasku:


  ' 
%!
(.$' &
%>&4
#"$

Jeli czsto w aplikacji bdziesz pokazywa lub ukrywa jakie polecenie, lepiej jest
napisa procedur, ktra bdzie pobieraa 2 argumenty: etykiet polecenia i stan. Przykadowa procedura dla aplikacji Excel mogaby wyglda tak, jak przedstawia listing 2.16.
Listing 2.16. Procedura pokazywania i ukrywania polece paska
$#> > >
 % 
3; 
 
' "$&
 
  ' 
8 ( ,   ' 
%!
(.$' &

,-   "(


 4
#
 
 8
  ,7 
  $#

Jeli zechcesz zmieni pasek menu w innej aplikacji Office, uyj .$'  zamiast
!
(.$' .

Jeli powysza procedura (listing 2.16) zostanie wywoana tylko z argumentem 1!
,
to domylnie pokae dane polecenie. Parametr  nie jest wymagany. Aby ukry
jakie polecenie, po etykiecie podaj rwnie   *. Nastpujcy kod: 0!40.

0! 50
!( * !1& 
 Plik(  !16 0!40
.
0! 50
! pokazuje wczeniej ukryte polecenie.
Do ustawiania domylnych parametrw wywoywanej procedury lub funkcji suy
sowo kluczowe ; . Przyjrzyj si dokadnie procedurze > > >
 ,
a zauwaysz, e stan zadeklarowaem jako warto typu '  i od razu ustawiem na "$. Jeeli w parametrach, ktre pobiera funkcja, znajdzie si warto typu 4  , to nie moesz jej przypisa wartoci domylnej (ze wzgldu na to, e
nie wiesz jak konkretnie warto zostanie przekazana do funkcji). Aby sprawdzi, czy
procedura zostaa wywoana z wartoci, ktra nie jest wymagalna, musisz uy
funkcji ,
.

%K$ = 


$0  L&, by zwrci prawd (podany argument) lub fasz. Nastpnie bdziesz mg przypisa jak warto.

Wczanie i wyczanie polece


Czy pamitasz jak pisaem, e nie zawsze trzeba ukrywa polecenia i czasami wystarczy wyczy to polecenie? Do wczania lub wyczania polece paska suy waciwo Enabled. Moesz ustawi dowolny stan dla danego polecenia na przykad tak:
  ' 
%!
(.$' &
%>&  # "$

lub posu si procedur podobn do 0!40


0! w poprzednim rozdziale,
tylko zamiast waciwoci Visible, uyj Enabled. Proste? Mam nadziej, e tak. Zapewne zauwaye, e zajmowaem si dotychczas tylko poleceniami gwnymi. Jak
dotrze do polece, umieszczonych wewntrz tych polece? Zastanw si i sprbuj
napisa odpowiedni kod.

Rozdzia 2. Wsplne cechy i obiekty programw Office

59

Obiekt Assistant
Obiekt Assistant to popularny w pakiecie Asystent. Wiadomo, e generalnie podpowiada, co mamy zrobi, przy okazji posugujc si ciekawymi efektami graficznymi.
Asystent to doskonae narzdzie do Twoich aplikacji. Mona go tak zaprogramowa,
by nie tylko wywietla podpowiedzi, ale rwnie wspdziaa z elementami interfejsu aplikacji. Moesz, na przykad, za pomoc Asystenta uruchamia polecenia z paska
lub wstawia grafik do dokumentu. Ciekaw spraw jest to, e cay proces zachodzi
bez zamykania okna aplikacji.
Asystenta moesz zaprogramowa tak, by wykonywa wszystkie czynnoci jakie chcesz.
Do tego celu musisz ustawi zmienn obiektow, ktra pozwoli na manipulowanie
wszystkimi waciwociami i metodami Asystenta. Moesz na przykad uczyni Asystenta widocznym, przenie go w inne miejsce na ekranie, okreli animacj, ktr
chcesz uruchomi i wywietli Assistant balloons (sowa tego nie tumaczymy, ale dla
uatwienia bd posugiwa si okreleniem podpowied, podpowiedzi) zawierajce okrelony przez Ciebie tekst i kontrolki (np. pola opcji).
Obiekt Assistant reprezentuje Asystenta pakietu Office. Obiekt Assistant nie jest kolekcj obiektw Assistant i tylko jeden Assistant moe by aktywny w danym czasie.
Popularny Asystent moe przyjmowa jedn z wielu zaprogramowanych postaci. Postaci te ukryte s w plikach o rozszerzeniu *.act i najczciej znajduj si w katalogu
C:\Program Files\Microsoft Office\Office\Actors. Tabela 2.2 przedstawia nazwy poszczeglnych plikw dla kadej z postaci Asystenta.
Tabela 2.2. Nazwy plikw 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

Posugujc si nazw pliku moesz okreli, jakiego Asystenta chcesz w danej chwili
wywietli. Suy do tego waciwo FileName obiektu Assistant. Musisz by jednak
pewien, e na komputerze uytkownika zainstalowane s skadniki odpowiadajce za
wywietlanie odpowiedniej postaci Asystenta. W innym przypadku bdzie wystpowa
bd. Ponadto, kady z uytkownikw personalizuje Office, co oznacza, e tylko dana
posta Asystenta moe mu odpowiada.

60

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

Aby wywietli aktualn (uywan przez uytkownika) posta Asystenta, wykonaj


ten kod:
!(


 
4
#"$
 !(

Samo wywietlenie Asystenta jeszcze nic nie oznacza. Nic nie bdzie podpowiada. Do
komunikacji z uytkownikiem poprzez Asystenta bdziesz potrzebowa obiektu Balloon.
Rnice w programowaniu Asystenta dla pakietw Office: do pakietu Office XP Asystent jest albo widoczny i dostpny, albo niewidoczny i niedostpny, ale nigdy nie
mona go cakowicie wyczy. Od pakietu Office XP Asystent ma now waciwo
On i moe by albo wczony, albo wyczony. Ta waciwo decyduje o tym, czy
Asystent jest dostpny w caym pakiecie. Dlatego, podczas programowania Asystenta w pakiecie Office XP, zwr szczegln uwag na to, w jakim stanie znajdowa si Asystent zanim zacze nim manipulowa w kodzie. Najlepiej przypisz do
zmiennej jego stan przed wywoaniem, a po zakoczeniu prac z Asystentem, ustaw
stan Asystenta na t zmienn.

Przyjrzyj si listingowi 2.17.


Listing 2.17. Korzystanie z Asystenta
$#

%&
 ! 
' 
 !  
' 
!(


 
 ! ;
 !  4
#
 !(
1 $
  


!(


 
; ! 
4
# !  
 !(

Balloon
Jak ju wspomniaem, obiekt Balloon Asystenta suy do komunikacji z uytkownikiem
Twojej aplikacji. Jest on zaprojektowany tak, by mg atwo go wywoywa, ale nie
ma na celu zastpienia okien dialogowych. Powiedzmy sobie, e jest tylko rodkiem
pomocniczym.
Obiekt Balloon reprezentuje podpowied wywietlan za pomoc Asystenta, z nagwkiem i wiadomoci tekstow. Moe on zawiera kontrolki takie jak: pola wyboru
(CheckBoxes) lub etykiety (Labels). Balloon nie jest kolekcj Balloons, poniewa jest
pojedynczym obiektem. W jednym czasie moe by widoczny tylko jeden Balloon,
aczkolwiek moliwe jest zdefiniowanie wielu Balloons i wywoanie dowolnego z nich
wtedy, kiedy bdzie potrzebny. Do utworzenia nowego obiektu Balloon suy waciwo NewBalloon.

Rozdzia 2. Wsplne cechy i obiekty programw Office

61

Listing 2.18 przedstawia przykad tworzenia pojedynczego obiektu Balloon.


Listing 2.18. Tworzenie pojedynczego obiektu Balloon
$#>= > %&
  
' 
  


 7' 
!(  
M ; =

    
"   
' /0#9-/
  


 7' /0#9-/
!(  /0#9-/
M ; =

    
/0#9-/
" C
 =

    
/0#9-/
'$
'$;:/0#9-/
(/0#9-/
  !(
'$
'$;:
(
  !(
 $#

Listing 2.19 przedstawia przykad tworzenia wielu obiektw Balloon.


Listing 2.19. Przykad tworzenia wielu obiektw Balloon
$#: >  

 %&
  )
' 
  A
' 
  B
' 
 
9
  )


 7' 
!(  )
M >  
 
"  ( 
#  =   N
'$
'$;  
  !(
  A


 7' 
!(  A
M >   $ 
"  ( 
#  =   N
'$
'$;  
  !(
  B


 7' 
!(  B
M >    
" "=$   
'$
'$;:
  !(

62

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


   )(
,- 
' '$;:"(
   A(
,- 
' '$;:"(
  B(
  ,  ,  $#

Listing 2.20 przedstawia trzy procedury. Pierwsza wywouje procedur tworzc now
podpowied z kilkoma opcjami wyboru i wywietla podpowied. Druga jest powoana
do tego, by dowiedzie si, jakiego wyboru dokona uytkownik, a trzecia wywietla,
rwnie przez Asystenta, odpowied.
Listing 2.20. Kompleksowa obsuga Asystenta
$#! =; =%&


 =; =$3
3)3#)3#A3#B
 $#
$#

 =; =%$
3

3 = >   
93
>   #%&
4  &
  
' 

93 
9
#

  


 7' 
!(  
' "
' "'$

'$
'$;  
M $
" 

1#   (  
89'$ %#&"+'$ %#&
##%&
( ' 
%@)&" #
7 
 (
 !(
C  ; =   3 3 = >  
 $#
$#C  ; = %# 
' 3#
93 
9&

9
'
' 
,-#6)"(
'# ( ' 
% &( 
,-'"$"(


 =;  $3' 3     

Rozdzia 2. Wsplne cechy i obiekty programw Office

63

 



 =;  +$$
3>3=
  
  
  ,  ,  $#

Obiekt FileSearch
Obiekt FileSearch jest programowym odzwierciedleniem okna dialogowego Otwrz dostpnego z menu Plik. Oznacza to, e masz do dyspozycji wszystkie metody i waciwoci, ktre s normalnie dostpne w powoanym oknie. Co ciekawe, wcale nie musisz uywa tego okna, a wrcz moesz skonstruowa wasne.
Obiekt FileSearch posiada dwie metody i kilka waciwoci, ktrych moesz uy do
zbudowania wasnego okna do poszukiwania plikw. Musisz uy waciwoci FileSearch, by zwrci odwoanie do tego obiektu. Nastpnie posu si metod NewSearch,
by zresetowa (wyczyci) wszystkie kryteria poprzedniego poszukiwania.
Metoda NewSearch nie czyci kryterium LookIn, czyli cieki, ktra jest przeszukiwana. Aby j wyczyci, a raczej ustawi na nowo, po prostu przypisz jej inn warto.
Listing 2.21 przedstawia przykad kodu, ktry powoduje wywietlenie wszystkich plikw, ktre w nazwie maj sowo office, znalezionych w okrelonej lokalizacji. W przypadku niepowodzenia wywietlony zostanie komunikat, e nie znaleziono okrelonych
plikw.
Listing 2.21. Poszukiwanie plikw z kodu
$#$ =>%&


!( 8  (
7  (
9,5I
  ($#8 
"$
87 -- 
8"
8"8

,-  $%&GH"(
 
8$ 8
$

)
  /8$ 8
$/
 $  (
$  
.
' 30#,- 3:$ 

A3B3D
  /8$ 8
$/
 $  (
$  
.
' 30#,- 3:$ 

64

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



 

  /8$ 8
$/
 $  (
$  
.
' 30#,- 3:$ 
   
8)"8$ 8
$
.
' 8$ 8
%&30#,- 3
7 
 

.
' 7   $  (/

$  30#   3' 
  ,  !(
 $#

Na dysku CD-ROM w katalogu Przyklady\Cz_II znajdziesz przykad wasnego okienka


do poszukiwania plikw, plik FileSearch.xls.

Obiekt DocumentProperties
Kady plik pakietu Office ma wbudowane pewne waciwoci. Moesz dodawa rwnie wasne waciwoci, czy to manualnie, czy to z kodu. Uywajc tych waciwoci
moesz tworzy, przechowywa i ledzi informacje o dokumentach pakietu Office. S
to midzy innymi: data utworzenia, autor, dane o osobie, ktra dokonaa ostatnich zmian
i wiele, wiele innych.
MS Access nie posiada obiektu DocumentProperties do przechowywania wbudowanych i wasnych waciwoci wywietlanych w oknie dialogowym Waciwoci bazy
danych.

Aby zwrci kolekcj DocumentProperties, uyj dwch podstawowych waciwoci:


 BuiltInDocumentProperties, zawierajcej wszystkie wbudowane waciwoci

dokumentu,
 CustomDocumentProperties, zawierajcej wszystkie dodane waciwoci

dokumentu.
Listing 2.22 przedstawia przykadow procedur wyliczajc po nazwie wbudowane waciwoci aktywnego skoroszytu i ich wartoci.
Listing 2.22. Wyliczanie wbudowanych waciwoci aktywnego skoroszytu i ich wartoci
$#! !#$  !

 %&
; <" ! !#$  !

 
)
!
(
%)& 0 

Rozdzia 2. Wsplne cechy i obiekty programw Office

65

8 (, 0!#'$ $>


%3)&4 $7 

%3A&4 $4 $
@)
7 
$#
! !#$  !

 5
 
 7$#

6A)DODPOAJE

%3A&4 $#   (
*
$7 

 

.
' >  # $5/ 
30# 3' 
/ 7$#
   
  
 $#

Identyczn procedur naleaoby napisa do wyliczenia wasnych, dodanych waciwoci danego dokumentu. Oczywicie, jeli dany kod miaby by uruchomiony dla aplikacji MS Word, zamiast wyraenia 
7!! naleaoby uy 
7  .
Posugujc si tymi waciwociami mona bardzo duo si dowiedzie o historii dokumentu. Mianowicie, kiedy i przez kogo by ostatnio zapisany, czy zosta wydrukowany i kto go drukowa oraz uzyska wiele innych ciekawych informacji. Zastanw
si, jak mgby je wykorzysta.

rodowisko aplikacji
Dlaczego rodowisko aplikacji? Nazwaem ten rozdzia tak, poniewa wszystkie podane
funkcje s zwizane ze rodowiskiem, otoczeniem, sprawami zwizanymi z aplikacj,
ktr projektujesz. Bardzo czsto oprcz typowych informacji zawartych w dokumencie, skoroszycie czy bazie danych bdziesz potrzebowa innych, np.
 jaki uytkownik jest w tej chwili zalogowany?
 gdzie jest katalog systemowy, tymczasowy?
 jak wywoa inny program?
 i wiele, wiele innych.

Funkcja Environ
Pierwsza z kilku funkcji zwizanych ze rodowiskiem aplikacji, bardzo interesujca.
Suy do zwracania wartoci typu 
$ odpowiadajcej wartoci zmiennej otoczenia systemu operacyjnego. Ja osobicie uywaem jej w kilku sytuacjach:

66

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


 Dla aplikacji pracujcej w Windows NT odczytywaem uytkownika. W ten

sposb pomijaem proces logowania uprawnionych uytkownikw. Oczywicie


aplikacja kontrolowaa, kto mia nadane uprawnienia.
 Do zwrcenia wartoci cieki katalogu TEMP.

Skadnia tej funkcji jest nastpujca: 7


87
$ 9  : .
7
$ jest to wyraenie znakowe zawierajce nazw zmiennej otoczenia.

Argument nieobowizkowy.
  jest to wyraenie numeryczne odpowiadajce liczbie porzdkowej
cigu otoczenia w tablicy cigw otoczenia. Argument   moe by

dowolnym wyraeniem numerycznym, ale przed uyciem jego warto jest


zaokrglana do najbliszej liczby cakowitej. Argument nieobowizkowy.
Moesz posuy si t funkcj na dwa sposoby:
1. Uy argumentu 7
$, na przykad tak:
  0%>"M&

Jeeli argument 7


$ zostanie znaleziony w tablicy cigw otoczenia,
zwracana jest warto Zmiennej rodowiskowej.
2. Uy argumentu  :
  0%)&

Jeeli argument   zostanie znaleziony w tablicy cigw otoczenia,


zwracana jest nazwa zmiennej i jej warto w nastpujcej postaci:
  
=

Kiedy nie zostanie znaleziony aden z argumentw, funkcja 7


 zwrci
cig o zerowej dugoci ("").
W listingu 2.23 funkcja 7
 zwraca nazwy i wartoci wszystkich zmiennych rodowiska.
Listing 2.23. Wyliczanie zmiennych rodowiskowych
$#! %&
 
3:$ 


,
)

  0%&
:$ :$ /0#/
@)
9+ 
.
' :$ 
 $#

Rozdzia 2. Wsplne cechy i obiekty programw Office

67

Funkcja Shell
Funkcja ta uruchamia okrelony program. W przypadku powodzenia zwraca warto typu ;
 ( ) reprezentujc identyfikator zadania odpowiadajcego uruchomionemu programowi. W przypadku niepowodzenia zwraca zero.
Skadnia tej funkcji: % % <(&
&1= .
%  jest to nazwa programu, ktry ma by uruchomiony. Uycie wraz

ze wszystkimi potrzebnymi argumentami lub opcjami podawanymi w wierszu


polece; moe zawiera nazw katalogu lub folderu oraz nazw dysku. Argument
obowizkowy typu ;
 (
$).
&
&1 podajc ten argument okrelasz styl okna, w ktrym ma by
wykonywany program. Pomijajc go, uruchomisz program w postaci
zminimalizowanej z fokusem. Argument nieobowizkowy typu ;

(>$). Argument ten moe przyj jedn z wartoci przedstawionych
w tabeli 2.3.
Tabela 2.3. Wartoci parametru windowstyle
Warto

Opis dziaania

0#M 

Okno jest ukrywane, a fokus jest przekazywany do tego ukrytego okna.

0#7 8 $

Okno otrzymuje fokus, a rozmiar i pooenie okna s przywracane


do stanu pocztkowego.

0#. 8 $

Okno jest wywietlane w postaci zminimalizowanej z fokusem.

0#.  8 $

Okno jest maksymalizowane i ma fokus.

0#7 78 $

Odtwarzany jest ostatni rozmiar i pooenie okna. Aktualnie aktywne


okno pozostaje aktywne.

0#. 78 $

Okno jest wywietlane jako ikona. Aktualnie aktywne okno pozostaje


aktywne.

Funkcja ( uruchamia programy w sposb asynchroniczny. Oznacza to, e program uruchomiony przez funkcj ( moe si nie zakoczy przed rozpoczciem
wykonywania instrukcji wystpujcych po funkcji (.

Przykad wykorzystania funkcji % przedstawia listing 2.24.


Listing 2.24. Przykad wykorzystania funkcji Shell
.=> 
.=> (%5I.=>   3)&
,-.=> FGH"(
1$ =
3  ( 
# $$ ( 


.
' +$ ( $ 
230# 3+!<
 ,-

68

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

Spotkaem si z wykorzystaniem funkcji % do pakowania plikw, ktre byy nastpnie wysyane do zainteresowanych osb. Musz przyzna, e jest to bardzo ciekawe
wykorzystanie tej funkcji.

Instrukcja AppActivate
Instrukcja  
7 uaktywnia okno aplikacji.
Skadnia:  
7 
<( &
=.

 wyraenie znakowe okrelajce tekst umieszczony na pasku tytuu

uaktywnianego okna aplikacji. W celu uaktywnienia aplikacji zamiast


argumentu 
 mona rwnie uy identyfikatora zadania zwracanego
przez funkcj %. Argument obowizkowy.
&
 warto typu ', ktra okrela, czy aplikacja woajca inn
aplikacj ma fokus. Warto * (domylnie) powoduje, e wywoywana

aplikacja jest uaktywniana niezalenie od tego, czy aplikacja miaa fokus.


Warto ) powoduje, e aplikacja woajca czeka, a zostanie do niej
przekazany fokus, a nastpnie uaktywnia podan aplikacj. Argument
nieobowizkowy.
Instrukcja  
7 przenosi fokus na podan aplikacj lub okno, ale nie wpywa na
to, czy aplikacja jest minimalizowana czy maksymalizowana. Fokus jest przenoszony
z okna uaktywnionej aplikacji, gdy uytkownik wykonuje czynno zwizan ze zmian
fokusu lub zamyka okno dialogowe. Aby uruchomi aplikacj lub ustawi styl okna,
naley uy funkcji %.
Podczas okrelania, ktra aplikacja ma zosta uaktywniona, argument  jest
porwnywany z tytuami wszystkich aktualnie dziaajcych aplikacji. Jeli aden
z tytuw okien nie jest zgodny z porwnywanym wzorcem, uruchamiana jest ta
aplikacja, dla ktrej pocztkowa cz tytuu odpowiada wartoci argumentu .
Jeli zostao uruchomionych kilka kopii tej samej aplikacji o podanym tytule, zostanie wybrana jedna w nich.

Gdy podany program jest ju uruchomiony, uaktywniasz jego okno wywoujc go


w podany sposb:
 0 . 
-! 

Poniewa instrukcja  


7 moe uywa wartoci zwrconej przez funkcj %,
moesz uaktywni okno aplikacji poprzednio uruchomionej funkcj %. Przykady
wykorzystania funkcji % i  
7 przedstawia listing 2.25.
Listing 2.25. Przykady wykorzystania funkcji Shell i AppActivate
! ,(%5I> 8
I. 
-;-- I;-- I!,7!;*  3)&
 0 ! ,
,(%5I> 8
I. 
-;-- I;-- I  9  3)&
 0  ,

Rozdzia 2. Wsplne cechy i obiekty programw Office

69

Funkcja DoEvents
Funkcja ta przekazuje sterowanie do systemu operacyjnego, umoliwiajc przetwarzanie
zdarze. Sterowanie to zwracane jest po obsueniu przez system operacyjny wszystkich
zdarze z systemowej kolejki oraz po wysaniu z kolejki SendKeys wszystkich kluczy.
We wszystkich aplikacjach Office funkcja 7 zwraca warto zero. Z kolei w autonomicznych wersjach systemu Visual Basic, jak np. Visual Basic, Standard Edition,
funkcja 7 zwraca warto typu >$ reprezentujc liczb otwartych formularzy.
Funkcja 7 jest bardzo przydatna, gdy wykonywany program zajmuje duo czasu
procesora. Korzystajc z tej funkcji (tylko w razie takiej potrzeby), pozwalasz systemowi operacyjnemu na obsug bez zbytniego opnienia zdarze takich, jak nacinicia
klawiszy czy kliknicia mysz.
Przekazujc sterowanie za pomoc funkcji  0
, upewnij si, czy procedura
oddajca sterowanie NIE ZOSTANIE ponownie wywoana z innej czci programu
przed powrotem sterowania po pierwszym wywoaniu funkcji  0
. Grozi to trudnymi do przewidzenia skutkami, uszkodzeniami plikw, a nawet systemu. Pamitaj te, e funkcji  0
nie naley stosowa, jeli inne aplikacje mog w tym
czasie odwoywa si do procedury, ktra oddaa sterowanie.

Jak uywa tej funkcji, poka przy opisywaniu kolejnej.

Funkcja Timer
Zwraca warto typu 
$ okrelajc liczb sekund, ktre miny od pnocy.
W tym przykadzie (listing 2.26) funkcja )
 przerywa wykonywanie aplikacji na okrelony czas i pozwala, by w trakcie tej przerwy mogy dziaa inne procesy.
Listing 2.26. Przykad przerwania wykonywania aplikacji
$
>3 3: 3
 
,-%.
' %7 
=" 3 #   J
$ 3D&&0#Q
"(
$
>J1+
  $

 "1># 
  $
!("F @$
>
 0
1>    

9
: "
1># 
   

 : 6 1;#  
 
.
' >   /
 /
$ 


 
 ,-

70

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

Aplikacja MS Excel posiada oddzieln funkcj. W aplikacji MS Excel do zatrzymania


wykonywania kodu na okrelony czas lub do okrelonej godziny suy funkcja ! .
Listing 2.27 ilustruje procedur  =, ktra w parametrach wywoania pobiera
czas w sekundach.
Listing 2.27. Procedura Czekaj
$#  =%&
.
' > 
 $;:3  = 
 
   J
$ 
 =J
.
' .J
$ 
 $#
$# =%$ 
,&
 < 
,
 .
,
 
,
 
; 

< M$%7&
..$%7&
  %7&

; " % < 3 .3 @$ &
 !  
; 
 $#

Instrukcja SendKeys
Wysya do aktywnego okna dane generowane przez nacinicie klawiszy, tak jakby
zostay one wprowadzone z klawiatury.
Skadnia: ?1 
$<( &
=.

$ wyraenie znakowe okrelajce nacinicia klawiszy. Argument

obowizkowy. Aby uy klawiszy specjalnych, musisz wpisa ich kod (tabela 4.2).
&
 warto typu ' okrelajca typ czekania. Warto * (domylnie)

oznacza, e sterowanie powrci do procedury zaraz po wysaniu sekwencji


nacini klawiszy. Warto ) oznacza, e sterowanie powrci do procedury
po przetworzeniu wysanych nacini klawiszy. Argument nieobowizkowy.
Kady klawisz jest reprezentowany przez jeden lub wicej znakw. Aby przesa jeden znak umieszczony na klawiaturze, jako warto naley poda ten znak. Na przykad, aby przesa liter A, argumentowi 
$ naley nada warto . Aby przesa
wicej ni jeden znak, naley docza kolejne znaki do cigu. I tak, aby przesa litery A, B i C, argumentowi 
$ naley nada warto '.
Znaki plus (+), daszek (^), procent (%), tylda (~) i nawiasy okrge ( ) maj w instrukcji
?1 specjalne znaczenie. Aby przesa dowolny z tych znakw, naley umieci
je w nawiasach klamrowych {}. Na przykad, aby przesa znak plus, naley napisa8@:.

Rozdzia 2. Wsplne cechy i obiekty programw Office

71

Nawiasy kwadratowe [ ] nie maj specjalnego znaczenia w instrukcji ?1, jednake musz by one umieszczane w nawiasach okrgych. Mog one mie znaczenie
w innych aplikacjach, np. przy dynamicznej wymianie danych (DDE). Aby przesa nawiasy klamrowe, naley wpisa 88: i 8::.
Znaki, ktre nie s wywietlane po naciniciu klawisza, takie jak Enter czy Tab, oraz
klawisze oznaczajce akcje, a nie znaki, s reprezentowane przez nastpujce kody
(tabela 2.4):
Aby przesa kombinacj klawisza z klawiszami Shift, Ctrl, lub Alt, naley poprzedzi
kod klawisza odpowiednimi kodami z tabeli 2.5
Aby okreli, e klawisze Shift, Ctrl lub Alt maj by wcinite w momencie naciskania kilku innych klawiszy, naley kody tych klawiszy uj w nawias. Na przykad,
aby okreli, e ma by wcinity klawisz Shift, podczas naciskania klawiszy E i C,
naley napisa @ . Aby okreli, e klawisz Shift ma by wcinity tylko podczas
naciskania klawisza E, naley napisa @.
Aby okreli kolejne nacinicia tego samego klawisza, naley napisa8!&
4

4:. Parametry !&
4 i 
4 musz by rozdzielone spacj. Na przykad, 83*)
AB: oznacza, e kod klawisza STRZAKA W LEWO ma zosta wysany 42 razy; 8% CD:
oznacza, e kod klawisza H zostanie wysany 10 razy.
Za pomoc funkcji  :
nie mona wysya nacini klawiszy do aplikacji,
ktra nie zostaa zaprojektowana dla systemu Microsoft Windows.  :
nie
umoliwia rwnie wysania klawisza PRINT SCREEN R>*"S do adnej aplikacji.

Listing 2.28 ilustruje wykorzystanie funkcji % do uruchomienia aplikacji Kalkulator


systemu Microsoft Windows. Za pomoc funkcji ?1 wysyane s nacinicia klawiszy w celu pomnoenia liczb i zakoczenia pracy Kalkulatora.
Listing 2.28. Uycie funkcji Shell i SendKeys w praktyce
$#.%&
 ! 3,
 ! (%9  3)&
 0  ! 
8,)"J
 :
,/RTS3"$
7 ,
 :
3"$
 :
UR8DS3"$
  $#

Automakra
Po serii ciekawych instrukcji i funkcji przyszed czas na automakra. S one nierozerwalnie zwizane ze rodowiskiem aplikacji, to znaczy, e s wykonywane zaraz po
uruchomieniu aplikacji czy dokumentu.

72

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

Tabela 2.4. Kody klawiszy funkcyjnych


Klawisz

Kod

BACKSPACE

R':> S, R'S lub R':>S

BREAK

R'* :S

CAPS LOCK

R>9;:S

DEL lub DELETE

R 9 " S lub R 9S

STRZAKA W D

R;!7S

END

R 7S

ENTER

R 7" *S lub V

ESC

R S

HELP

RM 9>S

HOME

RM;. S

INS lub INSERT

R,7 *"S lub R,7S

STRZAKA W LEWO

R9 8"S

NUM LOCK

R7+.9;:S

PAGE DOWN

R><7S

PAGE UP

R><+>S

PRINT SCREEN

R>*"S

STRZAKA W PRAWO

R*,<M"S

SCROLL LOCK

R*;999;:S

TAB

R"'S

STRZAKA W GR

R+>S

F1

R8)S

F2

R8AS

F3

R8BS

F4

R8DS

F5

R8JS

F6

R8PS

F7

R8OS

F8

R8S

F9

R8ES

F10

R8)HS

F11

R8))S

F12

R8)AS

F13

R8)BS

F14

R8)DS

F15

R8)JS

F16

R8)PS

Rozdzia 2. Wsplne cechy i obiekty programw Office

73

Tabela 2.5. Kody klawiszy specjalnych


Klawisz

Kod

SHIFT

CTRL

ALT

Automakra to takie makra, ktre nosz specjaln nazw, przez co program automatycznie je uruchamia, gdy zajdzie okrelona sytuacja, na przykad, kiedy uruchomisz
lub zamkniesz dany program lub dokument.
Tabela 2.6 przedstawia nazwy makr rozpoznawane przez poszczeglne aplikacje Office.
Tabela 2.6. Nazwy automakr
Program

Nazwa

Kiedy zostaje uruchomione?

Word

$ 

Podczas otwierania (adowania) szablonu globalnego Word.

$7

Za kadym razem, kiedy tworzysz nowy dokument.

$;

Za kadym razem, kiedy otwierasz istniejcy dokument (szablon).

$


Za kadym razem, kiedy zamykasz dokument (szablon).

$ 

Podczas zamykania szablonu globalnego lub zamykania aplikacji


Word.

$;

Za kadym razem, kiedy otwierasz istniejcy skoroszyt (szablon).

$ 0 

Za kadym razem, kiedy uaktywniasz obiekt.

$ 0 

Za kadym razem, kiedy deaktywujesz obiekt.

$


Za kadym razem, kiedy zamykasz skoroszyt (szablon).

$ 

Za kadym razem, kiedy otwierasz baz danych.

Excel

Access

Oczywicie automakra nie s jedynymi procedurami uruchamianymi podczas otwierania okrelonego rodzaju dokumentu. Wikszo dokumentw pakietu Office posiada wasne procedury uruchamiane wraz z otwarciem czy zamkniciem dokumentu.
Podstawowe procedury przedstawione s w tabeli 2.7. Jeeli chcesz pozna inne, zajrzyj do przegldarki obiektw.
Tabela 2.7. Inne makra uruchamiane automatycznie
Aplikacja

Nazwa procedury

Kiedy zostaje uruchomione?

Word

 $7

Za kadym razem, kiedy tworzysz nowy dokument.

 $;

Za kadym razem, kiedy otwierasz istniejcy dokument


(szablon).

 $


Za kadym razem, kiedy zamykasz istniejcy dokument


(szablon).

!#;

Za kadym razem, kiedy otwierasz skoroszyt (szablon).

!#'-


Za kadym razem, kiedy zamykasz skoroszyt (szablon).

Excel

74

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

W literaturze spotkaem si z okreleniem, i automakra pozostay dla zachowania zgodnoci z poprzednimi wersjami VBA dla Office. Ale czy tak jest naprawd? Nie wiem.
Wielokrotnie spotkaem si nawet w najnowszych szablonach, kreatorach z autoprocedurami, zamiast z nowymi procedurami uruchomieniowymi dla poszczeglnych dokumentw.

Jak utworzy automakro w Wordzie?


 Jeeli automakro ma by umieszczone w szablonie globalnym

Wstaw modu do   i nadaj mu dowoln nazw. W module tym umie


na przykad tak procedur:
$#$  %&
1$
$ =3 = #  
 $#

 Jeeli 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 przykad tak procedur:
$#$;%&
1$
$ =3 = #  
 $#

Automakra mog by przechowywane w szablonie globalnym, innym szablonie lub


dokumencie. W przypadku wystpienia konfliktu nazw (wiele makr bdzie miao t
sam nazw), Word uruchomi makro w najbliszym kontekcie. Na przykad, jeeli
utworzysz makro $
 w szablonie i dokumencie, Word uruchomi tylko makro
z dokumentu. Jeli utworzysz makro $7 w szablonie globalnym, makro to zostanie uruchomione pod warunkiem, e nie bdzie zawiera takiego aden z otwartych
dokumentw lub szablonw.

Jak utworzy automakro w Excelu?


Podobnie jak w Wordzie, do aktywnego skoroszytu musisz wstawi modu i nada mu
dowoln nazw. Nastpnie umie w nim procedur, jak pokazuje przykad poniej:
$#$;%&
1$
$ =3 = #  
 $#

Aby uruchomi makra $ 0  lub $ 0 , musisz posuy si metod *$$. 
.

Metoda #/ dla MS Excela ma nastpujc skadni:


 *$$ 
%&

&1E
 okrela skoroszyt. Argument obowizkowy.
!, argument obowizkowy, okrelajcy makro do uruchomienia. Moe

przyj jedn z nastpujcych postaci (tabela 2.8):

Rozdzia 2. Wsplne cechy i obiekty programw Office

75

Tabela 2.8. Wartoci argumentu ktre dla metody RunAutoMacros


Warto

Uruchamia

$;

procedur $;.

$


procedur $
.

$ 0 

procedur $ 0 .

$ 0 

procedur $ 0 .

Jak utworzy automakro w programie Access?


Tu zagadnienie nieco si komplikuje, a to ze wzgldu na kilka czynnikw. Postaram si
jednak Ci to wszystko wytumaczy.
Moesz utworzy makro, ktre bdzie automatycznie si uruchamiao podczas otwierania bazy danych na dwa sposoby:
1. Doda nowe makro (oczywicie odpowiednio je nazwa) i tam okreli wszystkie

polecenia do wykonania.
Zawarto makra :
Pole Akcja

Pole Nazwa formularza

;-$ 

;
 -$  3 # $$ (   
  

2. Wstawi modu i umieci w nim funkcj, ktr kadorazowo bdzie

wykonywaa baza danych podczas otwierania. Nastpnie doda nowe makro,


a w nim okreli, jaki kod ma wykona. W polu Akcja umie F% !,
a w polu Nazwa funkcji nazw funkcji, ktra ma zosta wykonana.
Zawarto makra :
Pole Akcja

Pole Nazwa funkcji

+$ ( 

;  %&

Zawarto moduu:
8$ ;  %&
K$
$ =3 = #  
 8$ 

Oczywicie, sposb drugi jest bardziej wydajny, bo masz praktycznie nieograniczone


moliwoci (no, chyba e ograniczone do moliwoci jzyka VBA i Twoich). Za
sposb pierwszy pozwala Ci wykona tylko akcje dostpne w polu Akcja.
Zapewne zwrcie uwag, e w aplikacjach Word i Excel uywalimy sowa kluczowego $#, a w Access 8$ . I to jest wanie ta podstawowa rnica w konstrukcji moduu.

76

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

Aby wyczy dziaanie automakr, wystarczy podczas otwierania okrelonego dokumentu Office przytrzyma klawisz Shift. Nie da si jednak zatrzyma automakr zapisanych w dodatkach.

Directory. Przejcie przez dotychczasowe rozdziay powinno da biego we wszystkich gwnych elementach Active Directory i doprowadzi do rozpoczcia pierwszego
rzeczywistego

Ostrzeenie
Wiesz ju jak umieszcza automakra w dokumentach Office. Chc Ci jednak ostrzec,
e automakra s czsto wykorzystywane w wirusach. W dokumentach Word najczciej
dochodzi do zaraenia szablonu globalnego, po czym w tym szablonie umieszczana
jest procedura  z instrukcjami destrukcyjnymi. Jeeli otwierasz jakikolwiek
dokument Word, ktry nie powinien mie adnych makr czy kodu, a pojawia si ostrzeenie o makrowirusach, oznacza to, e najprawdopodobniej masz zaraony szablon globalny. Oczywicie nic tak nie pomoe jak dobry program antywirusowy, ale moesz
sprbowa si broni sam. Utwrz skrt do programu Word, po czym wejd do waciwoci tego skrtu. W polu Obiekt docelowy dodaj na kocu cieki do programu po
spacji parametr G . Spowoduje to wywoywanie aplikacji Word bez opcji uruchamiania
automakra. Oczywicie makro , ktre sam napisae, rwnie nie zostanie uruchomione. Jeli jednak Twoja aplikacja wymaga, by jakie makro byo uruchamiane wraz
z programem Word, musisz utworzy makro i nada mu na przykad nazw 1.
, po czym otwiera aplikacj przez skrt utworzony w nastpujcy sposb:
1. Utwrz skrt do programu Word, po czym wejd do waciwoci tego skrtu.
2. W polu Obiekt docelowy dodaj na kocu cieki do programu po spacji
parametr G oraz nazw Twego makra (bez spacji): G 1.

Excel posiada take pewne waciwoci startowe. Jeli chcesz, by jaki skoroszyt by
uruchamiany za kadym razem, kiedy jest uruchamiany Excel, wystarczy, e zapiszesz
go w katalogu: \Program Files\Microsoft Office\Office\XlStart. Moesz w ten sposb
monitowa kto, kiedy i jaki otwiera skoroszyt.
Tak metod wykorzystywa synny wirus o nazwie Laroux. Umieszcza on we wspomnianym katalogu skoroszyt o nazwie Personal, ktry automatycznie uruchamia si
wraz programem Excel. Po otwarciu skoroszytu uaktywnia si wirus, ktry sprawdza,
czy pozostae skoroszyty (otwarte przez uytkownika lub nowo utworzone) zawieraj arkusz o nazwie takiej, jak wirus. Jeli nie, tworzy taki arkusz, ukrywa i wstawia modu
z kodem wirusa. Otwarcie tak zaraonego pliku na dowolnym, innym komputerze powodowao utworzenie pliku Personal.xls (jeli nie istnia) itd., itd. Istnieje kilkanacie odmian
tego wirusa. Najagodniejsza utrudnia ycie tylko wtedy, jeli wykonujesz jakie czynnoci automatycznie (z kodu), szczeglnie kiedy w odwoaniach do arkuszy nie posugiwae si nazw, a indeksem. W najgroniejszej swej odmianie wirus formatuje dyski.
Przykady skrtw z opcjami uruchamiania lub wyczania automakr dla poszczeglnych aplikacji znajduj si na dysku CD-ROM w katalogu Przykady\Cz_II, pliki *.lnk.

You might also like