Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
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
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Podzikowania...................................................................................5
Zanim rozpoczniesz.........................................................................7
Do kogo jest adresowana ta ksika? ......................................................................... 7
O czym jest ta ksika? ............................................................................................ 8
Zakoczenie..................................................................................131
Skorowidz......................................................................................133
Rozdzia 2.
Dobrodziejstwo ActiveX
Domylam si, e nieraz spotkae si z terminem ActiveX. By moe nawet dokadnie
wiesz, co on oznacza, ale tytuem przypomnienia:
44
(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
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.
45
46
!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?
47
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
Krotno instancji
MS Access
jedno
MS Excel
jedno
MS Word
jedno
MS FrontPage
jedno
MS Outlook
wielo
MS PowerPoint
wielo
Jak zauwaye, do tworzenia nowej instancji klasy suy funkcja . S dwa
najwaniejsze zastosowania tej funkcji:
Sprawdzenie, czy na danym komputerze jest zainstalowana aplikacja, ktrej
%&
#'
'
#'":
=%
&
,-7#'"(
.
'.
=
$3
0#,- 3>
$#
,,-#'"(
.
'.
=
$30#,- 3
C
222
!(;#=
1$
35
!(
, $#
49
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
;*
$7
;#=
%
3.=&
,-FGH"(
.
''
$#
-$
=$=230#
3>#
$#
,!(
1$
$
= =
#
3 $$=
!(
$#
50
%&
#'
'
#'; %
&
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$
;;
=%
>$
&
'
;;
="$
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.
52
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.
53
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
54
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 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.
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
(
#, '
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
#
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 &
$#
57
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
*.
%"5
'$&
$#:$ %&
.
'"=
$
$
30#
3:$
$#
Uywaj nazwy, a nie nazwy lokalnej, by mie pewno, e zwracasz prawidowe menu.
58
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
(
,
'
%!
(.$' &
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 ,
.
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)
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
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.
!
;
!
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.
61
7'
!(
M ; =
"
' /0#9-/
7' /0#9-/
!( /0#9-/
M ; =
/0#9-/
"C
=
/0#9-/
'$
'$;:/0#9-/
(/0#9-/
!(
'$
'$;:
(
!(
$#
7'
!( )
M >
"
(
#
= N
'$
'$;
!(
A
7'
!( A
M > $
"
(
#
= N
'$
'$;
!(
B
7'
!( B
M >
""=$
'$
'$;:
!(
62
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 ;
= 33
= >
$#
$#C ;
= %#
' 3#
93
9&
9
'
'
,-#6)"(
'# (
'
% &(
,-'"$"(
=; $3' 3
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
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.
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
65
%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
Argument nieobowizkowy.
jest to wyraenie numeryczne odpowiadajce liczbie porzdkowej
cigu otoczenia w tablicy cigw otoczenia. Argument moe by
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
Opis dziaania
0#M
0#7 8 $
0#. 8 $
0#. 8 $
0#7 78 $
0#. 78 $
Funkcja ( uruchamia programy w sposb asynchroniczny. Oznacza to, e program uruchomiony przez funkcj ( moe si nie zakoczy przed rozpoczciem
wykonywania instrukcji wystpujcych po funkcji (.
68
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
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.
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
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)
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.
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
Kod
BACKSPACE
BREAK
R'*:S
CAPS LOCK
R>9;:S
R9"S lub R9S
STRZAKA W D
R;!7S
END
R7S
ENTER
R7"*S lub V
ESC
RS
HELP
RM9>S
HOME
RM;.S
STRZAKA W LEWO
R98"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
73
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
Word
$
$7
$;
$
$
$;
$ 0
$ 0
$
$
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
Word
$7
$;
$
!#;
!#'-
Excel
74
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.
Aby uruchomi makra $
0 lub $
0 , musisz posuy si metod *$$.
.
&1E
okrela skoroszyt. Argument obowizkowy.
!, argument obowizkowy, okrelajcy makro do uruchomienia. Moe
75
Uruchamia
$;
procedur $;.
$
procedur $
.
$ 0
$ 0
polecenia do wykonania.
Zawarto makra :
Pole Akcja
;-$
;
-$ 3 #
$$
(
+$ (
; %&
Zawarto moduu:
8$
;
%&
K$
$
=3 = #
8$
76
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): G1.
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.