Excel. Programowanie dla
profesjonalistów. Wydanie II
Autorzy:
, Dennis Wallentin,
T³umaczenie: Robert Górczyñski
ISBN: 978-83-246-2544-4
Tytu³ orygina³u:
Professional Excel Development:
The Definitive Guide to Developing Applications Using
Microsoft Excel, VBA, and .NET (2nd Edition)
Format: 172
×245, stron: 1096
Kompendium wiedzy dla programistów Excela!
• Jak wykorzystaæ nowy interfejs Excela 2007?
• Jak sterowaæ innymi aplikacjami z pakietu Microsoft Office?
• Jak u¿ywaæ Windows API?
Dziêki ksi¹¿ce „Excel. Programowanie dla profesjonalistów. Wydanie II” poznasz tajniki
tworzenia aplikacji opartych o Microsoft Excel. Naukê rozpoczniesz od poznania architektury
takich aplikacji. Poznasz te¿ zestaw najlepszych praktyk w programowaniu w VBA.
W kolejnych rozdzia³ach przyswoisz wiedzê na temat projektowania arkuszy, weryfikacji
danych, sterowania paskami poleceñ oraz wspó³pracy z interfejsem typu wst¹¿ka (ang.
Ribbon). Ponadto zdobêdziesz informacje na temat wykorzystania Windows API, obs³ugi
b³êdów, programowania baz danych oraz optymalizacji aplikacji. Wœród wielu innych
zagadnieñ omawianych w tej ksi¹¿ce warto tak¿e zwróciæ uwagê na takie, jak wspó³praca
z us³ugami sieciowymi, sterowanie innymi aplikacjami z pakietu Microsoft Office oraz
techniki przetwarzania danych. Ksi¹¿ka stanowi kompendium wiedzy na temat programowania
w œrodowisku Microsoft Excel, a o jej jakoœci merytorycznej œwiadczy fakt, i¿ trójka jej
autorów zosta³a wyró¿niona przez firmê Microsoft tytu³em MVP (Most Valuable Professional).
• Architektura aplikacji opartych o Microsoft Excel
• Najlepsze praktyki tworzenia aplikacji w Excelu i VBA
• Zasady projektowania arkuszy
• U¿ywanie stylów, nazw zdefiniowanych, formatowañ warunkowych
• Wykorzystanie kontrolek i zastosowanie dodatków funkcyjnych
• U¿ycie modu³ów klas do tworzenia obiektów
• Zarz¹dzanie paskiem poleceñ
• Praca z plikami XML
• Wykorzystanie mo¿liwoœci nowego interfejsu Excela 2007
• U¿ycie Windows API
• Tworzenie formularzy
• Zastosowanie interfejsów oraz ponowne wykorzystanie kodu
• Sytuacje wyj¹tkowe – obs³uga b³êdów
• Debugowanie i optymalizacja kodu VBA
• Zastosowanie asercji
• Wspó³praca z bazami danych i techniki przetwarzania danych
• Tworzenie zaawansowanych wykresów
• Sterowanie innymi aplikacjami z pakietu Microsoft Office
• Wykorzystanie jêzyka VB.NET
• Mo¿liwoœci narzêdzia Visual Studio Tools for Office System
Wykorzystaj Excel jako fundament efektywnych rozwi¹zañ!
S
PIS TRECI
Podzikowania 14
O autorach
13
Rozdzia 1.
Wstp
O ksice
15
Dla kogo przeznaczona jest ta ksika?
15
Twórca programowania excelowego
16
Excel jako platforma do tworzenia aplikacji
18
Struktura 21
Przykady 22
Wersje obsugiwane
23
Rodzaje kroju pisma
24
Na pycie CD
24
Pomoc i wsparcie
25
Witryna internetowa
26
Komentarze czytelników
26
Rozdzia 2.
Architektura aplikacji
Koncepcje 27
Wnioski 38
Rozdzia 3.
Najlepsze praktyki programowania w Excelu i VBA
Konwencje nazw
41
Najlepsze praktyki organizacji i tworzenia struktury aplikacji
53
Najlepsze praktyki okrelajce ogólne zasady
tworzenia oprogramowania
58
Wnioski 78
Rozdzia 4.
Projektowanie arkusza
Zasady projektowania dobrego interfejsu uytkownika
79
Wiersze i kolumny programu: podstawowe techniki
tworzenia interfejsu uytkownika
80
Nazwy definiowane
81
Style 88
Techniki krelenia interfejsów uytkownika
94
Weryfikacja danych
99
6
S
PIS TRECI
Formatowanie warunkowe
103
Uywanie kontrolek w arkuszu
108
Przykad praktyczny
111
Wnioski 116
Rozdzia 5.
Dodatki funkcyjne, ogólne i specjalizowane
dla aplikacji
Cztery etapy rozwoju i dziaania aplikacji
117
Dodatki bdce bibliotekami funkcji
120
Dodatki ogólne
127
Dodatki specjalizowane dla aplikacji
127
Przykad praktyczny
134
Wnioski 146
Rozdzia 6.
Aplikacja dyktatorska
Struktura aplikacji dyktatorskiej
147
Przykad praktyczny
161
Wnioski 168
Rozdzia 7.
Uywanie moduów klas do tworzenia obiektów
Tworzenie obiektów
169
Tworzenie kolekcji
173
Wychwytywanie zdarze
179
Generowanie zdarze
182
Przykad praktyczny
189
Wnioski 195
Rozdzia 8.
Zaawansowane sterowanie paskami polece
Projektowanie paska polece
198
Tablicowe sterowanie paskami polece
199
Zbieranie wszystkiego razem
219
adowanie niestandardowych ikon z plików
227
Podczepianie obsugi zdarze do kontrolek paska polece
231
Przykad praktyczny
240
Wnioski 246
Rozdzia 9.
Wprowadzenie do formatu XML
XML 249
Wnioski 271
Rozdzia 10. Wstka w Office 2007
Podstawowe zaoenia RibbonX
273
Wprowadzenie do formatu pliku Open XML w Office 2007
274
Projektowanie Wstki oraz najlepsze praktyki programowania
278
S
PIS TRECI
7
Dostosowanie opcji Wstki bazujcej na tabeli
288
Zaawansowane rozwizywanie problemów
289
Dalsze pozycje do czytania
297
Portale internetowe
298
Wnioski
299
Rozdzia 11. Tworzenie aplikacji niezalenych od wersji Excela
Pasek polece i Wstka w pojedynczej aplikacji
301
Inne kwestie dotyczce programowania w Excelu 2007
315
Bezpieczestwo w Windows Vista a struktura katalogów
322
Wnioski 326
Rozdzia 12. Zrozumienie i uywanie wywoa Windows API
Ogólny opis
327
Praca z ekranem
333
Praca z oknami
336
Praca z klawiatur
344
Praca z systemem plików i sieci
349
Przykad praktyczny
361
Wnioski 365
Rozdzia 13. Projektowanie formularzy UserForm
i najlepsze praktyki
Zasady 367
Podstawy kontrolek
375
Efekty wizualne
382
Pozycjonowanie i rozmiary formularzy UserForm
390
Kreatory 396
Dynamiczne formularze UserForm
400
Niemodalne formularze UserForm
407
Wyszczególnienie kontrolek
412
Przykad praktyczny
418
Wnioski 419
Rozdzia 14. Interfejsy
Co to jest interfejs?
421
Ponowne uycie kodu
422
Definiowanie wasnych interfejsów
425
Implementacja wasnego interfejsu
426
Uywanie wasnych interfejsów
427
Klasy polimorficzne
429
Polepszanie solidnoci
433
Upraszczanie rozwoju
434
8
S
PIS TRECI
Architektura moduów rozszerzajcych
443
Przykad praktyczny
445
Wnioski 446
Rozdzia 15. Obsuga bdów VBA
Pojcia obsugi bdów
447
Zasada pojedynczego punktu wyjcia
456
Prosta obsuga bdów
457
Zoone projekty obsugi bdów
458
Centralna obsuga bdów
462
Obsuga bdów w klasach i formularzach UserForm
469
Zbieranie wszystkiego razem
470
Przykad praktyczny
476
Wnioski 484
Rozdzia 16. Debugowanie kodów VBA
Podstawowe techniki debugowania kodów VBA
485
Okno Immediate (Ctrl+G)
495
Call Stack — stos wywoa (Ctrl+L)
498
Okno Watch
500
Okno Locals
510
Object Browser — przegldarka obiektowa (F2)
511
Tworzenie dziaajcego otoczenia testowego
514
Stosowanie asercji
517
Debugerskie skróty klawiaturowe,
które powinien zna kady programista
518
Wnioski 520
Rozdzia 17. Optymalizacja wydajnoci VBA
Mierzenie wydajnoci
523
Program narzdziowy PerfMon
524
Mylenie kreatywne
528
Makrooptymalizacja 534
Mikrooptymalizacja 543
Wnioski 550
Rozdzia 18. Programowanie i bazy danych
Wprowadzenie do baz danych
551
Wprowadzenie do SQL
568
Dostp do danych za pomoc ADO
572
Dalsze pozycje do czytania
586
Wnioski 587
S
PIS TRECI
9
Rozdzia 19. Programowanie z uyciem bazy danych Access
i SQL Server
Uwaga dotyczca przykadowej bazy danych Northwind
589
Projektowanie warstwy dostpu do danych
590
Praca z bazami danych Microsoft Access
594
Praca z bazami danych Microsoft SQL Server
603
Rozbudowa bazy danych Access do SQL Server
613
Dalsze pozycje do czytania
618
Przykad praktyczny
619
Wnioski 629
Rozdzia 20. Techniki przetwarzania danych
Struktury danych Excela
631
Funkcje przetwarzania danych
637
Zaawansowane funkcje
648
Wnioski 656
Rozdzia 21. Zaawansowane techniki tworzenia wykresów
Podstawowe techniki
657
Techniki VBA
674
Wnioski 679
Rozdzia 22. Sterowanie innymi aplikacjami Office
Podstawy 681
Modele obiektowe gównych aplikacji Office
695
Dalsze pozycje do czytania
707
Przykad praktyczny
707
Wnioski 708
Rozdzia 23. Poczenie Excela i Visual Basica 6
Witaj wiecie ActiveX DLL
710
Dlaczego uywa VB6 ActiveX DLL w projektach Excel VBA?
725
In-process kontra out-of-process
739
Automatyzacja Excela z VB6 EXE
740
Dodatki COM
748
Dodatek COM Witaj wiecie
748
Projektant dodatków (Add-in Designer)
752
Instalacja 755
Zdarzenia AddinInstance
757
Obsuga paska polece
759
Dlaczego warto uywa dodatku COM?
762
Automatyzacja dodatków
764
Przykady praktyczne
767
Wnioski 779
10
S
PIS TRECI
Rozdzia 24. Excel i VB.NET
Podstawy platformy .NET
782
Visual Basic.NET
783
Usuwanie bdów
807
Uyteczne narzdzia programistyczne
816
Automatyzacja Excela
819
Zasoby w rozwizaniach .NET
826
Pobieranie danych za pomoc ADO.NET
827
Dalsze pozycje do czytania
832
Dodatkowe narzdzia programistyczne
833
Fora 834
Przykad praktyczny — narzdzie raportujce PETRAS
w technologii .NET
834
Wnioski 848
Rozdzia 25. Tworzenie zarzdzanych dodatków COM
za pomoc VB.NET
Wybór narzdzi programistycznych
852
Tworzenie dodatku zarzdzanego COM
853
Budowanie interfejsu uytkownika
870
Tworzenie zarzdzanych dodatków automatyzacji
888
Rczne rejestrowanie i wyrejestrowanie dodatków COM
899
Uywanie klas w VB.NET
900
Uywanie klasycznego ADO w celu eksportu danych do Excela
906
Opakowywanie dodatków COM
910
Blogi zwizane z tematem
919
Dodatkowe narzdzia programistyczne
920
Przykad praktyczny — narzdzie raportujce PETRAS
w technologii .NET
921
Wnioski 929
Rozdzia 26. Tworzenie rozwiza Excela za pomoc Visual Studio
Tools for Office System (VSTO)
Co to jest VSTO?
932
Kiedy powinnimy uywa VSTO?
939
Praca z dodatkami VSTO
941
Praca z szablonami VSTO i rozwizaniami w postaci skoroszytu
961
Implementacja i bezpieczestwo
970
Inne pozycje do czytania
979
Róne portale i blogi
979
Dodatkowe narzdzia programistyczne
980
Wnioski
980
S
PIS TRECI
11
Rozdzia 27. XLL i API C
Dlaczego warto tworzy funkcje arkusza na bazie XLL?
983
Tworzenie projektu XLL w Visual Studio
984
Struktura XLL
989
Typy danych XLOPER i OPER
997
Funkcja Excel4
1002
Powszechnie uywane funkcje API C
1004
XLOPER i zarzdzanie pamici
1005
Rejestrowanie i wyrejestrowywanie wasnych funkcji arkusza
1006
Przykadowa funkcja aplikacji
1009
Debugowanie funkcji arkusza
1011
Róne tematy
1012
Dodatkowe róda informacji
1013
Wnioski 1014
Rozdzia 28. Excel i usugi sieciowe
Usugi sieciowe
1015
Przykad praktyczny
1022
Wnioski 1031
Rozdzia 29. Zapewnianie pomocy, bezpieczestwa,
pakowanie i rozpowszechnianie
Zapewnianie pomocy
1033
Bezpieczestwo 1042
Pakowanie 1046
Rozpowszechnianie 1051
Wnioski 1052
Skorowidz 1055
R O Z D Z I A 1 0 .
W
STKA W
O
FFICE
2007
Od czasu wydania pakietu Office 2007 RibbonX i jego interfejs uytkownika
(Wstka) stay si tematem czstych dyskusji w spoecznoci programi-
stów Office. Jak mona si spodziewa po technologii w wersji 1.0, Rib-
bonX nakada pewne ograniczenia, które uniemoliwiaj wykorzystanie
w peni moliwoci drzemicych w tym interfejsie uytkownika. Jednak
nawet na tak wczesnym etapie powinnimy zrozumie podstawowe zaoenia
nowego interfejsu, aby budowa wasne, doskonale zaprojektowane interfejsy
uytkownika.
Innym wyzwaniem jest równoczesna codzienna praca z paskiem polece
oraz technologiami interfejsu uytkownika RibbonX. Zagadnienie to obej-
muje tworzenie rozwiza, które bd dziaay z obydwoma interfejsami
uytkownika, czyli tzw. aplikacji niezalenych od wersji Excela. W tym roz-
dziale zostan przedstawione najlepsze praktyki w zakresie projektowania
Wstki i programowania RibbonX, natomiast aplikacje dziaajce nieza-
lenie od wersji Excela omówimy w rozdziale 11. Tu zajmiemy si take
pewnymi nieco bardziej skomplikowanymi problemami aplikacji dyktator-
skich. Bazujcy na tabelach proces budowania interfejsu uytkownika paska
polece jest szeroko akceptowany i uznawany za standard. Oznacza to, e do
tego celu powinnimy równie uywa technologii RibbonX i ten temat
te bdzie poruszony w rozdziale.
W pakiecie Office 2007 wprowadzono nowy format zapisu plików o naz-
wie Office Open XML (OOXML lub po prostu Open XML). Oferuje on
struktur szkieletow dla RibbonX — format OOXML i RibbonX s ze sob
cile powizane. Nowy format zapisu plików pozwala take na tworzenie
dokumentów Office i manipulowanie nimi bez uywania któregokolwiek
z programów wchodzcych w skad pakietu Office. W rozdziale przedstawimy
take krótkie wprowadzenie do formatu plików Open XML.
Podstawowe zaoenia RibbonX
Przez ponad dekad paski polece byy jedyn technologi interfejsu uyt-
kownika, której obsug musielimy si zajmowa. Wraz z wprowadzeniem
RibbonX otrzymujemy now technologi oraz nowe zaoenia stanowice
podstaw interfejsu uytkownika, które cznie maj ogromny wpyw na
274
R
OZDZIA
10. W
STKA W
O
FFICE
2007
nasz sposób pracy. Na pierwszy rzut oka nauka i manipulowanie RibbonX
moe wydawa si wyzwaniem. Jednak z naszego dowiadczenia wynika, e
prawdziwym wyzwaniem jest równoczesna codzienna praca zarówno z pas-
kami polece, jak i RibbonX.
RibbonX, w porównaniu do pasków polece, ma wady i zalety. Chocia jest
w swojej pierwszej wersji, jego podstawy zostay ju ustalone i cechy charak-
terystyczne technologii RibbonX mona podsumowa w nastpujcy sposób.
Q
Opcje pozwalajce na dostosowanie do wasnych potrzeb okrelamy
w trakcie projektowania interfejsu. S zdefiniowane za pomoc XML
i przechowywane jako oddzielna cz formatu pliku XML. Jednak wik-
szo atrybutów kontrolek moe by zmodyfikowana w trakcie dziaania
aplikacji przy uyciu VBA (np. wczony/wyczony, etykieta, widocz-
no itd.).
Q
Po otworzeniu skoroszytu zawierajcego dostosowane do wasnych potrzeb
opcje Wstki Excel automatycznie odczytuje definicj XML Wstki,
a nastpnie przystpuje do tworzenia Wstki okrelonej przez wy-
mienione opcje. Do zainicjalizowania tego procesu nie jest wymagany a-
den kod VBA. W rzeczywistoci nawet nie ma sposobu, aby uniemoliwi
inicjalizacj tego procesu.
Q
Kiedy skoroszyt zostanie otwarty i jest aktywny, dostosowane do wa-
snych potrzeb opcje Wstki zostaj zastosowane i s widoczne. Po za-
mkniciu skoroszytu dostosowane do wasnych potrzeb opcje Wstki
s automatycznie usuwane.
Q
Po wczytaniu dodatku dowolnego rodzaju jego dostosowane do wasnych
potrzeb opcje Wstki zostaj zastosowane i widoczne s we wszystkich
otwartych skoroszytach.
Q
Na wasnej Wstce wszystkie wbudowane kontrolki Wstki mog by
wczone, nadpisane, wykonane lub zapytane o nagówek, grafik itd.
Wprowadzenie do formatu pliku Open XML w Office 2007
XML po raz pierwszy wprowadzony zosta w pakiecie Office 2002. Od tej
chwili Microsoft nieustannie rozbudowuje i ulepsza modu XML bdcy
czci pakietu Office. Wraz z wydaniem Office 2007 otrzymujemy nowy
format pliku cakowicie bazujcy na XML, czyli format Open XML. Format
ten zapewnia moliwo pracy z dokumentami Office oraz ich treci bez
koniecznoci uywania którejkolwiek z aplikacji wchodzcych w skad pakietu
Office. Dziki temu zwiksza si liczba rozwiza alternatywnych sucych
do generowania dokumentów Office po stronie serwera. Znacznemu uatwie-
niu ulega równie proces wymiany danych midzy rónymi systemami oraz
dokumentami Office.
W
PROWADZENIE DO FORMATU PLIKU
O
PEN
XML
W
O
FFICE
2007
275
Kady dokument Office bazujcy na Open XML jest przechowywany
w archiwum ZIP. Wspomniane archiwum stanowi rodzaj pojemnika zawie-
rajcego zarówno dane uytkownika w formacie XML, jak i inne pliki wraz
z informacjami o stylu, obrazami itd. Kiedy dokument jest zapisany w forma-
cie Open XML, jego zawarto zostaje skompresowana, co skutkuje mniejsz
wielkoci pliku, w porównaniu do pliku w formacie binarnym. Microsoft
twierdzi, e wielko pliku mona zredukowa nawet o 75%, cho wedug
naszych obserwacji typowa wielko redukcji mieci si w okolicach 60 – 65%.
Poniewa dokument Open XML skada si z kilku elementów umiesz-
czonych razem w archiwum ZIP, dokumenty Office w tym formacie s
znacznie odporniejsze na uszkodzenia ni zapisane w formacie binarnym.
W ten sposób zmniejsza si ryzyko utraty informacji ze wzgldu na zniszczone
bd
uszkodzone pliki.
Powszechnie spotykanym wymaganiem jest, aby tworzone rozwizania
wspódziaay z rónymi wersjami Excela. Rodzi to pytania o format pliku,
który powinien zosta zastosowany. Rozwizaniem zapewniajcym najwiksz
elastyczno podczas wymiany danych pozostaje format .xls (w Excelu 2007
nosi nazw Skoroszyt programu Excel 97 – 2003). Jednak moliwe jest uycie
formatu pliku Open XML w starszych wersjach pakietu Office, o ile kompu-
tery docelowe maj zainstalowany Pakiet zgodnoci formatu plików pakietu
Microsoft Office dla programów Word, Excel i PowerPoint 2007. Pakiet jest
dostpny bezpatnie na witrynie internetowej firmy Microsoft
1
. Warto zwró-
ci uwag, e Office 2000 moe konwertowa pliki Open XML na format
binarny tylko za porednictwem Eksploratora Windows.
Struktura formatu pliku Open XML
Format pliku Open XML moe zosta opisany jako struktura skadajca si
z bloków stanowicych elementy skadowe (czyli poszczególne czci) oraz
pocze (zwizków) wykorzystywanych do skomponowania, zapakowania,
rozpowszechniania i generowania zawartoci dokumentu. Jdrem formatu
pliku s schematy XML oraz archiwum ZIP. Podczas zapisu dokumentu Office
w formacie Open XML nastpuje utworzenie archiwum ZIP zawierajcego
nastpujce komponenty.
Q
Czci — wikszo elementów „czci” to pliki XML opisujce dane apli-
kacji i metadane. Moduowo pozostaje najwaniejsz cech charakte-
rystyczn formatu pliku, poniewa pozwala na zlokalizowanie okrelonej
czci i bezporedni prac z dan czci.
1
Pakiet mona pobra ze strony http://www.microsoft.com/downloads/details.aspx?FamilyID=
941b3470-3ae9-4aee-8f43-c6bb74cd1466&displaylang=pl — przyp. tum.
276
R
OZDZIA
10. W
STKA W
O
FFICE
2007
Q
Elementy rodzaju treci — opisuj, jakiego rodzaju pliki s przechowy-
wane w dokumencie. Przykadowo
image/png
oznacza plik graficzny
w formacie PNG. Informacja ta pozwala aplikacjom na okrelenie zawar-
toci dowolnej czci pakietu i prawidowe przetworzenie jej zawartoci.
Q
Zwizki — opisuj, jak zbiór elementów dokumentu razem tworzy posta
dokumentu. Podczas gdy „czci” tworz tre pliku, zwizki opisuj spo-
sób, w jaki czci ze sob wspópracuj.
Przeanalizujmy samodzielnie zawarto pliku Excela. Do tej operacji
potrzebny bdzie program obsugujcy archiwa ZIP, np. WinZip bd
7-Zip.
Pierwszym krokiem jest utworzenie pliku Excela, umieszczenie w nim
wykresu, a nastpnie zapisanie pliku pod nazw PED.xlsm. Do kolejnego
kroku konieczne bdzie uycie narzdzia Office 2007 Custom UI Editor,
które mona pobra bezpatnie z witryny Microsoft
2
. Otwórz plik w narzdziu
Custom UI Editor i do skoroszytu dodaj wasne opcje RibbonX przedsta-
wione w listingu 10.1.
L
ISTING
10.1.
Proste dostosowanie opcji w RibbonX
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="customTab" label="Wasna karta">
<group id="customGroup" label="Wasna grupa">
<button id="customButton" label="Wasny przycisk"
imageMso="HappyFace" size="large"
onAction="Callback" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Na kocu otwórz plik PED.xlsm w programie obsugujcym archiwa
ZIP. Zawarto pliku powinna by podobna do pokazanej na rysunku 10.1.
Niektóre programy obsugujce archiwa ZIP mog wymaga tymczasowej
zmiany rozszerzenia pliku skoroszytu na .zip, aby otworzenie archiwum byo
moliwe.
2
Narzdzie jest dostpne na stronie http://openxmldeveloper.org/articles/CustomUIeditor.aspx
— przyp. tum.
W
PROWADZENIE DO FORMATU PLIKU
O
PEN
XML
W
O
FFICE
2007
277
R
YSUNEK
10.1.
Zawarto archiwum ZIP, pliki w formacie Open XML
Jak pokazano na rysunku 10.1, archiwum pliku Excela moe skada si
z duej liczby katalogów i plików XML. Umoliwia to prac z poszczegól-
nymi czciami pliku, ale omówienie wszystkich elementów archiwum wykra-
cza poza zakres tematyczny tego rozdziau. Plik Excela (PED.xlsm) oraz archi-
wum ZIP (PED.zip) umieszczono w katalogu \Koncepcje\Rozdzial10 na pycie
CD doczonej do ksiki.
WSKAZÓWKA
Jeeli masz dostp do oprogramowania Visual Studio 2008
Professional lub nowszej wersji oraz zainstalowany bezpatny pakiet Microsoft Visual
Tools for the Office System Power Tools, moesz przeglda i edytowa opcje Wstki
wewntrz plików Excela, uywajc do tego celu narzdzia Open XML Editor.
Po dodaniu do skoroszytu lub dodatku opcji dostosowujcych Wstk do wa-
snych potrzeb wewntrz struktury pliku Open XML zostaje utworzony kata-
log o nazwie customUI. W nim znajduje si plik XML o nazwie customUI.xml
przechowujcy wszystkie informacje potrzebne do dostosowania Wstki do
wasnych potrzeb. Podczas uaktualniania opcji Wstki plik customUI.xml jest
278
R
OZDZIA
10. W
STKA W
O
FFICE
2007
odpowiednio aktualizowany. Wszystkie opcje dostosowania Wstki mody-
fikowane za pomoc narzdzia Custom UI Editor maj wpyw na odpowiedni
fragment customUI w pliku Excela. W dalszej czci rozdziau omówimy
dostosowywanie przy uyciu VBA opcji Wstki bazujcych na tabelach.
Projektowanie Wstki
oraz najlepsze praktyki programowania
Projektowanie Ribbon
Wiele ogólnych zalece dotyczcych podej do programowania i przedsta-
wionych w rozdziale 8. moe by równie zastosowanych podczas projek-
towania Wstki. W czasie pisania tej ksiki Excel 2007 jest dostpny do-
piero od dwóch lat i nadal ma stosunkowo niewielki udzia w rynku.
Wskutek tego w spoecznoci programistów Excela dopiero powstaj najlep-
sze praktyki z zakresu pracy ze Wstk.
Przedstawione poniej zalecenia zostay sformuowane na podstawie
naszych dowiadcze zdobytych podczas tworzenia rzeczywistych aplikacji
i powinny by traktowane jedynie jako wstp do najlepszych praktyk pro-
jektowania i programowania Wstki. Zawsze wtedy, kiedy wykorzystywa-
ny jest graficzny interfejs uytkownika, najlepsze podejcie to zachowanie
prostoty i przejrzystoci.
Projektowanie w celu obsugi procesów roboczych
Najwikszym wyzwaniem podczas projektowania wasnej Wstki jest
utworzenie takiego interfejsu, który faktycznie bdzie wspomaga procesy
robocze. Oznacza to, e musimy zidentyfikowa wszystkie procesy robocze
danego rozwizania i zaimplementowa je w projekcie Wstki. Trzeba tak-
e okreli elementy dla kadego procesu roboczego, w którym maj by
one zaimplementowane w postaci hierarchicznej struktury.
W teorii osignicie wymienionych celów projektowych moe by pro-
ste, jednak w praktyce podczas projektowania Wstki zwykle bdziemy
zmuszeni do stosowania kompromisów. Warto spojrze na przykadowy pro-
jekt Wstki, który utworzylimy dla rozwizania sucego do monitorowa-
nia wydatków budetowych w rónych dziaach, projektach i dla odmiennych
klientów (rysunek 10.2).
R
YSUNEK
10.2.
Projekt Wstki
P
ROJEKTOWANIE
R
IBBON
279
W powyszym projekcie zidentyfikowalimy cztery gówne poziome procesy
robocze, które nastpnie zostay podzielone na cztery oddzielne grupy na
Wstce. Oto one.
1.
Data Selection, który okrela parametry identyfikujce dane dane.
2.
Data Acquisition pozwala na wskazanie róda danych, które bdzie uyte
do pobierania danych.
3.
Reports okrela dane raporty i pozwala na ich utworzenie.
4.
Distribution and Publishing wysya raport do ustalonej liczby odbior-
ców lub publikuje raport za pomoc usugi Microsoft Office SharePoint
Service (MOSS).
Na rysunku 10.2 pokazano równie, e wewntrz kadego procesu roboczego
zidentyfikowalimy elementy niezbdne do zaimplementowania w pionowej
hierarchicznej strukturze.
Uywanie karty Dodatki
Z naszego dowiadczenia wynika, e karta Dodatki jest lokalizacj zalecan
dla interfejsu uytkownika dodatków ogólnych. Stosowanie karty Dodatki dla
prostych interfejsów narzdzi pozwala na ograniczenie liczby wywietlanych
kart i ogólne oczyszczenie interfejsu uytkownika Excela.
Karta Dodatki powinna by uywana, gdy dodatek wymaga wywietle-
nia tylko kilku kontrolek. Poniewa dodatki tworzce jedynie pasek narz-
dziowy na podstawie interfejsu uytkownika s automatycznie umieszczane
pod kart Dodatki, zachowujemy kontrol nad tym, czy poszczególne dodatki
mog by umieszczone w wymienionym miejscu. Wiele narzdzi firm zew-
ntrznych, np. SnagIt, przeznaczonych do dziaania w rónych wersjach Excela,
celowo umieszcza pasek narzdziowy pod kart Dodatki.
Wspódzielenie wasnych kart i grup
przez wiele dodatków
W wikszoci przypadków tworzymy konkretne rozwizania, z których kade
dodaje na Wstce wasne karty, grupy i kontrolki. Jednak w pewnych sy-
tuacjach chcemy sprawi, by elementy te byy wspódzielone przez róne
dodatki. Przykadowo moemy mie dodatek gówny tworzcy podstawow
kart, grup i struktur menu, do których inne powizane dodatki bd do-
daway wasne elementy. Na rysunku 10.3 pokazano dodatek zawierajcy
kart, która ma by wspódzielona przez róne dodatki.
Kiedy zostanie wczytany powizany z nim dodatek, wykorzysta wspó-
dzielon kart do umieszczenia wasnej grupy kontrolek, co pokazano na
rysunku 10.4.
280
R
OZDZIA
10. W
STKA W
O
FFICE
2007
R
YSUNEK
10.3.
Wspódzielona karta
R
YSUNEK
10.4.
Kontrolki innego dodatku dodane do wspódzielonej karty
Taka moliwo moe by uytecznym podejciem podczas tworzenia roz-
wiza o duym stopniu skalowalnoci. Kluczowym atrybutem wymaganym
do utworzenia wspódzielonej karty i zarzdzania ni jest atrybut namespace.
Za kadym razem gdy tworzymy wasn Wstk, uywamy przestrzeni nazw.
Pierwszy wiersz we wszystkich plikach XML Wstki zawiera odniesienie do
przestrzeni nazw http://schemas.microsoft.com/ofce/2006/01/customui,
tak jak przedstawiono poniej:
<customUI xmlns="http://schemas.microsoft.com/office/2006/
´01/customui">
Prefiks
xmlns
jest skrótem od XML NameSpace (przestrze nazw XML).
Firma Microsoft zdecydowaa si na uywanie adresów URL jako identyfi-
katorów przestrzeni nazw we wszystkich definicjach XML Wstki. Prze-
strze nazw pozwala na dostosowanie opcji Wstki we wszystkich pro-
gramach Office. W kolejnym przykadzie utworzymy wasn przestrze
nazw pozwalajc na identyfikacj i dodawanie kontrolek z wielu plików do
wasnej karty. Ten rodzaj rozwizania nosi nazw karty wspódzielonej.
Rozwizanie wspódzielce kart wymaga przynajmniej dwóch plików
Excela. W omawianym przykadzie uyjemy dwóch dodatków. Pierwszy
bdzie dziaa w charakterze gospodarza dla karty wspódzielonej, natomiast
drugi umieci na karcie grup wasnych kontrolek. Na pocztek musimy
utworzy dodatek o nazwie Shared Tab.xlam i umieci w nim definicj
XML Wstki przedstawion w listingu 10.2.
Na pocztku kodu przedstawionego w listingu 10.2 tworzymy now
przestrze nazw
nsPED
. Do wasnej karty dodalimy równie nowy atrybut
idQ
, który oznacza Qualified ID. Warto atrybutu
idQ
karty poprzedzimy
P
ROJEKTOWANIE
R
IBBON
281
L
ISTING
10.2.
Definicja XML Wstki w pierwszym dodatku dla Shared Tab
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
xmlns:nsPED="PED Namespace">
<ribbon startFromScratch="false">
<tabs>
<tab idQ="nsPED:rxtabPED" label="Narzdzia PED" visible="1">
<group id="rxgrpBasic" label="Narzdzia podstawowe" visible="1">
<button id="rxbtnImportData"
label="Import danych"
screentip="Import danych."
imageMso="DatabaseAccessBackEnd"
size="large"
tag="Import_Data"
onAction="Shared_Basic_Tools_Click"/>
<button id="rxbtnDataReport"
label="Raport danych"
screentip="Utworzenie raportu danych."
imageMso="ImportExcel"
size="large"
tag="Data_Report"
onAction="Shared_Basic_Tools_Click"/>
<button id="rxbtnChartReport"
label="Wykres na podstawie raportu"
screentip="Utworzenie wykresu na podstawie raportu."
imageMso="PivotChartType"
size="large"
tag="Chart_Report"
onAction="Shared_Basic_Tools_Click"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
prefiksem z naszej przestrzeni nazw
nsPed
. Poprzez okrelenie w ten sposób
wartoci atrybutu
idQ
umoliwiamy odwoanie si do danego obiektu karty
z poziomu dowolnego pliku uywajcego naszej przestrzeni nazw. Pokazane
tutaj podejcie podczas tworzenia karty wspódzielonej moe by równie
zastosowane na wspódzielonych grupach bd
kontrolkach.
Nastpnym krokiem jest dodanie do moduu kodu w dodatku globalnej
procedury wywoania zwrotnego, któr przedstawiono w listingu 10.3. Pro-
cedura wywoania zwrotnego
Shared_Basic_Tools_Click
uywa atrybutu
tag
wywoujcej kontrolki w celu okrelenia przycisku, który spowodowa
wywoanie zwrotne.
L
ISTING
10.3.
Procedura wywoania zwrotnego w pierwszym dodatku
Option Explicit
Sub Shared_Basic_Tools_click(control As IRibbonControl)
Const sMESSAGE As String = "Chcesz "
Dim sActivity As String
282
R
OZDZIA
10. W
STKA W
O
FFICE
2007
Select Case control.Tag
Case "Import_Data": sActivity = "zaimportowa dane."
Case "Data_Report": sActivity = "utworzy raport danych."
Case "Chart_Report": sActivity = "utworzy wykres na podstawie
´raportu."
End Select
MsgBox sMESSAGE & sActivity
End Sub
Po wczytaniu dodatku Shared Tab.xlam nastpi utworzenie karty Narzdzia
PED pokazanej na rysunku 10.3. Aby zilustrowa wspódzielon natur tej
karty, utworzymy drugi dodatek i nadamy mu nazw Add Group Shared
Tab.xlam. Nastpnie do drugiego dodatku dodamy plik definicji XML
Wstki przedstawiony w listingu 10.4.
L
ISTING
10.4.
Definicja XML Wstki w drugim dodatku dla Shared Tab
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
xmlns:nsPED="PED Namespace">
<ribbon startFromScratch="false">
<tabs>
<tab idQ="nsPED:rxtabPED" label="Narzdzia PED" visible="1">
<group id="rxgrpDistribution" label="Dystrybucja">
<button id="rxbtnEmailTeam"
label="Wylij e-mail do zespou"
screentip="Wylij e-mail do zespou."
imageMso="AttachItem"
size="large"
tag="Email_Team"
onAction="Shared_Distribution_Click"/>
<button id="rxbtnEmailManager"
label="Wylij e-mail do menedera"
screentip="Wylij e-mail do menedera."
imageMso="FileManageMenu"
size="large"
tag="Email_Manager"
onAction="Shared_Distribution_Click"/>
<button id="rxbtnPublishMoss"
label="Opublikuj poprzez MOSS"
screentip="Opublikuj poprzez MOSS."
imageMso="ExportSharePointList"
size="large"
tag="Publish_MOSS"
onAction="Shared_Distribution_Click"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Porównujc definicj XML Wstki przedstawion w listingu 10.4 z defini-
cj przedstawion w listingu 10.3, zauwaamy, e wspódziel t sam prze-
strze nazw
nsPED
oraz uywaj tego samego atrybutu
idQ
i nazw etykiety
P
ROJEKTOWANIE
R
IBBON
283
karty wspódzielonej. Jest to wymagane do wspódzielenia karty przez wiele
plików. Na kocu drugi dodatek uzupenimy globaln procedur wywoania
zwrotnego, któr przedstawiono w listingu 10.5.
L
ISTING
10.5.
Procedura wywoania zwrotnego w drugim dodatku
Option Explicit
Sub Shared_Distribution_Click(control As IRibbonControl)
Const sMESSAGE As String = "Chcesz "
Dim sActivity As String
Select Case control.Tag
Case "Email_Team": sActivity = "wysa raport do czonków zespou."
Case "Email_Manager": sActivity = "wysa raport menederowi."
Case "Publish_MOSS": sActivity = "opublikowa raport poprzez MOSS."
End Select
MsgBox sMESSAGE & sActivity
End Sub
Po wczytaniu dodatków kontrolki Wstki utworzone przez obydwa dodat-
ki zostan wywietlone na tej samej karcie wspódzielonej Narzdzia
PED, któr pokazano na rysunku 10.4. Oba utworzone dodatki mona take
wczyta niezalenie. Kady z nich ma moliwo utworzenia karty wspó-
dzielonej i umieszczenia na niej kontrolek. Jednak to prowadzi do maego
bdu.
Poniewa na naszej karcie wspódzielonej brakuje rodzimego mechani-
zmu kontroli sekwencji grup, kolejno wywietlania na niej grup bdzie
zaleaa od kolejnoci otwierania dodatków korzystajcych z tej karty wspó-
dzielonej. Najlepszym rozwizaniem tego problemu bdzie uycie pliku gów-
nego kontrolujcego kolejno wczytywania powizanych z nim plików.
Dodatek utworzony w tym przykadzie zosta zamieszczony w katalogu
\Koncepcje\Rozdzial10 na pycie CD doczonej do ksiki.
Atrybut keytip
Spotkalimy si ju z pewnymi imponujcymi rozwizaniami Wstki, w któ-
rych nie dostarczono adnych atrybutów keytip. To powane ograniczenie.
Nacinicie klawisza Alt powoduje przejcie klawiatury do trybu nawigacji.
W tym trybie uytkownicy mog bardzo atwo porusza si po Wstce, po
prostu naciskajc klawisze na klawiaturze.
Najwikszym problemem z atrybutem
keytip
nie jest proces jego doda-
wania do definicji XML Wstki — to bardzo atwe zadanie. Problemem
jest okrelenie odpowiednich klawiszy do wykorzystania. Tak wiele kombi-
nacji klawiszy ju wykorzystano we wbudowanych funkcjach Excela, e
niezbyt duo pozostao do wyboru. W aplikacjach dyktatorskich bdzie to
znacznie mniejszy problem, ale w dodatkach ogólnych i skoroszytach
znalezienie dobrego rozwizania moe by do trudne.
284
R
OZDZIA
10. W
STKA W
O
FFICE
2007
Zarzdzanie wasnymi obrazami kontrolek
Pakiet Office 2007 jest dostarczany z du iloci wbudowanych obrazów,
które mona wykorzysta we wasnych kontrolkach. Dlatego te przed pod-
jciem decyzji o uyciu wasnych obrazów warto przejrze te, które dostar-
czono w standardzie. Stosowanie wbudowanych obrazów pomaga równie
w zachowaniu znanego wygldu interfejsu uytkownika. Zamiast np. uywa
wasnego obrazu dla przycisku Drukuj, naley skorzysta z dostarczonego
standardowo przez aplikacj. Stosowanie wielu wasnych obrazów moe mie
negatywny wpyw na wydajno aplikacji.
Microsoft udostpnia do pobrania plik Excela o nazwie Office2007Icons
Gallery.xlsm. Powoduje on umieszczenie na karcie Deweloper zestawu
kolekcji obrazów, które uatwiaj odszukanie nazw obrazów wbudowanych
w pakiet w celu ich uycia we wasnych interfejsach uytkownika RibbonX.
Inny uyteczny plik do pobrania to 2007OfficeControlIDsExcel2007.exe;
w nim znajdziemy list identyfikatorów dla wszystkich wbudowanych kon-
trolek.
Jeeli postanowisz, e konieczne jest zastosowanie wasnych obrazów,
wówczas zalecanym formatem pliku jest PNG. Silnik graficzny Wstki zo-
sta zaprojektowany do pracy z obrazami w penej palecie kolorów (24 bi-
ty), która maj równie kana alfa okrelajcy przezroczysto kadego pik-
sela. Poniewa format PNG obsuguje kana alfa i pozwala na zachowanie
wzgldnie maej wielkoci plików, bdzie najlepszym wyborem. Zalecana wiel-
ko wasnych ikon to 16 na 16 pikseli (mae) lub 32 na 32 piksele (due).
Za pomoc narzdzia Custom UI Editor mona doda wasne obrazy do
skoroszytów, ale nie mona si do nich odwoa w pliku definicji XML
Wstki. Oznacza to konieczno uycia oddzielnych plików obrazów. W li-
stingu 10.6 przedstawiono definicj XML Wstki korzystajc z obrazów
w formacie PNG za pomoc atrybutu
getImage
.
L
ISTING
10.6.
Definicja XML Wstki dla grafiki w formacie PNG
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="rxtabPED" label="Narzdzia PED" visible="1">
<group id="rxgrpPED" label="Zestaw narzdzi PED" visible="1">
<button id="rxbtnReport"
label="Raport"
screentip="Utwórz raport."
getImage="GetImage"
size="large"
onAction="rxbtnReport_Click"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
P
ROJEKTOWANIE
R
IBBON
285
Procedur wywoania zwrotnego dla atrybutu
getImage
przedstawiono
w listingu 10.7. Jedyny problem z formatem pliku PNG polega na tym, e
musimy mie wasne rozwizanie, aby wczyta obrazy w tym formacie.
Wynika to z faktu, e wbudowana w Excel 2007 funkcja
LoadPicture
nie
obsuguje formatu PNG. W listingu 10.7 uylimy wasnej funkcji
Load
´
PictureGDI
, która pobiera jeden argument — pen ciek dostpu
i nazw pliku PNG przeznaczonego do wczytania.
L
ISTING
10.7.
Wywoanie zwrotne dla atrybutu getImage
Sub GetImage(control As IRibbonControl, ByRef returnedVal)
Set returnedVal = _
LoadPictureGDI(ThisWorkbook.Path & "\Report.png")
End Sub
Przedstawiona powyej funkcja uywa pewnych API GDI+ (Graphics
Device Interface) do konwersji obrazu PNG na obiekt
IPicture
. Szcze-
góowe omówienie procesu tej konwersji wykracza poza zakres tematyczny
rozdziau. Jednak kod wasnej funkcji wczytujcej obrazy PNG umiecili-
my w skoroszycie Load PNG pictures.xlsm znajdujcym si w katalogu
\Koncepcje\Rozdzial10 na pycie CD doczonej do ksiki.
Uywanie globalnych procedur wywoa zwrotnych
Uycie globalnych procedur wywoa zwrotnych pozwala na jednoczesne
obsuenie wielu obiektów kontrolek. Gdy pojedyncza procedura wywoa
zwrotnych obsuguje wiele powizanych obiektów kontrolek, kod jest bar-
dziej strukturalny, a jego obsuga wymaga mniejszej iloci czasu. W definicji
XML Wstki przedstawionej w listingu 10.8 atrybutom
onAction
wszystkich
trzech przycisków przypisano t sam procedur wywoa zwrotnych o na-
zwie
PED_Click
.
L
ISTING
10.8.
Uywanie jednej procedury wywoania zwrotnego do obsugi kilku obiektów
kontrolek
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="rxtabPED" label="Narzdzia PED" visible="1">
<group id="rxgrpPED" label="Zestaw narzdzi PED" visible="1">
<button id="rxbtnImportData"
label="Import danych"
screentip="Import danych."
imageMso="DatabaseAccessBackEnd"
size="large"
286
R
OZDZIA
10. W
STKA W
O
FFICE
2007
tag="ImportData"
onAction="PED_click" />
<button id="rxbtnDataReport"
label="Utwórz raport"
screentip="Utworzenie raportu na podstawie danych."
imageMso="ImportExcel"
size="large"
tag="DataReport"
onAction="PED_click" />
<button id="rxbtnChartReport"
label="Utwórz wykres"
screentip="Utworzenie wykresu na podstawie raportu."
imageMso="PivotChartType"
size="large"
tag="ChartReport"
onAction="PED_click" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Procedura wywoania zwrotnego
PED_Click
uywa atrybutu
tag
wywou-
jcej kontrolki w celu okrelenia przycisku, który spowodowa wywoanie
procedury. Procedur obsugi przedstawiono w listingu 10.9.
L
ISTING
10.9.
Wspólna procedura wywoania zwrotnego
Sub PED_click(control As IRibbonControl)
Select Case control.Tag
Case "ImportData": Import_Data
Case "DataReport": Create_Data_Report
Case "ChartReport": Create_Chart_Report
End Select
End Sub
Uniewanianie
Uniewanianie jest procesem intensywnie wykorzystujcym zasoby i pod-
czas jego uywania naley zachowa ostrono. Gdy tylko bdzie to mo-
liwe, warto uniewania okrelone kontrolki zamiast caej Wstki, gdy to
drugie podejcie ma bardzo negatywny wpyw na wydajno aplikacji.
Uniewanianie kontrolek nie powoduje ich ponownego wczytania, a jedynie
odwieenie.
Wydaje si, e w wywoaniu
getEnabled
biecej wersji Wstki ist-
nieje bd. Jeeli do dynamicznego wczania lub wyczania okrelonych
kontrolek Wstki uyjesz wywoania zwrotnego
getEnabled
, wywoanie
zwrotne moe nie zosta prawidowo wywoane, o ile nie nastpi uniewa-
nienie caej Wstki zamiast poszczególnych kontrolek.
P
ROJEKTOWANIE
R
IBBON
287
Spójrzmy bliej na proces uniewaniania w definicji XML Wstki i jego
wymagania w VBA. Przede wszystkim potrzebujemy zmiennej VBA, która
przedstawia obiekt
IRibbonUI
. Aby j otrzyma, musimy okreli procedur
wywoania zwrotnego dla atrybutu
onLoad
, co przedstawiono w listingu 10.10.
L
ISTING
10.10.
Definicja XML Wstki suca do uniewaniania przycisku
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="rxRibbonUI_onLoad">
<ribbon>
<tabs>
<tab id="rxtabInvalidate" label="PED">
<group id="rxgrpPed" label="Invalidate">
<button id="rxbtnPED"
getLabel ="rxbtn_GetTime"
screentip="Wywietl godzin."
imageMso="DateAndTimeInsert"
size="large"
onAction="rxbtn_Invalidate_Click"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
W powyszym przykadzie podczas kadego kliknicia przycisku odwie-
amy dat i godzin, które s wywietlane przez kontrolk przycisku. Dlatego
te potrzebujemy procedury wywoania zwrotnego uniewaniajcej kon-
trolk przycisku, tak aby byo moliwe odwieenie jej zawartoci. Ponadto
potrzebna jest procedura wywoania zwrotnego suca do wywietlenia
przez kontrolk przycisku biecej daty i godziny. W listingu 10.10 uylimy
atrybutu
getLabel
do pobrania daty i godziny. Natomiast atrybut
onAction
jest wykorzystywany do uniewaniania kontrolki przycisku. Wywoanie zwro-
tne
onLoad
i dwa wywoania zwrotne przycisku zostay przedstawione w lis-
tingu 10.11.
L
ISTING
10.11.
Wywoania zwrotne suce do uniewaniania przycisku
Private m_rxRibbonUI As IRibbonUI
'
Wywoanie zwrotne dla customUI.onLoad.
Sub rxRibbonUI_onLoad(Ribbon As IRibbonUI)
Set m_rxRibbonUI = Ribbon
End Sub
'
Wywoanie zwrotne dla rxbtnPED onAction.
Sub rxbtn_Invalidate_Click(control As IRibbonControl)
m_rxRibbonUI.InvalidateControl control.ID
End Sub
'
Wywoanie zwrotne dla rxbtnPED getLabel.
288
R
OZDZIA
10. W
STKA W
O
FFICE
2007
Sub rxbtn_GetTime(control As IRibbonControl, ByRef returnedValue)
returnedValue = CStr(Now())
End Sub
Przykadowy plik zawierajcy ten kod znajduje si w katalogu \Koncepcje\
Rozdzial10 na pycie CD doczonej do ksiki. Microsoft opublikowa take
dokument poruszajcy temat projektowania Wstki. Mona go znale
po
przeszukaniu witryny Microsoft pod ktem wyraenia 2007 Ofce System
Document: UI Style Guide for Solutions and Add-Ins.
Dostosowanie opcji Wstki bazujcej na tabeli
Podczas budowania interfejsów uytkownika paska polece proces bazujcy na
tabeli jest faktycznie standardem, zwaszcza w przypadku rozwiza o duym
poziomie skalowalnoci. Moglibymy zaoy, e nie ma powodu, aby takie
samo podejcie zastosowa w trakcie dostosowywania opcji Wstki.
Jednak dwa gówne ograniczenia techniczne uniemoliwiaj tworzenie
Wstki bazujcej na tabeli. Po pierwsze, w VBA nie mamy dostpu do mo-
delu obiektowego w celu manipulowania Wstk. Po drugie, rodowisko
uruchomieniowe VBA nie moe dostarczy XML dla definicji Wstki. Bardzo
uyteczne byoby zobaczenie, e standardowe zdarzenie
GetCustomUI
zostao
dodane do obiektu
Workbook
, a metoda
CreateCustomerUI
— do obiektu
CommandBars
.
Uycie Visual Studio Tools for Office System (VSTO) pozwala na uzyska-
nie dostpu do narzdzia Visual Designer dla Wstki, które w tworzonym
rozwizaniu umoliwia wizualn manipulacj tym interfejsem. Narzdzie to
na podstawie projektu graficznego automatycznie generuje plik definicji
XML Wstki, wywoania zwrotne oraz inne komponenty interfejsu uyt-
kownika. Innymi sowy, VSTO oferuje pen obsug dostosowywania opcji
Wstki, podczas gdy VBA w ogóle nie dostarcza takiego wsparcia.
Wobec takiego stanu rzeczy moemy zakada, e Microsoft zepchn VBA
do roli drugorzdnej. W kolejnym rozdziale przeanalizujemy moliwoci, jakie
obecnie mamy do wykorzystania w poszczególnych plikach Excela podczas
pracy z customUI XML przy uyciu VBA.
Uzyskanie dostpu do elementu customUI XML
Aby uzyska dostp do elementu
customUI
XML w pliku Excela, konieczna
jest tymczasowa zmiana rozszerzenia na .zip, dostosowanie wybranych opcji,
a nastpnie przywrócenie rozszerzeniu jego wartoci pocztkowej. Tymcza-
sowa zmiana rozszerzenia pliku na .zip powoduje, e skadniki XML nowego
formatu pliku staj si widoczne i dostpne z poziomu Eksploratora Windows,
co pokazano na rysunku 10.5. W trakcie rcznego dodawania wasnych opcji
Z
AAWANSOWANE ROZWIZYWANIE PROBLEMÓW
289
na Wstce za pomoc narzdzia Custom UI Editor automatycznie tworzo-
ny jest katalog customUI. Musi on istnie, jeli chcemy, aby wprowadzone
modyfikacje opcji dziaay prawidowo. Jeeli katalog nie bdzie istnia,
musi zosta zbudowany przed utworzeniem i zapisaniem w nim pliku
customUI.xml.
R
YSUNEK
10.5.
Zawarto archiwum ZIP
Wszystkie definicje XML Wstki musz znajdowa si w pliku customU-
I.xml. Ponadto XML Wstki musi spenia kryteria okrelone w schemacie
definicji XML (XSD — XML Schema Definition) opisanym w pliku cu-
stomUI.xsd. Plik XML to zwyky plik tekstowy z rozszerzeniem .xml za-
miast .txt. Z tego powodu pliki customUI.xml moemy tworzy w taki sam
sposób jak zwyke pliki tekstowe. Jeeli masz wiedz wystarczajc do
pracy z analizatorem skadni XML, np. Microsoft XML, moe to by lepszym
rozwizaniem. Podczas uaktualniania pliku customUI.xml znacznie prost-
sze i szybsze jest nadpisanie biecego pliku zupenie now wersj zamiast
modyfikacji zawartego w nim kodu.
Z technicznego punktu widzenia moliwe jest utworzenie w Excelu narz-
dzia sucego do generowania definicji XML Wstki na podstawie wpisów
w tabeli skoroszytu, podobnie jak podczas budowania bazujcych na tabeli
interfejsów uytkownika paska polece. Znacznie lepszym rozwizaniem b-
dzie opracowanie tego rodzaju narzdzia dla platformy .NET, poniewa oferuje
ona daleko idc obsug pracy z XML oraz ze Wstk.
Zaawansowane rozwizywanie problemów
Wstka jest krytykowana za brak modelu obiektowego w VBA. Jednak
zdecydowanie czciej wskazuje si na fakt, e oferuje elastyczno znacz-
nie mniejsz ni stary interfejs uytkownika paska polece. Wiele polece
jest zbyt gboko zaszytych w interfejsie uytkownika, zatem nie s atwo
dostpne. Z punktu widzenia procesu, polecenia nie s dostpne w logiczny
sposób.
Wasne rozwizania Wstki mog pomóc w pokonaniu niektórych ogra-
nicze. Natomiast inne ograniczenia, takie jak zwizane z uywaniem kon-
trolek dodatkowych, mog by rozwizane tylko przy uyciu platformy .NET
oraz narzdzi firm trzecich. Pozostae ograniczenia, np. brak moliwoci
290
R
OZDZIA
10. W
STKA W
O
FFICE
2007
tworzenia wasnych bd
„pywajcych” pasków narzdziowych, wynikaj
z budowy architektury Wstki i nie mog by pokonane. Poniej przed-
stawiono omówienie niektórych kwestii, z którymi programici borykaj si
najczciej, oraz sposoby ich rozwizania.
Tworzenie Wstki dla aplikacji dyktatorskiej
W aplikacji dyktatorskiej cakowicie usuwamy domyln Wstk i zast-
pujemy j wasn. Standardowym podejciem jest ustawienie w pliku definicji
XML Wstki atrybutu
startFromScratch="true"
, co daje interfejs poka-
zany na rysunku 10.6.
R
YSUNEK
10.6.
Podstawowa Wstka dla aplikacji dyktatorskiej
Gówn zalet takiego podejcia pozostaje brak koniecznoci uywania kodu
VBA do ustawienia Wstki po otworzeniu skoroszytu. Kod VBA nie bdzie
take wymagany do przywrócenia ustawie domylnych interfejsu po za-
mkniciu aplikacji. Wszystko jest wykonywane automatycznie podczas
otwierania i zamykania skoroszytu.
Na rysunku 10.6 wida, e Przycisk pakietu Office jest nadal dostpny,
podobnie jak cz podstawowych polece cznie z Paskiem narzdzi
Szybki dostp (QAT, czyli Quick Access Toolbar). Dwa elementy pozosta-
jce w przycisku Office po uyciu atrybutu
startFromScratch="true"
to przyciski Opcje programu Excel oraz Zako cz program Excel. By moe
w aplikacji dyktatorskiej trzeba bdzie uniemoliwi dostp do wymienionych
funkcji.
Niestety, ukrycie dwóch omawianych kontrolek jest niemoliwe, wic
najlepszym rozwizaniem pozostaje ich zablokowanie. Chocia fizycznie s
umieszczone w menu Office, RibbonX nie pozwala na manipulacj nimi
z poziomu elementu
officeMenu
w definicji XML Wstki. W zamian
trzeba wykorzysta element
command
, co przedstawiono w listingu 10.12.
L
ISTING
10.12.
Definicja XML Wstki suca do wyczenia przycisków Opcje programu
Excel oraz Zakocz program Excel
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
...
<commands>
Z
AAWANSOWANE ROZWIZYWANIE PROBLEMÓW
291
<command idMso="FileExit" enabled="false"/>
<command idMso="ApplicationOptionsDialog" enabled="false"/>
</commands>
...
</customUI>
W przycisku Office nadal pozostaj dostpne opcje Nowy, Otwórz i Zapisz.
Jeeli i one maj zosta ukryte, musimy uy elementu
officeMenu
, tak jak
przedstawiono w listingu 10.13.
L
ISTING
10.13.
Definicja XML Wstki suca do ukrywania polece Nowy, Otwórz i Zapisz
<officeMenu>
<button idMso="FileNew" visible="false" />
<button idMso="FileOpen" visible="false" />
<button idMso="FileSave" visible="false" />
</officeMenu>
Do ukrycia w menu Office pozosta ju tylko element — Niedawno uy-
wane dokumenty — znany równie jako lista niedawno uywanych plików
(MRU, czyli Most Recently Used). Ukrycia nie moemy przeprowadzi za
pomoc definicji XML Wstki, natomiast w VBA mona tylko wyczyci
list, a nie usun zupenie. Aby wyczyci list podczas uruchomienia apli-
kacji, naley uy pierwszego bloku kodu przedstawionego w listingu
10.14. Podczas zamykania aplikacji trzeba przywróci warto maksymalnej
liczby dostpnych plików. Do tego celu wykorzystamy drugi fragment kodu
przedstawiony w listingu 10.14.
L
ISTING
10.14.
Kod sucy do czyszczenia listy ostatnio uywanych plików
'
Zmienna moduu przechowujca maksymaln liczb ostatnio uywanych plików.
Dim miNumberOfFiles As Integer
'
...
With Application.RecentFiles
'
Pobranie maksymalnej liczby dostpnych plików.
miNumberOfFiles = .Maximum
'
Wyczyszczenie listy.
.Maximum = 0
End With
'
...
'
Przywrócenie maksymalnej liczby ostatnio uywanych plików.
Application.RecentFiles.Maximum = miNumberOfFiles
Po uruchomieniu kodu zmodyfikowany Przycisk pakietu Office bdzie wygl-
da, tak jak pokazano na rysunku 10.7.
292
R
OZDZIA
10. W
STKA W
O
FFICE
2007
R
YSUNEK
10.7.
Menu Office po modyfikacji
Naley pamita, e ustawienie wartoci zero maksymalnej liczbie ostatnio
uywanych plików powoduje trwae wyczyszczenie listy MRU. Wielu uyt-
kowników polega w swojej pracy na tej licie i mog by niezadowoleni, jeli
lista nie zostanie przywrócona. Mamy zatem problem. Lista MRU (jak rów-
nie maksymalna liczba plików znajdujcych si na licie) jest przechowywa-
nia w nastpujcym kluczu rejestru Windows:
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\File MRU
Z technicznego punktu widzenia, moliwe jest zachowanie, a nastpnie przy-
wrócenie klucza rejestru, aby nie spowodowa zniszczenia listy MRU uyt-
kownika. Jednak do powszechn praktyk, zwaszcza w rodowiskach
korporacyjnych, jest uniemoliwianie programom dostpu do rejestru. Takie
ograniczenie nie pozwala na zbudowanie naprawd solidnego rozwizania
problemu trwaego czyszczenia listy MRU.
Zazwyczaj chcemy równie usun domylne menu kontekstowe wywie-
tlane po klikniciu prawym przyciskiem myszy w skoroszycie. To zadanie
jest bardzo atwe do wykonania za pomoc VBA, co przedstawiono w lis-
tingu 10.15.
L
ISTING
10.15.
Usunicie w Excelu 2007 menu kontekstowego wywietlanego po klikniciu
prawym przyciskiem myszy
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, _
ByVal Target As Range, _
Cancel As Boolean)
Cancel = True
End Sub
Nastpnie domylne menu kontekstowe zastpujemy wasnym paskiem
polece. W poprzednim zdaniu nie popenilimy pomyki, mówic „o pasku
polece”. Nawet w Excelu 2007 menu kontekstowe nadal jest takim samym
paskiem polece jak we wczeniejszych wersjach Excela.
Wspomniane menu kontekstowe zostao wprawdzie rozbudowane o pewne
funkcje dodatkowe, do których nie mamy dostpu, ale nadal pozostaje pas-
Z
AAWANSOWANE ROZWIZYWANIE PROBLEMÓW
293
kiem polece. W tworzonej aplikacji zastpujemy je wic wasnym paskiem
polece, uywajc poniszego wiersza kodu:
Application.CommandBars("CustomMenu").ShowPopup
Moemy jedynie zgadywa, e Microsoft ma zamiar poczy t cz inter-
fejsu uytkownika Excela z nowym modelem Wstki. Prawdopodobnie
zabrako czasu, aby zrobi to przed wprowadzeniem Excela 2007, ale wszystko
moe si zmieni w przyszych wersjach aplikacji. Po wprowadzeniu powy-
szych zmian pozostao tylko dostosowanie Excela w ten sam sposób, który
przedstawiono w rozdziale 6.
Ukrycie Wstki
W pewnych sytuacjach trzeba cakowicie ukry Wstk. Zadanie to mona
przeprowadzi za pomoc VBA poprzez wykonanie w pierwszej kolejnoci
makra przedstawionego w listingu 10.16. Aby przywróci Wstk, naley
skorzysta z VBA do wykonania drugiego makra XLM przedstawionego w li-
stingu 10.16.
L
ISTING
10.16.
Ukrywanie i odkrywanie Wstki
'
Ukrycie Wstki.
Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", False)"
'
Przywrócenie Wstki.
Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", True)"
Na rysunku 10.8 pokazano wynik uycia powyszej techniki do ukrycia
Wstki.
R
YSUNEK
10.8.
Interfejs uytkownika Excela z cakowicie ukryt Wstk
294
R
OZDZIA
10. W
STKA W
O
FFICE
2007
Dwie implikacje powyszej techniki wymagaj dalszych objanie. Po pierw-
sze, wykonanie wskazanego makra XLM w celu ukrycia Wstki ma
wpyw na wszystkie otwarte skoroszyty w biecej sesji Excela. Po drugie,
technika opiera si na obsudze makr XLM w Excelu. XLM to jzyk makr
uywany do tworzenia makr i aplikacji Excela przed wprowadzeniem VBA.
Mino ju ponad pitnacie lat do oficjalnego zastpienia XLM przez VBA
i zachodzi due prawdopodobiestwo, e Microsoft zakoczy obsug XLM
w jednej z kolejnych wersji pakietu Office. Dlatego te, stosujc powysz
technik, nie mona mie pewnoci, e bdzie dziaaa w kolejnych wersjach
Excela.
Okrelenie wielkoci kontrolek comboBox,
dropDown i editBox
W pewnych sytuacjach trzeba kontrolowa wielko kontrolki
comboBox
oraz
powizanych z ni kontrolek
dropDown
i
editBox
. W tym celu uywamy
atrybutu
sizeString
, ale zamiast liczby, takiej jak
10
lub
20
, podajemy
cig tekstowy zawierajcy maksymaln liczb znaków, które chcemy wywie-
tli. Znaki uyte w tym cigu tekstowym nie s wane, natomiast czcionka
zastosowana w kontrolce wpywa na jej rzeczywist szeroko.
Jeli chcemy ograniczy liczb znaków wprowadzonych w kontrolce,
moemy uy atrybutu
maxLength
wraz z liczb, np.
5
lub
8
. W listingu 10.17
ustawiono szeroko kontrolki
comboBox
na siedem znaków, a maksymaln
liczb znaków na osiem.
L
ISTING
10.17.
Definicja XML Wstki suca do ustawienia wielkoci kontrolki listy rozwijanej
<comboBox id="rxcboName"
label="Name:"
sizeString="xxxxxxx"
maxLength="8"
screentip="Prosz poda imi."
onChange="rxcboName_OnChange"/>
Nawigacja po kartach
W rozwizaniach z du iloci kart w interfejsie uytkownika skoroszytu lub
z ukrytym paskiem kart moe wystpi konieczno dostarczenia wasnej
funkcji sucej do nawigacji po kartach. W omawianym przykadzie mamy
sze kart, z których jedna pozostaje ukryta. Dlatego te musimy utworzy
list arkuszy zawierajc pi widocznych arkuszy.
W omawianym przykadzie uyjemy kontrolki
dropDown
zamiast
combo
´
Box
gównie dlatego, e kontrolka
comboBox
pozwala uytkownikom na
wprowadzanie nowych wpisów w kontrolce, a na to nie moemy si zgodzi.
Z
AAWANSOWANE ROZWIZYWANIE PROBLEMÓW
295
Jednak problem z kontrolk
dropDown
polega na tym, e — w przeciwie-
stwie do
comboBox
— nie podaje nazwy zaznaczonego elementu, a jedynie
jego identyfikator i numer indeksu.
Chocia powinnimy dy do tworzenia w peni dynamicznych aplikacji,
wie si to z kosztem, jakim jest konieczno napisania kodu dla wszelkich
moliwych sytuacji. W rzeczywistych aplikacjach skaniamy si wic do two-
rzenia póstaych aplikacji, gdzie pewne elementy pozostaj stae, natomiast
inne s dynamiczne. W ten sposób zbudowalimy take rozwizanie w oma-
wianym przykadzie. Poniewa dysponujemy ustalon list arkuszy, których
nazwy nie ulegaj zmianie podczas dziaania aplikacji, nie trzeba uniewania
kontrolki
dropDown
w trakcie dziaania programu. Natomiast nazwy skoro-
szytów nie zostay zapisane na stae, co ma uatwi ich przysz obsug.
Arkusz o nazwie Hidden pozostaje ukryty i dlatego zawsze powinien by
wykluczony z listy. Definicja XML Wstki dla omawianego przykadu zostaa
przedstawiona w listingu 10.18. Atrybutu
getItemCount
uylimy w celu
pobrania liczby nazw arkuszy, podczas gdy atrybut
getItemLabel
wypenia
kontrolk
dropDown
list nazw. Stosujc oba atrybuty, zyskujemy nieco bar-
dziej dynamiczne rozwizanie.
L
ISTING
10.18.
Definicja XML Wstki suca do nawigacji midzy arkuszami
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="rxtabPED" label="Nawigacja po arkuszach">
<group id="rxgrpDropDowns" label="Nawigacja">
<dropDown id="rxddSheetNavigation"
label="Przejd do:"
getItemCount="rxdd_ItemCount"
getItemLabel="rxdd_ListItem"
onAction="rxdd_Item_Selected"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Wymagane procedury wywoa zwrotnych zostay przedstawione w listingu
10.19. Wywoanie zwrotne
rxdd_ItemCount
zwraca liczb arkuszy widocz-
nych w skoroszycie. W ten sposób Excel zostaje poinformowany, ile razy
powinien wykona wywoanie zwrotne
rxdd_ListItem
. Wywoanie to
dodaje do kontrolki
dropDown
nazw kadego widocznego arkusza. Podczas
pobierania nazwy zaznaczonego arkusza dodajemy
1
do indeksu listy prze-
kazywanego do VBA. Wynika to z faktu, e wartoci indeksu tablicy kolekcji
arkuszy rozpoczynaj si od jednego, podczas gdy VBA operuje na tablicach,
których numeracja rozpoczyna si od zera.
296
R
OZDZIA
10. W
STKA W
O
FFICE
2007
L
ISTING
10.19.
Wywoania zwrotne do nawigacji midzy arkuszami
Option Explicit
'
Wywoanie zwrotne dla rxddSheetNavigation getItemCount.
Sub rxdd_ItemCount(control As IRibbonControl, ByRef returnedVal)
Dim lCount As Long
Dim wksSheet As Worksheet
Set mwkbNavigation = ThisWorkbook
'
Pobranie liczby widocznych arkuszy.
For Each wksSheet In mwkbNavigation.Worksheets
If wksSheet.Visible = xlSheetVisible Then
lCount = lCount + 1
End If
Next wksSheet
'
Wymiary tablicy arkuszy.
returnedVal = lCount
End Sub
'
Wywoanie zwrotne dla rxddSheetNavigation getItemLabel.
Sub rxdd_ListItem(control As IRibbonControl, index As Integer, _
ByRef returnedVal)
'
Wypenienie kontrolki dropDown nazwami arkuszy.
If mwkbNavigation.Worksheets(index + 1).Visible = _
xlSheetVisible Then
returnedVal = mwkbNavigation.Worksheets(index + 1).Name
End If
End Sub
'
Wywoanie zwrotne dla rxddSheetNavigation onAction.
Sub rxdd_Item_Selected(control As IRibbonControl, id As String, _
index As Integer)
Dim sSheetName As String
'
Pobranie nazwy aktualnie zaznaczonego arkusza.
sSheetName = mwkbNavigation.Worksheets(index + 1).Name
'
Aktywacja zaznaczonej nazwy.
mwkbNavigation.Worksheets(sSheetName).Activate
End Sub
D
ALSZE POZYCJE DO CZYTANIA
297
Po uruchomieniu skoroszytu nastpuje utworzenie nowej karty Nawigacja
po arkuszach. Uytkownik moe przej do dowolnego arkusza poprzez
wybranie jego nazwy z listy wywietlanej przez kontrolk
dropDown
, co poka-
zano na rysunku 10.9.
R
YSUNEK
10.9.
Nawigacja po arkuszach
Skoroszyt zawierajcy omówiony przykad znajduje si w katalogu
\Koncepcje\Rozdzial10 na pycie CD doczonej do ksiki.
Uywanie szablonów
Stosujc szablony, mona na etapie tworzenia aplikacji zaoszczdzi sporo
czasu. Narzdzie Custom UI Editor znacznie uatwia tworzenie i uywanie
dostosowanych do wasnych potrzeb szablonów XML Wstki.
1.
W narzdziu Custom UI Editor naley utworzy definicj XML Wst-
ki i upewni si, e jest prawidowo zbudowana.
2.
Nastpnie zawarto XML trzeba skopiowa do edytora tekstowego,
takiego jak Notatnik, i zapisa w katalogu \Program Files\Custom UIEditor\
Samples\ jako plik z rozszerzeniem .xml.
Na rysunku 10.10 pokazano wygld menu Sample w narzdziu Custom UI
Editor po dodaniu kilku szablonów. Wybranie szablonu powoduje skopiowa-
nie kodu szablonu XML na kart Custom UI.
Dalsze pozycje do czytania
RibbonX: Customizing the Of ce 2007 Ribbon
Autorzy: Robert Martin, Ken Puls i Teresa Hennig
ISBN 978-0-470-191111-8
298
R
OZDZIA
10. W
STKA W
O
FFICE
2007
R
YSUNEK
10.10.
Wasne szablony w narzdziu Custom UI Editor
Poniewa Wstka jest funkcj dostpn w caym pakiecie Office, wic nie
ma ksiki powiconej jedynie Wstce w Excelu. Ta ksika porusza te-
mat dostosowania Wstki do wasnych potrzeb w aplikacjach Excel, Word
i Access. Zostaa napisana w prosty, atwy do zrozumienia sposób i powinna
by uznana za „bibli” RibbonX.
Portale internetowe
XML in Office Developer Portal
Portal XML in Office Developer na witrynie Microsoftu stanowi dobry
punkt wyjcia do uzyskania wikszej iloci informacji na temat formatu
Open XML. Warto odwiedzi stron http://msdn.microsoft.com/en-us/office/
aa905545.aspx.
OpenXMLDeveloper.org
Inna dobra witryna powicona Open XML to OpenXMLDeveloper.org dos-
tpna pod adresem http://openxmldeveloper.org/default.aspx.
W
NIOSKI
299
The Office Fluent User Interface Developer Portal
Portal The Office Fluent User Interface Developer na witrynie Microsoftu
oferuje dostp do wyczerpujcych informacji na temat RibbonX. Warto
odwiedzi stron http://msdn.microsoft.com/en-us/office/aa905530.aspx.
Wnioski
W tym rozdziale przedstawiono niektóre z najwaniejszych praktyk stoso-
wanych podczas projektowania i programowania RibbonX. Zaprezentowane
najlepsze praktyki bd ewoluoway wraz z zyskaniem coraz wikszego do-
wiadczenia na tych polach. Na wiele sposobów RibbonX jest now i inte-
resujc technologi, cho obecnie ma pewne powane ograniczenia podczas
pracy z poziomu VBA. Prawdopodobnie najpowaniejszym ograniczeniem
jest brak moliwoci uycia podejcia bazujcego na tabeli, zwaszcza w apli-
kacjach dyktatorskich.