Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00103 004286 12912788 na godz. na dobę w sumie
Excel. Programowanie dla profesjonalistów. Wydanie II - książka
Excel. Programowanie dla profesjonalistów. Wydanie II - książka
Autor: , , , Liczba stron: 1088
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-2544-4 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> aplikacje biurowe >> excel
Porównaj ceny (książka, ebook, audiobook).

Kompendium wiedzy dla programistów Excela!

Excel to - obok Worda - najpopularniejsze narzędzie w pakiecie Microsoft Office. Od razu po zainstalowaniu niejednego użytkownika zaskoczy ogromem swych możliwości. A przecież to dopiero wierzchołek góry lodowej. To, co stanowi o sile programu, jest niewidoczne dla początkujących. Tym czymś jest Visual Basic. Dzięki niemu Excel może stać się fundamentem dla rozbudowanych aplikacji, jak również może pozwolić na rozwiązanie problemów o wysokim stopniu złożoności. Oczywiście wykorzystanie potencjału tego języka nie jest całkiem proste, jednak książka, którą trzymasz w rękach, w znakomity sposób pomoże Ci rozpocząć przygodę z programowaniem w Visual Basic.

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).

Wykorzystaj Excel jako fundament efektywnych rozwiązań!

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

Darmowy fragment publikacji:

Excel. Programowanie dla profesjonalistów. Wydanie II Autorzy: Rob Bovey, Dennis Wallentin, Stephen Bullen, John Green 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! (cid:129) Jak wykorzystaæ nowy interfejs Excela 2007? (cid:129) Jak sterowaæ innymi aplikacjami z pakietu Microsoft Office? (cid:129) 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). (cid:129) Architektura aplikacji opartych o Microsoft Excel (cid:129) Najlepsze praktyki tworzenia aplikacji w Excelu i VBA (cid:129) Zasady projektowania arkuszy (cid:129) U¿ywanie stylów, nazw zdefiniowanych, formatowañ warunkowych (cid:129) Wykorzystanie kontrolek i zastosowanie dodatków funkcyjnych (cid:129) U¿ycie modu³ów klas do tworzenia obiektów (cid:129) Zarz¹dzanie paskiem poleceñ (cid:129) Praca z plikami XML (cid:129) Wykorzystanie mo¿liwoœci nowego interfejsu Excela 2007 (cid:129) U¿ycie Windows API (cid:129) Tworzenie formularzy (cid:129) Zastosowanie interfejsów oraz ponowne wykorzystanie kodu (cid:129) Sytuacje wyj¹tkowe – obs³uga b³êdów (cid:129) Debugowanie i optymalizacja kodu VBA (cid:129) Zastosowanie asercji (cid:129) Wspó³praca z bazami danych i techniki przetwarzania danych (cid:129) Tworzenie zaawansowanych wykresów (cid:129) Sterowanie innymi aplikacjami z pakietu Microsoft Office (cid:129) Wykorzystanie jêzyka VB.NET (cid:129) Mo¿liwoœci narzêdzia Visual Studio Tools for Office System Wykorzystaj Excel jako fundament efektywnych rozwi¹zañ! SPIS TRE¥CI PodziÚkowania O autorach Rozdziaï 1. WstÚp O ksiÈĝce Dla kogo przeznaczona jest ta ksiÈĝka? Twórca programowania excelowego Excel jako platforma do tworzenia aplikacji Struktura Przykïady Wersje obsïugiwane Rodzaje kroju pisma Na pïycie CD Pomoc i wsparcie Witryna internetowa Komentarze czytelników Rozdziaï 2. Architektura aplikacji Koncepcje Wnioski Rozdziaï 3. Najlepsze praktyki programowania w Excelu i VBA Konwencje nazw Najlepsze praktyki organizacji i tworzenia struktury aplikacji Najlepsze praktyki okreĂlajÈce ogólne zasady tworzenia oprogramowania Wnioski Rozdziaï 4. Projektowanie arkusza Zasady projektowania dobrego interfejsu uĝytkownika Wiersze i kolumny programu: podstawowe techniki tworzenia interfejsu uĝytkownika Nazwy definiowane Style Techniki kreĂlenia interfejsów uĝytkownika Weryfikacja danych 14 13 15 15 16 18 21 22 23 24 24 25 26 26 27 38 41 53 58 78 79 80 81 88 94 99 6 SPIS TRE¥CI Formatowanie warunkowe Uĝywanie kontrolek w arkuszu Przykïad praktyczny Wnioski Rozdziaï 5. Dodatki funkcyjne, ogólne i specjalizowane dla aplikacji Cztery etapy rozwoju i dziaïania aplikacji Dodatki bÚdÈce bibliotekami funkcji Dodatki ogólne Dodatki specjalizowane dla aplikacji Przykïad praktyczny Wnioski Rozdziaï 6. Aplikacja dyktatorska Struktura aplikacji dyktatorskiej Przykïad praktyczny Wnioski Rozdziaï 7. Uĝywanie moduïów klas do tworzenia obiektów Tworzenie obiektów Tworzenie kolekcji Wychwytywanie zdarzeñ Generowanie zdarzeñ Przykïad praktyczny Wnioski Rozdziaï 8. Zaawansowane sterowanie paskami poleceñ Projektowanie paska poleceñ Tablicowe sterowanie paskami poleceñ Zbieranie wszystkiego razem ’adowanie niestandardowych ikon z plików Podczepianie obsïugi zdarzeñ do kontrolek paska poleceñ Przykïad praktyczny Wnioski Rozdziaï 9. Wprowadzenie do formatu XML XML Wnioski Rozdziaï 10. WstÈĝka w Office 2007 Podstawowe zaïoĝenia RibbonX Wprowadzenie do formatu pliku Open XML w Office 2007 Projektowanie WstÈĝki oraz najlepsze praktyki programowania 103 108 111 116 117 120 127 127 134 146 147 161 168 169 173 179 182 189 195 198 199 219 227 231 240 246 249 271 273 274 278 SPIS TRE¥CI Dostosowanie opcji WstÈĝki bazujÈcej na tabeli Zaawansowane rozwiÈzywanie problemów Dalsze pozycje do czytania Portale internetowe Wnioski Rozdziaï 11. Tworzenie aplikacji niezaleĝnych od wersji Excela Pasek poleceñ i WstÈĝka w pojedynczej aplikacji Inne kwestie dotyczÈce programowania w Excelu 2007 Bezpieczeñstwo w Windows Vista a struktura katalogów Wnioski Rozdziaï 12. Zrozumienie i uĝywanie wywoïañ Windows API Ogólny opis Praca z ekranem Praca z oknami Praca z klawiaturÈ Praca z systemem plików i sieciÈ Przykïad praktyczny Wnioski Rozdziaï 13. Projektowanie formularzy UserForm i najlepsze praktyki Zasady Podstawy kontrolek Efekty wizualne Pozycjonowanie i rozmiary formularzy UserForm Kreatory Dynamiczne formularze UserForm Niemodalne formularze UserForm Wyszczególnienie kontrolek Przykïad praktyczny Wnioski Rozdziaï 14. Interfejsy Co to jest interfejs? Ponowne uĝycie kodu Definiowanie wïasnych interfejsów Implementacja wïasnego interfejsu Uĝywanie wïasnych interfejsów Klasy polimorficzne Polepszanie solidnoĂci Upraszczanie rozwoju 7 288 289 297 298 299 301 315 322 326 327 333 336 344 349 361 365 367 375 382 390 396 400 407 412 418 419 421 422 425 426 427 429 433 434 8 SPIS TRE¥CI Architektura moduïów rozszerzajÈcych Przykïad praktyczny Wnioski Rozdziaï 15. Obsïuga bïÚdów VBA PojÚcia obsïugi bïÚdów Zasada pojedynczego punktu wyjĂcia Prosta obsïuga bïÚdów Zïoĝone projekty obsïugi bïÚdów Centralna obsïuga bïÚdów Obsïuga bïÚdów w klasach i formularzach UserForm Zbieranie wszystkiego razem Przykïad praktyczny Wnioski Rozdziaï 16. Debugowanie kodów VBA Podstawowe techniki debugowania kodów VBA Okno Immediate (Ctrl+G) Call Stack — stos wywoïañ (Ctrl+L) Okno Watch Okno Locals Object Browser — przeglÈdarka obiektowa (F2) Tworzenie dziaïajÈcego otoczenia testowego Stosowanie asercji Debugerskie skróty klawiaturowe, które powinien znaÊ kaĝdy programista Wnioski Rozdziaï 17. Optymalizacja wydajnoĂci VBA Mierzenie wydajnoĂci Program narzÚdziowy PerfMon MyĂlenie kreatywne Makrooptymalizacja Mikrooptymalizacja Wnioski Rozdziaï 18. Programowanie i bazy danych Wprowadzenie do baz danych Wprowadzenie do SQL DostÚp do danych za pomocÈ ADO Dalsze pozycje do czytania Wnioski 443 445 446 447 456 457 458 462 469 470 476 484 485 495 498 500 510 511 514 517 518 520 523 524 528 534 543 550 551 568 572 586 587 SPIS TRE¥CI Rozdziaï 19. Programowanie z uĝyciem bazy danych Access i SQL Server Uwaga dotyczÈca przykïadowej bazy danych Northwind Projektowanie warstwy dostÚpu do danych Praca z bazami danych Microsoft Access Praca z bazami danych Microsoft SQL Server Rozbudowa bazy danych Access do SQL Server Dalsze pozycje do czytania Przykïad praktyczny Wnioski Rozdziaï 20. Techniki przetwarzania danych Struktury danych Excela Funkcje przetwarzania danych Zaawansowane funkcje Wnioski Rozdziaï 21. Zaawansowane techniki tworzenia wykresów Podstawowe techniki Techniki VBA Wnioski Rozdziaï 22. Sterowanie innymi aplikacjami Office Podstawy Modele obiektowe gïównych aplikacji Office Dalsze pozycje do czytania Przykïad praktyczny Wnioski Rozdziaï 23. PoïÈczenie Excela i Visual Basica 6 Witaj Ăwiecie ActiveX DLL Dlaczego uĝywaÊ VB6 ActiveX DLL w projektach Excel VBA? In-process kontra out-of-process Automatyzacja Excela z VB6 EXE Dodatki COM Dodatek COM Witaj Ăwiecie Projektant dodatków (Add-in Designer) Instalacja Zdarzenia AddinInstance Obsïuga paska poleceñ Dlaczego warto uĝywaÊ dodatku COM? Automatyzacja dodatków Przykïady praktyczne Wnioski 9 589 590 594 603 613 618 619 629 631 637 648 656 657 674 679 681 695 707 707 708 710 725 739 740 748 748 752 755 757 759 762 764 767 779 10 SPIS TRE¥CI Rozdziaï 24. Excel i VB.NET Podstawy platformy .NET Visual Basic.NET Usuwanie bïÚdów Uĝyteczne narzÚdzia programistyczne Automatyzacja Excela Zasoby w rozwiÈzaniach .NET Pobieranie danych za pomocÈ ADO.NET Dalsze pozycje do czytania Dodatkowe narzÚdzia programistyczne Fora Przykïad praktyczny — narzÚdzie raportujÈce PETRAS w technologii .NET Wnioski Rozdziaï 25. Tworzenie zarzÈdzanych dodatków COM za pomocÈ VB.NET Wybór narzÚdzi programistycznych Tworzenie dodatku zarzÈdzanego COM Budowanie interfejsu uĝytkownika Tworzenie zarzÈdzanych dodatków automatyzacji RÚczne rejestrowanie i wyrejestrowanie dodatków COM Uĝywanie klas w VB.NET Uĝywanie klasycznego ADO w celu eksportu danych do Excela Opakowywanie dodatków COM Blogi zwiÈzane z tematem Dodatkowe narzÚdzia programistyczne Przykïad praktyczny — narzÚdzie raportujÈce PETRAS w technologii .NET Wnioski Rozdziaï 26. Tworzenie rozwiÈzañ Excela za pomocÈ Visual Studio Tools for Office System (VSTO) Co to jest VSTO? Kiedy powinniĂmy uĝywaÊ VSTO? Praca z dodatkami VSTO Praca z szablonami VSTO i rozwiÈzaniami w postaci skoroszytu Implementacja i bezpieczeñstwo Inne pozycje do czytania Róĝne portale i blogi Dodatkowe narzÚdzia programistyczne Wnioski 782 783 807 816 819 826 827 832 833 834 834 848 852 853 870 888 899 900 906 910 919 920 921 929 932 939 941 961 970 979 979 980 980 Rozdziaï 27. XLL i API C SPIS TRE¥CI Dlaczego warto tworzyÊ funkcje arkusza na bazie XLL? Tworzenie projektu XLL w Visual Studio Struktura XLL Typy danych XLOPER i OPER Funkcja Excel4 Powszechnie uĝywane funkcje API C XLOPER i zarzÈdzanie pamiÚciÈ Rejestrowanie i wyrejestrowywanie wïasnych funkcji arkusza Przykïadowa funkcja aplikacji Debugowanie funkcji arkusza Róĝne tematy Dodatkowe ěródïa informacji Wnioski Rozdziaï 28. Excel i usïugi sieciowe Usïugi sieciowe Przykïad praktyczny Wnioski Rozdziaï 29. Zapewnianie pomocy, bezpieczeñstwa, pakowanie i rozpowszechnianie Zapewnianie pomocy Bezpieczeñstwo Pakowanie Rozpowszechnianie Wnioski Skorowidz 11 983 984 989 997 1002 1004 1005 1006 1009 1011 1012 1013 1014 1015 1022 1031 1033 1042 1046 1051 1052 1055 R O Z D Z I A ’ 1 0 . WSTk¿KA W OFFICE 2007 Od czasu wydania pakietu Office 2007 RibbonX i jego interfejs uĝytkownika (WstÈĝka) staïy siÚ tematem czÚstych dyskusji w spoïecznoĂci programi- stów Office. Jak moĝna siÚ spodziewaÊ po technologii w wersji 1.0, Rib- bonX nakïada pewne ograniczenia, które uniemoĝliwiajÈ wykorzystanie w peïni moĝliwoĂci drzemiÈcych w tym interfejsie uĝytkownika. Jednak nawet na tak wczesnym etapie powinniĂmy zrozumieÊ podstawowe zaïoĝenia nowego interfejsu, aby budowaÊ wïasne, doskonale zaprojektowane interfejsy uĝytkownika. Innym wyzwaniem jest równoczesna codzienna praca z paskiem poleceñ oraz technologiami interfejsu uĝytkownika RibbonX. Zagadnienie to obej- muje tworzenie rozwiÈzañ, które bÚdÈ dziaïaïy z obydwoma interfejsami uĝytkownika, czyli tzw. aplikacji niezaleĝnych od wersji Excela. W tym roz- dziale zostanÈ przedstawione najlepsze praktyki w zakresie projektowania WstÈĝki i programowania RibbonX, natomiast aplikacje dziaïajÈce nieza- leĝnie od wersji Excela omówimy w rozdziale 11. Tu zajmiemy siÚ takĝe pewnymi nieco bardziej skomplikowanymi problemami aplikacji dyktator- skich. BazujÈcy na tabelach proces budowania interfejsu uĝytkownika paska poleceñ jest szeroko akceptowany i uznawany za standard. Oznacza to, ĝe do tego celu powinniĂmy równieĝ uĝywaÊ technologii RibbonX i ten temat teĝ bÚdzie 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È ĂciĂle powiÈzane. Nowy format zapisu plików pozwala takĝe na tworzenie dokumentów Office i manipulowanie nimi bez uĝywania któregokolwiek z programów wchodzÈcych w skïad pakietu Office. W rozdziale przedstawimy takĝe krótkie wprowadzenie do formatu plików Open XML. Podstawowe zaïoĝenia RibbonX Przez ponad dekadÚ paski poleceñ byïy jedynÈ technologiÈ interfejsu uĝyt- kownika, której obsïugÈ musieliĂmy siÚ zajmowaÊ. Wraz z wprowadzeniem RibbonX otrzymujemy nowÈ technologiÚ oraz nowe zaïoĝenia stanowiÈce podstawÚ interfejsu uĝytkownika, które ïÈcznie majÈ ogromny wpïyw na 274 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 nasz sposób pracy. Na pierwszy rzut oka nauka i manipulowanie RibbonX moĝe wydawaÊ siÚ wyzwaniem. Jednak z naszego doĂwiadczenia 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 zostaïy juĝ ustalone i cechy charak- terystyczne technologii RibbonX moĝna podsumowaÊ w nastÚpujÈcy sposób. Q Opcje pozwalajÈce na dostosowanie do wïasnych potrzeb okreĂlamy w trakcie projektowania interfejsu. SÈ zdefiniowane za pomocÈ XML i przechowywane jako oddzielna czÚĂÊ formatu pliku XML. Jednak wiÚk- szoĂÊ atrybutów kontrolek moĝe byÊ zmodyfikowana w trakcie dziaïania aplikacji przy uĝyciu VBA (np. wïÈczony/wyïÈczony, etykieta, widocz- noĂÊ itd.). Q Po otworzeniu skoroszytu zawierajÈcego dostosowane do wïasnych potrzeb opcje WstÈĝki Excel automatycznie odczytuje definicjÚ XML WstÈĝki, a nastÚpnie przystÚpuje do tworzenia WstÈĝki okreĂlonej przez wy- mienione opcje. Do zainicjalizowania tego procesu nie jest wymagany ĝa- den kod VBA. W rzeczywistoĂci nawet nie ma sposobu, aby uniemoĝliwiÊ inicjalizacjÚ tego procesu. Q Kiedy skoroszyt zostanie otwarty i jest aktywny, dostosowane do wïa- snych potrzeb opcje WstÈĝki zostajÈ zastosowane i sÈ widoczne. Po za- mkniÚciu skoroszytu dostosowane do wïasnych potrzeb opcje WstÈĝki sÈ automatycznie usuwane. Q Po wczytaniu dodatku dowolnego rodzaju jego dostosowane do wïasnych potrzeb opcje WstÈĝki zostajÈ zastosowane i widoczne sÈ we wszystkich otwartych skoroszytach. Q Na wïasnej WstÈĝce wszystkie wbudowane kontrolki WstÈĝki mogÈ byÊ wïÈczone, 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 bÚdÈcy czÚĂciÈ pakietu Office. Wraz z wydaniem Office 2007 otrzymujemy nowy format pliku caïkowicie bazujÈcy na XML, czyli format Open XML. Format ten zapewnia moĝliwoĂÊ pracy z dokumentami Office oraz ich treĂciÈ bez koniecznoĂci uĝywania którejkolwiek z aplikacji wchodzÈcych w skïad pakietu Office. DziÚki temu zwiÚksza siÚ liczba rozwiÈzañ alternatywnych sïuĝÈcych do generowania dokumentów Office po stronie serwera. Znacznemu uïatwie- niu ulega równieĝ proces wymiany danych miÚdzy róĝnymi systemami oraz dokumentami Office. WPROWADZENIE DO FORMATU PLIKU OPEN XML W OFFICE 2007 275 Kaĝdy dokument Office bazujÈcy na Open XML jest przechowywany w archiwum ZIP. Wspomniane archiwum stanowi rodzaj pojemnika zawie- rajÈcego zarówno dane uĝytkownika 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È wielkoĂciÈ pliku, w porównaniu do pliku w formacie binarnym. Microsoft twierdzi, ĝe wielkoĂÊ pliku moĝna zredukowaÊ nawet o 75 , choÊ wedïug naszych obserwacji typowa wielkoĂÊ redukcji mieĂci siÚ w okolicach 60 – 65 . Poniewaĝ dokument Open XML skïada 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 wzglÚdu na zniszczone bÈdě uszkodzone pliki. Powszechnie spotykanym wymaganiem jest, aby tworzone rozwiÈzania wspóïdziaïaïy z róĝnymi wersjami Excela. Rodzi to pytania o format pliku, który powinien zostaÊ zastosowany. RozwiÈzaniem zapewniajÈcym najwiÚkszÈ elastycznoĂÊ podczas wymiany danych pozostaje format .xls (w Excelu 2007 nosi nazwÚ Skoroszyt programu Excel 97 – 2003). Jednak moĝliwe jest uĝycie formatu pliku Open XML w starszych wersjach pakietu Office, o ile kompu- tery docelowe majÈ zainstalowany Pakiet zgodnoĂci formatu plików pakietu Microsoft Office dla programów Word, Excel i PowerPoint 2007. Pakiet jest dostÚpny bezpïatnie na witrynie internetowej firmy Microsoft1. Warto zwró- ciÊ uwagÚ, ĝe Office 2000 moĝe konwertowaÊ pliki Open XML na format binarny tylko za poĂrednictwem Eksploratora Windows. Struktura formatu pliku Open XML Format pliku Open XML moĝe zostaÊ opisany jako struktura skïadajÈca siÚ z bloków stanowiÈcych elementy skïadowe (czyli poszczególne czÚĂci) oraz poïÈczeñ (zwiÈzków) wykorzystywanych do skomponowania, zapakowania, rozpowszechniania i generowania zawartoĂci dokumentu. JÈdrem formatu pliku sÈ schematy XML oraz archiwum ZIP. Podczas zapisu dokumentu Office w formacie Open XML nastÚpuje utworzenie archiwum ZIP zawierajÈcego nastÚpujÈce komponenty. Q CzÚĂci — wiÚkszoĂÊ elementów „czÚĂci” to pliki XML opisujÈce dane apli- kacji i metadane. ModuïowoĂÊ pozostaje najwaĝniejszÈ cechÈ charakte- rystycznÈ formatu pliku, poniewaĝ pozwala na zlokalizowanie okreĂlonej czÚĂci i bezpoĂredniÈ pracÚ z danÈ czÚĂciÈ. 1 Pakiet moĝna pobraÊ ze strony http://www.microsoft.com/downloads/details.aspx?FamilyID= 941b3470-3ae9-4aee-8f43-c6bb74cd1466 displaylang=pl — przyp. tïum. 276 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 Q Elementy rodzaju treĂci — opisujÈ, jakiego rodzaju pliki sÈ przechowy- wane w dokumencie. Przykïadowo image/png oznacza plik graficzny w formacie PNG. Informacja ta pozwala aplikacjom na okreĂlenie zawar- toĂci dowolnej czÚĂci pakietu i prawidïowe przetworzenie jej zawartoĂci. Q ZwiÈzki — opisujÈ, jak zbiór elementów dokumentu razem tworzy postaÊ dokumentu. Podczas gdy „czÚĂci” tworzÈ treĂÊ pliku, zwiÈzki opisujÈ spo- sób, w jaki czÚĂci ze sobÈ wspóïpracujÈ. Przeanalizujmy samodzielnie zawartoĂÊ pliku Excela. Do tej operacji potrzebny bÚdzie program obsïugujÈcy archiwa ZIP, np. WinZip bÈdě 7-Zip. Pierwszym krokiem jest utworzenie pliku Excela, umieszczenie w nim wykresu, a nastÚpnie zapisanie pliku pod nazwÈ PED.xlsm. Do kolejnego kroku konieczne bÚdzie uĝycie narzÚdzia Office 2007 Custom UI Editor, które moĝna pobraÊ bezpïatnie z witryny Microsoft2. Otwórz plik w narzÚdziu Custom UI Editor i do skoroszytu dodaj wïasne opcje RibbonX przedsta- wione w listingu 10.1. LISTING 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= Wïasna karta group id= customGroup label= Wïasna grupa button id= customButton label= Wïasny przycisk imageMso= HappyFace size= large onAction= Callback / /group /tab /tabs /ribbon /customUI Na koñcu otwórz plik PED.xlsm w programie obsïugujÈcym archiwa ZIP. ZawartoĂÊ pliku powinna byÊ podobna do pokazanej na rysunku 10.1. Niektóre programy obsïugujÈce archiwa ZIP mogÈ wymagaÊ tymczasowej zmiany rozszerzenia pliku skoroszytu na .zip, aby otworzenie archiwum byïo moĝliwe. 2 NarzÚdzie jest dostÚpne na stronie http://openxmldeveloper.org/articles/CustomUIeditor.aspx — przyp. tïum. WPROWADZENIE DO FORMATU PLIKU OPEN XML W OFFICE 2007 277 RYSUNEK 10.1. ZawartoĂÊ archiwum ZIP, pliki w formacie Open XML Jak pokazano na rysunku 10.1, archiwum pliku Excela moĝe skïadaÊ siÚ z duĝej liczby katalogów i plików XML. Umoĝliwia to pracÚ z poszczegól- nymi czÚĂciami pliku, ale omówienie wszystkich elementów archiwum wykra- cza poza zakres tematyczny tego rozdziaïu. Plik Excela (PED.xlsm) oraz archi- wum ZIP (PED.zip) umieszczono w katalogu KoncepcjeRozdzial10 na pïycie CD doïÈczonej do ksiÈĝki. WSKAZÓWKA Jeĝeli masz dostÚp do oprogramowania Visual Studio 2008 Professional lub nowszej wersji oraz zainstalowany bezpïatny pakiet Microsoft Visual Tools for the Office System Power Tools, moĝesz przeglÈdaÊ i edytowaÊ opcje WstÈĝki wewnÈtrz plików Excela, uĝywajÈc do tego celu narzÚdzia Open XML Editor. Po dodaniu do skoroszytu lub dodatku opcji dostosowujÈcych WstÈĝkÚ do wïa- snych potrzeb wewnÈtrz struktury pliku Open XML zostaje utworzony kata- log o nazwie customUI. W nim znajduje siÚ plik XML o nazwie customUI.xml przechowujÈcy wszystkie informacje potrzebne do dostosowania WstÈĝki do wïasnych potrzeb. Podczas uaktualniania opcji WstÈĝki plik customUI.xml jest 278 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 odpowiednio aktualizowany. Wszystkie opcje dostosowania WstÈĝki mody- fikowane za pomocÈ narzÚdzia Custom UI Editor majÈ wpïyw na odpowiedni fragment customUI w pliku Excela. W dalszej czÚĂci rozdziaïu omówimy dostosowywanie przy uĝyciu VBA opcji WstÈĝki bazujÈcych na tabelach. Projektowanie WstÈĝki oraz najlepsze praktyki programowania Projektowanie Ribbon Wiele ogólnych zaleceñ dotyczÈcych podejĂÊ do programowania i przedsta- wionych w rozdziale 8. moĝe byÊ równieĝ zastosowanych podczas projek- towania WstÈĝki. W czasie pisania tej ksiÈĝki Excel 2007 jest dostÚpny do- piero od dwóch lat i nadal ma stosunkowo niewielki udziaï w rynku. Wskutek tego w spoïecznoĂci programistów Excela dopiero powstajÈ najlep- sze praktyki z zakresu pracy ze WstÈĝkÈ. Przedstawione poniĝej zalecenia zostaïy sformuïowane na podstawie naszych doĂwiadczeñ zdobytych podczas tworzenia rzeczywistych aplikacji i powinny byÊ traktowane jedynie jako wstÚp do najlepszych praktyk pro- jektowania i programowania WstÈĝki. Zawsze wtedy, kiedy wykorzystywa- ny jest graficzny interfejs uĝytkownika, najlepsze podejĂcie to zachowanie prostoty i przejrzystoĂci. Projektowanie w celu obsïugi procesów roboczych NajwiÚkszym wyzwaniem podczas projektowania wïasnej WstÈĝki jest utworzenie takiego interfejsu, który faktycznie bÚdzie wspomagaï procesy robocze. Oznacza to, ĝe musimy zidentyfikowaÊ wszystkie procesy robocze danego rozwiÈzania i zaimplementowaÊ je w projekcie WstÈĝki. Trzeba tak- ĝe okreĂliÊ elementy dla kaĝdego procesu roboczego, w którym majÈ byÊ one zaimplementowane w postaci hierarchicznej struktury. W teorii osiÈgniÚcie wymienionych celów projektowych moĝe byÊ pro- ste, jednak w praktyce podczas projektowania WstÈĝki zwykle bÚdziemy zmuszeni do stosowania kompromisów. Warto spojrzeÊ na przykïadowy pro- jekt WstÈĝki, który utworzyliĂmy dla rozwiÈzania sïuĝÈcego do monitorowa- nia wydatków budĝetowych w róĝnych dziaïach, projektach i dla odmiennych klientów (rysunek 10.2). RYSUNEK 10.2. Projekt WstÈĝki PROJEKTOWANIE RIBBON 279 W powyĝszym projekcie zidentyfikowaliĂmy cztery gïówne poziome procesy robocze, które nastÚpnie zostaïy podzielone na cztery oddzielne grupy na WstÈĝce. Oto one. 1. Data Selection, który okreĂla parametry identyfikujÈce ĝÈdane dane. 2. Data Acquisition pozwala na wskazanie ěródïa danych, które bÚdzie uĝyte do pobierania danych. 3. Reports okreĂla ĝÈdane raporty i pozwala na ich utworzenie. 4. Distribution and Publishing wysyïa raport do ustalonej liczby odbior- ców lub publikuje raport za pomocÈ usïugi Microsoft Office SharePoint Service (MOSS). Na rysunku 10.2 pokazano równieĝ, ĝe wewnÈtrz kaĝdego procesu roboczego zidentyfikowaliĂmy elementy niezbÚdne do zaimplementowania w pionowej hierarchicznej strukturze. Uĝywanie karty Dodatki Z naszego doĂwiadczenia wynika, ĝe karta Dodatki jest lokalizacjÈ zalecanÈ dla interfejsu uĝytkownika dodatków ogólnych. Stosowanie karty Dodatki dla prostych interfejsów narzÚdzi pozwala na ograniczenie liczby wyĂwietlanych kart i ogólne oczyszczenie interfejsu uĝytkownika Excela. Karta Dodatki powinna byÊ uĝywana, gdy dodatek wymaga wyĂwietle- nia tylko kilku kontrolek. Poniewaĝ dodatki tworzÈce jedynie pasek narzÚ- dziowy na podstawie interfejsu uĝytkownika sÈ automatycznie umieszczane pod kartÈ Dodatki, zachowujemy kontrolÚ nad tym, czy poszczególne dodatki mogÈ byÊ umieszczone w wymienionym miejscu. Wiele narzÚdzi firm zew- nÚtrznych, np. SnagIt, przeznaczonych do dziaïania w róĝnych wersjach Excela, celowo umieszcza pasek narzÚdziowy pod kartÈ Dodatki. Wspóïdzielenie wïasnych kart i grup przez wiele dodatków W wiÚkszoĂci przypadków tworzymy konkretne rozwiÈzania, z których kaĝde dodaje na WstÈĝce wïasne karty, grupy i kontrolki. Jednak w pewnych sy- tuacjach chcemy sprawiÊ, by elementy te byïy wspóïdzielone przez róĝne dodatki. Przykïadowo moĝemy mieÊ dodatek gïówny tworzÈcy podstawowÈ kartÚ, grupÚ i strukturÚ menu, do których inne powiÈzane dodatki bÚdÈ do- dawaïy wïasne elementy. Na rysunku 10.3 pokazano dodatek zawierajÈcy kartÚ, która ma byÊ wspóïdzielona przez róĝne dodatki. Kiedy zostanie wczytany powiÈzany z nim dodatek, wykorzysta wspóï- dzielonÈ kartÚ do umieszczenia wïasnej grupy kontrolek, co pokazano na rysunku 10.4. 280 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 RYSUNEK 10.3. Wspóïdzielona karta RYSUNEK 10.4. Kontrolki innego dodatku dodane do wspóïdzielonej karty Taka moĝliwoĂÊ moĝe byÊ uĝytecznym podejĂciem podczas tworzenia roz- wiÈzañ o duĝym stopniu skalowalnoĂci. Kluczowym atrybutem wymaganym do utworzenia wspóïdzielonej karty i zarzÈdzania niÈ jest atrybut namespace. Za kaĝdym razem gdy tworzymy wïasnÈ WstÈĝkÚ, uĝywamy przestrzeni nazw. Pierwszy wiersz we wszystkich plikach XML WstÈĝki zawiera odniesienie do przestrzeni nazw http://schemas.microsoft.com/ofğce/2006/01/customui, tak jak przedstawiono poniĝej: customUI xmlns= http://schemas.microsoft.com/office/2006/ ´01/customui Prefiks xmlns jest skrótem od XML NameSpace (przestrzeñ nazw XML). Firma Microsoft zdecydowaïa siÚ na uĝywanie adresów URL jako identyfi- katorów przestrzeni nazw we wszystkich definicjach XML WstÈĝki. Prze- strzeñ nazw pozwala na dostosowanie opcji WstÈĝki we wszystkich pro- gramach Office. W kolejnym przykïadzie utworzymy wïasnÈ przestrzeñ nazw pozwalajÈcÈ na identyfikacjÚ i dodawanie kontrolek z wielu plików do wïasnej karty. Ten rodzaj rozwiÈzania nosi nazwÚ karty wspóïdzielonej. RozwiÈzanie wspóïdzielÈce kartÚ wymaga przynajmniej dwóch plików Excela. W omawianym przykïadzie uĝyjemy dwóch dodatków. Pierwszy bÚdzie dziaïaï w charakterze gospodarza dla karty wspóïdzielonej, natomiast drugi umieĂci na karcie grupÚ wïasnych kontrolek. Na poczÈtek musimy utworzyÊ dodatek o nazwie Shared Tab.xlam i umieĂciÊ w nim definicjÚ XML WstÈĝki przedstawionÈ w listingu 10.2. Na poczÈtku kodu przedstawionego w listingu 10.2 tworzymy nowÈ przestrzeñ nazw nsPED. Do wïasnej karty dodaliĂmy równieĝ nowy atrybut idQ, który oznacza Qualified ID. WartoĂÊ atrybutu idQ karty poprzedzimy PROJEKTOWANIE RIBBON 281 LISTING 10.2. Definicja XML WstÈĝki 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= NarzÚdzia PED visible= 1 group id= rxgrpBasic label= NarzÚdzia 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 okreĂlenie w ten sposób wartoĂci atrybutu idQ umoĝliwiamy odwoïanie siÚ do danego obiektu karty z poziomu dowolnego pliku uĝywajÈcego naszej przestrzeni nazw. Pokazane tutaj podejĂcie podczas tworzenia karty wspóïdzielonej moĝe byÊ równieĝ zastosowane na wspóïdzielonych grupach bÈdě kontrolkach. NastÚpnym krokiem jest dodanie do moduïu kodu w dodatku globalnej procedury wywoïania zwrotnego, którÈ przedstawiono w listingu 10.3. Pro- cedura wywoïania zwrotnego Shared_Basic_Tools_Click uĝywa atrybutu tag wywoïujÈcej kontrolki w celu okreĂlenia przycisku, który spowodowaï wywoïanie zwrotne. LISTING 10.3. Procedura wywoïania zwrotnego w pierwszym dodatku Option Explicit Sub Shared_Basic_Tools_click(control As IRibbonControl) Const sMESSAGE As String = Chcesz Dim sActivity As String 282 ROZDZIA’ 10. WSTk¿KA W OFFICE 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 nastÈpi utworzenie karty NarzÚdzia 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. NastÚpnie do drugiego dodatku dodamy plik definicji XML WstÈĝki przedstawiony w listingu 10.4. LISTING 10.4. Definicja XML WstÈĝki 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= NarzÚdzia PED visible= 1 group id= rxgrpDistribution label= Dystrybucja button id= rxbtnEmailTeam label= WyĂlij e-mail do zespoïu screentip= WyĂlij e-mail do zespoïu. imageMso= AttachItem size= large tag= Email_Team onAction= Shared_Distribution_Click / button id= rxbtnEmailManager label= WyĂlij e-mail do menedĝera screentip= WyĂlij e-mail do menedĝera. 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ównujÈc definicjÚ XML WstÈĝki przedstawionÈ w listingu 10.4 z defini- cjÈ przedstawionÈ w listingu 10.3, zauwaĝamy, ĝe wspóïdzielÈ tÚ samÈ prze- strzeñ nazw nsPED oraz uĝywajÈ tego samego atrybutu idQ i nazw etykiety PROJEKTOWANIE RIBBON 283 karty wspóïdzielonej. Jest to wymagane do wspóïdzielenia karty przez wiele plików. Na koñcu drugi dodatek uzupeïnimy globalnÈ procedurÈ wywoïania zwrotnego, którÈ przedstawiono w listingu 10.5. LISTING 10.5. Procedura wywoïania 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 = wysïaÊ raport do czïonków zespoïu. Case Email_Manager : sActivity = wysïaÊ raport menedĝerowi. Case Publish_MOSS : sActivity = opublikowaÊ raport poprzez MOSS. End Select MsgBox sMESSAGE sActivity End Sub Po wczytaniu dodatków kontrolki WstÈĝki utworzone przez obydwa dodat- ki zostanÈ wyĂwietlone na tej samej karcie wspóïdzielonej NarzÚdzia PED, którÈ pokazano na rysunku 10.4. Oba utworzone dodatki moĝna takĝe wczytaÊ niezaleĝnie. Kaĝdy z nich ma moĝliwoĂÊ utworzenia karty wspóï- dzielonej i umieszczenia na niej kontrolek. Jednak to prowadzi do maïego bïÚdu. Poniewaĝ na naszej karcie wspóïdzielonej brakuje rodzimego mechani- zmu kontroli sekwencji grup, kolejnoĂÊ wyĂwietlania na niej grup bÚdzie zaleĝaïa od kolejnoĂci otwierania dodatków korzystajÈcych z tej karty wspóï- dzielonej. Najlepszym rozwiÈzaniem tego problemu bÚdzie uĝycie pliku gïów- nego kontrolujÈcego kolejnoĂÊ wczytywania powiÈzanych z nim plików. Dodatek utworzony w tym przykïadzie zostaï zamieszczony w katalogu KoncepcjeRozdzial10 na pïycie CD doïÈczonej do ksiÈĝki. Atrybut keytip SpotkaliĂmy siÚ juĝ z pewnymi imponujÈcymi rozwiÈzaniami WstÈĝki, w któ- rych nie dostarczono ĝadnych atrybutów keytip. To powaĝne ograniczenie. NaciĂniÚcie klawisza Alt powoduje przejĂcie klawiatury do trybu nawigacji. W tym trybie uĝytkownicy mogÈ bardzo ïatwo poruszaÊ siÚ po WstÈĝce, po prostu naciskajÈc klawisze na klawiaturze. NajwiÚkszym problemem z atrybutem keytip nie jest proces jego doda- wania do definicji XML WstÈĝki — to bardzo ïatwe zadanie. Problemem jest okreĂlenie odpowiednich klawiszy do wykorzystania. Tak wiele kombi- nacji klawiszy juĝ wykorzystano we wbudowanych funkcjach Excela, ĝe niezbyt duĝo pozostaïo do wyboru. W aplikacjach dyktatorskich bÚdzie to znacznie mniejszy problem, ale w dodatkach ogólnych i skoroszytach znalezienie dobrego rozwiÈzania moĝe byÊ doĂÊ trudne. 284 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 ZarzÈdzanie wïasnymi obrazami kontrolek Pakiet Office 2007 jest dostarczany z duĝÈ iloĂciÈ wbudowanych obrazów, które moĝna wykorzystaÊ we wïasnych kontrolkach. Dlatego teĝ przed pod- jÚciem decyzji o uĝyciu wïasnych obrazów warto przejrzeÊ te, które dostar- czono w standardzie. Stosowanie wbudowanych obrazów pomaga równieĝ w zachowaniu znanego wyglÈdu interfejsu uĝytkownika. Zamiast np. uĝywaÊ wïasnego obrazu dla przycisku Drukuj, naleĝy skorzystaÊ z dostarczonego standardowo przez aplikacjÚ. Stosowanie wielu wïasnych obrazów moĝe mieÊ negatywny wpïyw na wydajnoĂÊ aplikacji. Microsoft udostÚpnia do pobrania plik Excela o nazwie Office2007Icons Gallery.xlsm. Powoduje on umieszczenie na karcie Deweloper zestawu kolekcji obrazów, które uïatwiajÈ odszukanie nazw obrazów wbudowanych w pakiet w celu ich uĝycia we wïasnych interfejsach uĝytkownika RibbonX. Inny uĝyteczny plik do pobrania to 2007OfficeControlIDsExcel2007.exe; w nim znajdziemy listÚ identyfikatorów dla wszystkich wbudowanych kon- trolek. Jeĝeli postanowisz, ĝe konieczne jest zastosowanie wïasnych obrazów, wówczas zalecanym formatem pliku jest PNG. Silnik graficzny WstÈĝki zo- staï zaprojektowany do pracy z obrazami w peïnej palecie kolorów (24 bi- ty), która majÈ równieĝ kanaï alfa okreĂlajÈcy przezroczystoĂÊ kaĝdego pik- sela. Poniewaĝ format PNG obsïuguje kanaï alfa i pozwala na zachowanie wzglÚdnie maïej wielkoĂci plików, bÚdzie najlepszym wyborem. Zalecana wiel- koĂÊ wïasnych ikon to 16 na 16 pikseli (maïe) lub 32 na 32 piksele (duĝe). Za pomocÈ narzÚdzia Custom UI Editor moĝna dodaÊ wïasne obrazy do skoroszytów, ale nie moĝna siÚ do nich odwoïaÊ w pliku definicji XML WstÈĝki. Oznacza to koniecznoĂÊ uĝycia oddzielnych plików obrazów. W li- stingu 10.6 przedstawiono definicjÚ XML WstÈĝki korzystajÈcÈ z obrazów w formacie PNG za pomocÈ atrybutu getImage. LISTING 10.6. Definicja XML WstÈĝki dla grafiki w formacie PNG customUI xmlns= http://schemas.microsoft.com/office/2006/01/customui ribbon startFromScratch= false tabs tab id= rxtabPED label= NarzÚdzia PED visible= 1 group id= rxgrpPED label= Zestaw narzÚdzi PED visible= 1 button id= rxbtnReport label= Raport screentip= Utwórz raport. getImage= GetImage size= large onAction= rxbtnReport_Click / /group /tab /tabs /ribbon /customUI PROJEKTOWANIE RIBBON 285 ProcedurÚ wywoïania zwrotnego dla atrybutu getImage przedstawiono w listingu 10.7. Jedyny problem z formatem pliku PNG polega na tym, ĝe musimy mieÊ wïasne rozwiÈzanie, aby wczytaÊ obrazy w tym formacie. Wynika to z faktu, ĝe wbudowana w Excel 2007 funkcja LoadPicture nie obsïuguje formatu PNG. W listingu 10.7 uĝyliĂmy wïasnej funkcji Load ´PictureGDI, która pobiera jeden argument — peïnÈ ĂcieĝkÚ dostÚpu i nazwÚ pliku PNG przeznaczonego do wczytania. LISTING 10.7. Wywoïanie zwrotne dla atrybutu getImage Sub GetImage(control As IRibbonControl, ByRef returnedVal) Set returnedVal = _ LoadPictureGDI(ThisWorkbook.Path Report.png ) End Sub Przedstawiona powyĝej funkcja uĝywa 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 rozdziaïu. Jednak kod wïasnej funkcji wczytujÈcej obrazy PNG umieĂcili- Ămy w skoroszycie Load PNG pictures.xlsm znajdujÈcym siÚ w katalogu KoncepcjeRozdzial10 na pïycie CD doïÈczonej do ksiÈĝki. Uĝywanie globalnych procedur wywoïañ zwrotnych Uĝycie globalnych procedur wywoïañ zwrotnych pozwala na jednoczesne obsïuĝenie wielu obiektów kontrolek. Gdy pojedyncza procedura wywoïañ zwrotnych obsïuguje wiele powiÈzanych obiektów kontrolek, kod jest bar- dziej strukturalny, a jego obsïuga wymaga mniejszej iloĂci czasu. W definicji XML WstÈĝki przedstawionej w listingu 10.8 atrybutom onAction wszystkich trzech przycisków przypisano tÚ samÈ procedurÚ wywoïañ zwrotnych o na- zwie PED_Click. LISTING 10.8. Uĝywanie jednej procedury wywoïania zwrotnego do obsïugi kilku obiektów kontrolek customUI xmlns= http://schemas.microsoft.com/office/2006/01/customui ribbon startFromScratch= false tabs tab id= rxtabPED label= NarzÚdzia PED visible= 1 group id= rxgrpPED label= Zestaw narzÚdzi PED visible= 1 button id= rxbtnImportData label= Import danych screentip= Import danych. imageMso= DatabaseAccessBackEnd size= large 286 ROZDZIA’ 10. WSTk¿KA W OFFICE 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 wywoïania zwrotnego PED_Click uĝywa atrybutu tag wywoïu- jÈcej kontrolki w celu okreĂlenia przycisku, który spowodowaï wywoïanie procedury. ProcedurÚ obsïugi przedstawiono w listingu 10.9. LISTING 10.9. Wspólna procedura wywoïania 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 Uniewaĝnianie Uniewaĝnianie jest procesem intensywnie wykorzystujÈcym zasoby i pod- czas jego uĝywania naleĝy zachowaÊ ostroĝnoĂÊ. Gdy tylko bÚdzie to moĝ- liwe, warto uniewaĝniaÊ okreĂlone kontrolki zamiast caïej WstÈĝki, gdyĝ to drugie podejĂcie ma bardzo negatywny wpïyw na wydajnoĂÊ aplikacji. Uniewaĝnianie kontrolek nie powoduje ich ponownego wczytania, a jedynie odĂwieĝenie. Wydaje siÚ, ĝe w wywoïaniu getEnabled bieĝÈcej wersji WstÈĝki ist- nieje bïÈd. Jeĝeli do dynamicznego wïÈczania lub wyïÈczania okreĂlonych kontrolek WstÈĝki uĝyjesz wywoïania zwrotnego getEnabled, wywoïanie zwrotne moĝe nie zostaÊ prawidïowo wywoïane, o ile nie nastÈpi uniewaĝ- nienie caïej WstÈĝki zamiast poszczególnych kontrolek. PROJEKTOWANIE RIBBON 287 Spójrzmy bliĝej na proces uniewaĝniania w definicji XML WstÈĝki i jego wymagania w VBA. Przede wszystkim potrzebujemy zmiennej VBA, która przedstawia obiekt IRibbonUI. Aby jÈ otrzymaÊ, musimy okreĂliÊ procedurÚ wywoïania zwrotnego dla atrybutu onLoad, co przedstawiono w listingu 10.10. LISTING 10.10. Definicja XML WstÈĝki sïuĝÈca do uniewaĝniania 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= WyĂwietl godzinÚ. imageMso= DateAndTimeInsert size= large onAction= rxbtn_Invalidate_Click / /group /tab /tabs /ribbon /customUI W powyĝszym przykïadzie podczas kaĝdego klikniÚcia przycisku odĂwie- ĝamy datÚ i godzinÚ, które sÈ wyĂwietlane przez kontrolkÚ przycisku. Dlatego teĝ potrzebujemy procedury wywoïania zwrotnego uniewaĝniajÈcej kon- trolkÚ przycisku, tak aby byïo moĝliwe odĂwieĝenie jej zawartoĂci. Ponadto potrzebna jest procedura wywoïania zwrotnego sïuĝÈca do wyĂwietlenia przez kontrolkÚ przycisku bieĝÈcej daty i godziny. W listingu 10.10 uĝyliĂmy atrybutu getLabel do pobrania daty i godziny. Natomiast atrybut onAction jest wykorzystywany do uniewaĝniania kontrolki przycisku. Wywoïanie zwro- tne onLoad i dwa wywoïania zwrotne przycisku zostaïy przedstawione w lis- tingu 10.11. LISTING 10.11. Wywoïania zwrotne sïuĝÈce do uniewaĝniania przycisku Private m_rxRibbonUI As IRibbonUI Wywoïanie zwrotne dla customUI.onLoad. Sub rxRibbonUI_onLoad(Ribbon As IRibbonUI) Set m_rxRibbonUI = Ribbon End Sub Wywoïanie zwrotne dla rxbtnPED onAction. Sub rxbtn_Invalidate_Click(control As IRibbonControl) m_rxRibbonUI.InvalidateControl control.ID End Sub Wywoïanie zwrotne dla rxbtnPED getLabel. 288 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 Sub rxbtn_GetTime(control As IRibbonControl, ByRef returnedValue) returnedValue = CStr(Now()) End Sub Przykïadowy plik zawierajÈcy ten kod znajduje siÚ w katalogu Koncepcje Rozdzial10 na pïycie CD doïÈczonej do ksiÈĝki. Microsoft opublikowaï takĝe dokument poruszajÈcy temat projektowania WstÈĝki. Moĝna go znaleěÊ po przeszukaniu witryny Microsoft pod kÈtem wyraĝenia 2007 Ofğce System Document: UI Style Guide for Solutions and Add-Ins. Dostosowanie opcji WstÈĝki bazujÈcej na tabeli Podczas budowania interfejsów uĝytkownika paska poleceñ proces bazujÈcy na tabeli jest faktycznie standardem, zwïaszcza w przypadku rozwiÈzañ o duĝym poziomie skalowalnoĂci. MoglibyĂmy zaïoĝyÊ, ĝe nie ma powodu, aby takie samo podejĂcie zastosowaÊ w trakcie dostosowywania opcji WstÈĝki. Jednak dwa gïówne ograniczenia techniczne uniemoĝliwiajÈ tworzenie WstÈĝki bazujÈcej na tabeli. Po pierwsze, w VBA nie mamy dostÚpu do mo- delu obiektowego w celu manipulowania WstÈĝkÈ. Po drugie, Ărodowisko uruchomieniowe VBA nie moĝe dostarczyÊ XML dla definicji WstÈĝki. Bardzo uĝyteczne byïoby zobaczenie, ĝe standardowe zdarzenie GetCustomUI zostaïo dodane do obiektu Workbook, a metoda CreateCustomerUI — do obiektu CommandBars. Uĝycie Visual Studio Tools for Office System (VSTO) pozwala na uzyska- nie dostÚpu do narzÚdzia Visual Designer dla WstÈĝki, które w tworzonym rozwiÈzaniu umoĝliwia wizualnÈ manipulacjÚ tym interfejsem. NarzÚdzie to na podstawie projektu graficznego automatycznie generuje plik definicji XML WstÈĝki, wywoïania zwrotne oraz inne komponenty interfejsu uĝyt- kownika. Innymi sïowy, VSTO oferuje peïnÈ obsïugÚ dostosowywania opcji WstÈĝki, podczas gdy VBA w ogóle nie dostarcza takiego wsparcia. Wobec takiego stanu rzeczy moĝemy zakïadaÊ, ĝe Microsoft zepchnÈï VBA do roli drugorzÚdnej. W kolejnym rozdziale przeanalizujemy moĝliwoĂci, jakie obecnie mamy do wykorzystania w poszczególnych plikach Excela podczas pracy z customUI XML przy uĝyciu VBA. Uzyskanie dostÚpu do elementu customUI XML Aby uzyskaÊ dostÚp do elementu customUI XML w pliku Excela, konieczna jest tymczasowa zmiana rozszerzenia na .zip, dostosowanie wybranych opcji, a nastÚpnie przywrócenie rozszerzeniu jego wartoĂci poczÈtkowej. Tymcza- sowa zmiana rozszerzenia pliku na .zip powoduje, ĝe skïadniki XML nowego formatu pliku stajÈ siÚ widoczne i dostÚpne z poziomu Eksploratora Windows, co pokazano na rysunku 10.5. W trakcie rÚcznego dodawania wïasnych opcji ZAAWANSOWANE ROZWIkZYWANIE PROBLEMÓW 289 na WstÈĝce za pomocÈ narzÚdzia Custom UI Editor automatycznie tworzo- ny jest katalog customUI. Musi on istnieÊ, jeĂli chcemy, aby wprowadzone modyfikacje opcji dziaïaïy prawidïowo. Jeĝeli katalog nie bÚdzie istniaï, musi zostaÊ zbudowany przed utworzeniem i zapisaniem w nim pliku customUI.xml. RYSUNEK 10.5. ZawartoĂÊ archiwum ZIP Wszystkie definicje XML WstÈĝki muszÈ znajdowaÊ siÚ w pliku customU- I.xml. Ponadto XML WstÈĝki musi speïniaÊ kryteria okreĂlone w schemacie definicji XML (XSD — XML Schema Definition) opisanym w pliku cu- stomUI.xsd. Plik XML to zwykïy plik tekstowy z rozszerzeniem .xml za- miast .txt. Z tego powodu pliki customUI.xml moĝemy tworzyÊ w taki sam sposób jak zwykïe pliki tekstowe. Jeĝeli masz wiedzÚ wystarczajÈcÈ do pracy z analizatorem skïadni XML, np. Microsoft XML, moĝe to byÊ lepszym rozwiÈzaniem. Podczas uaktualniania pliku customUI.xml znacznie prost- sze i szybsze jest nadpisanie bieĝÈcego pliku zupeïnie nowÈ wersjÈ zamiast modyfikacji zawartego w nim kodu. Z technicznego punktu widzenia moĝliwe jest utworzenie w Excelu narzÚ- dzia sïuĝÈcego do generowania definicji XML WstÈĝki na podstawie wpisów w tabeli skoroszytu, podobnie jak podczas budowania bazujÈcych na tabeli interfejsów uĝytkownika paska poleceñ. Znacznie lepszym rozwiÈzaniem bÚ- dzie opracowanie tego rodzaju narzÚdzia dla platformy .NET, poniewaĝ oferuje ona daleko idÈcÈ obsïugÚ pracy z XML oraz ze WstÈĝkÈ. Zaawansowane rozwiÈzywanie problemów WstÈĝka jest krytykowana za brak modelu obiektowego w VBA. Jednak zdecydowanie czÚĂciej wskazuje siÚ na fakt, ĝe oferuje elastycznoĂÊ znacz- nie mniejszÈ niĝ stary interfejs uĝytkownika paska poleceñ. Wiele poleceñ jest zbyt gïÚboko zaszytych w interfejsie uĝytkownika, zatem nie sÈ ïatwo dostÚpne. Z punktu widzenia procesu, polecenia nie sÈ dostÚpne w logiczny sposób. Wïasne rozwiÈzania WstÈĝki mogÈ pomóc w pokonaniu niektórych ogra- niczeñ. Natomiast inne ograniczenia, takie jak zwiÈzane z uĝywaniem kon- trolek dodatkowych, mogÈ byÊ rozwiÈzane tylko przy uĝyciu platformy .NET oraz narzÚdzi firm trzecich. Pozostaïe ograniczenia, np. brak moĝliwoĂci 290 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 tworzenia wïasnych bÈdě „pïywajÈcych” pasków narzÚdziowych, wynikajÈ z budowy architektury WstÈĝki i nie mogÈ byÊ pokonane. Poniĝej przed- stawiono omówienie niektórych kwestii, z którymi programiĂci borykajÈ siÚ najczÚĂciej, oraz sposoby ich rozwiÈzania. Tworzenie WstÈĝki dla aplikacji dyktatorskiej W aplikacji dyktatorskiej caïkowicie usuwamy domyĂlnÈ WstÈĝkÚ i zastÚ- pujemy jÈ wïasnÈ. Standardowym podejĂciem jest ustawienie w pliku definicji XML WstÈĝki atrybutu startFromScratch= true , co daje interfejs poka- zany na rysunku 10.6. RYSUNEK 10.6. Podstawowa WstÈĝka dla aplikacji dyktatorskiej GïównÈ zaletÈ takiego podejĂcia pozostaje brak koniecznoĂci uĝywania kodu VBA do ustawienia WstÈĝki po otworzeniu skoroszytu. Kod VBA nie bÚdzie takĝe wymagany do przywrócenia ustawieñ domyĂlnych interfejsu po za- mkniÚciu aplikacji. Wszystko jest wykonywane automatycznie podczas otwierania i zamykania skoroszytu. Na rysunku 10.6 widaÊ, ĝe Przycisk pakietu Office jest nadal dostÚpny, podobnie jak czÚĂÊ podstawowych poleceñ ïÈcznie z Paskiem narzÚdzi Szybki dostÚp (QAT, czyli Quick Access Toolbar). Dwa elementy pozosta- jÈce w przycisku Office po uĝyciu atrybutu startFromScratch= true to przyciski Opcje programu Excel oraz Zakoñcz program Excel. ByÊ moĝe w aplikacji dyktatorskiej trzeba bÚdzie uniemoĝliwiÊ dostÚp do wymienionych funkcji. Niestety, ukrycie dwóch omawianych kontrolek jest niemoĝliwe, wiÚc najlepszym rozwiÈzaniem pozostaje ich zablokowanie. Chociaĝ fizycznie sÈ umieszczone w menu Office, RibbonX nie pozwala na manipulacjÚ nimi z poziomu elementu officeMenu w definicji XML WstÈĝki. W zamian trzeba wykorzystaÊ element command, co przedstawiono w listingu 10.12. LISTING 10.12. Definicja XML WstÈĝki sïuĝÈca do wyïÈczenia przycisków Opcje programu Excel oraz Zakoñcz program Excel customUI xmlns= http://schemas.microsoft.com/office/2006/01/customui ... commands ZAAWANSOWANE ROZWIkZYWANIE PROBLEMÓW 291 command idMso= FileExit enabled= false / command idMso= ApplicationOptionsDialog enabled= false / /commands ... /customUI W przycisku Office nadal pozostajÈ dostÚpne opcje Nowy, Otwórz i Zapisz. Jeĝeli i one majÈ zostaÊ ukryte, musimy uĝyÊ elementu officeMenu, tak jak przedstawiono w listingu 10.13. LISTING 10.13. Definicja XML WstÈĝki sïuĝÈca 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 uĝy- wane dokumenty — znany równieĝ jako lista niedawno uĝywanych plików (MRU, czyli Most Recently Used). Ukrycia nie moĝemy przeprowadziÊ za pomocÈ definicji XML WstÈĝki, natomiast w VBA moĝna tylko wyczyĂciÊ listÚ, a nie usunÈÊ zupeïnie. Aby wyczyĂciÊ listÚ podczas uruchomienia apli- kacji, naleĝy uĝyÊ pierwszego bloku kodu przedstawionego w listingu 10.14. Podczas zamykania aplikacji trzeba przywróciÊ wartoĂÊ maksymalnej liczby dostÚpnych plików. Do tego celu wykorzystamy drugi fragment kodu przedstawiony w listingu 10.14. LISTING 10.14. Kod sïuĝÈcy do czyszczenia listy ostatnio uĝywanych plików Zmienna moduïu przechowujÈca maksymalnÈ liczbÚ ostatnio uĝywanych plików. Dim miNumberOfFiles As Integer ... With Application.RecentFiles Pobranie maksymalnej liczby dostÚpnych plików. miNumberOfFiles = .Maximum Wyczyszczenie listy. .Maximum = 0 End With ... Przywrócenie maksymalnej liczby ostatnio uĝywanych plików. Application.RecentFiles.Maximum = miNumberOfFiles Po uruchomieniu kodu zmodyfikowany Przycisk pakietu Office bÚdzie wyglÈ- daï, tak jak pokazano na rysunku 10.7. 292 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 RYSUNEK 10.7. Menu Office po modyfikacji Naleĝy pamiÚtaÊ, ĝe ustawienie wartoĂci zero maksymalnej liczbie ostatnio uĝywanych plików powoduje trwaïe wyczyszczenie listy MRU. Wielu uĝyt- kowników polega w swojej pracy na tej liĂcie i mogÈ byÊ niezadowoleni, jeĂli lista nie zostanie przywrócona. Mamy zatem problem. Lista MRU (jak rów- nieĝ maksymalna liczba plików znajdujÈcych siÚ na liĂcie) jest przechowywa- nia w nastÚpujÈcym kluczu rejestru Windows: HKEY_CURRENT_USERSoftwareMicrosoftOffice12.0ExcelFile MRU Z technicznego punktu widzenia, moĝliwe jest zachowanie, a nastÚpnie przy- wrócenie klucza rejestru, aby nie spowodowaÊ zniszczenia listy MRU uĝyt- kownika. Jednak doĂÊ powszechnÈ praktykÈ, zwïaszcza w Ărodowiskach korporacyjnych, jest uniemoĝliwianie programom dostÚpu do rejestru. Takie ograniczenie nie pozwala na zbudowanie naprawdÚ solidnego rozwiÈzania problemu trwaïego czyszczenia listy MRU. Zazwyczaj chcemy równieĝ usunÈÊ domyĂlne menu kontekstowe wyĂwie- tlane po klikniÚciu prawym przyciskiem myszy w skoroszycie. To zadanie jest bardzo ïatwe do wykonania za pomocÈ VBA, co przedstawiono w lis- tingu 10.15. LISTING 10.15. UsuniÚcie w Excelu 2007 menu kontekstowego wyĂwietlanego po klikniÚciu prawym przyciskiem myszy Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, _ ByVal Target As Range, _ Cancel As Boolean) Cancel = True End Sub NastÚpnie domyĂlne menu kontekstowe zastÚpujemy wïasnym paskiem poleceñ. W poprzednim zdaniu nie popeïniliĂmy pomyïki, mówiÈc „o pasku poleceñ”. Nawet w Excelu 2007 menu kontekstowe nadal jest takim samym paskiem poleceñ jak we wczeĂniejszych wersjach Excela. Wspomniane menu kontekstowe zostaïo wprawdzie rozbudowane o pewne funkcje dodatkowe, do których nie mamy dostÚpu, ale nadal pozostaje pas- ZAAWANSOWANE ROZWIkZYWANIE PROBLEMÓW 293 kiem poleceñ. W tworzonej aplikacji zastÚpujemy je wiÚc wïasnym paskiem poleceñ, uĝywajÈc poniĝszego wiersza kodu: Application.CommandBars( CustomMenu ).ShowPopup Moĝemy jedynie zgadywaÊ, ĝe Microsoft ma zamiar poïÈczyÊ tÚ czÚĂÊ inter- fejsu uĝytkownika Excela z nowym modelem WstÈĝki. Prawdopodobnie zabrakïo czasu, aby zrobiÊ to przed wprowadzeniem Excela 2007, ale wszystko moĝe siÚ zmieniÊ w przyszïych wersjach aplikacji. Po wprowadzeniu powyĝ- szych zmian pozostaïo tylko dostosowanie Excela w ten sam sposób, który przedstawiono w rozdziale 6. Ukrycie WstÈĝki W pewnych sytuacjach trzeba caïkowicie ukryÊ WstÈĝkÚ. Zadanie to moĝna przeprowadziÊ za pomocÈ VBA poprzez wykonanie w pierwszej kolejnoĂci makra przedstawionego w listingu 10.16. Aby przywróciÊ WstÈĝkÚ, naleĝy skorzystaÊ z VBA do wykonania drugiego makra XLM przedstawionego w li- stingu 10.16. LISTING 10.16. Ukrywanie i odkrywanie WstÈĝki Ukrycie WstÈĝki. Application.ExecuteExcel4Macro Show.Toolbar( Ribbon , False) Przywrócenie WstÈĝki. Application.ExecuteExcel4Macro Show.Toolbar( Ribbon , True) Na rysunku 10.8 pokazano wynik uĝycia powyĝszej techniki do ukrycia WstÈĝki. RYSUNEK 10.8. Interfejs uĝytkownika Excela z caïkowicie ukrytÈ WstÈĝkÈ 294 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 Dwie implikacje powyĝszej techniki wymagajÈ dalszych objaĂnieñ. Po pierw- sze, wykonanie wskazanego makra XLM w celu ukrycia WstÈĝki ma wpïyw na wszystkie otwarte skoroszyty w bieĝÈcej sesji Excela. Po drugie, technika opiera siÚ na obsïudze makr XLM w Excelu. XLM to jÚzyk makr uĝywany do tworzenia makr i aplikacji Excela przed wprowadzeniem VBA. MinÚïo juĝ ponad piÚtnaĂcie lat do oficjalnego zastÈpienia XLM przez VBA i zachodzi duĝe prawdopodobieñstwo, ĝe Microsoft zakoñczy obsïugÚ XLM w jednej z kolejnych wersji pakietu Office. Dlatego teĝ, stosujÈc powyĝszÈ technikÚ, nie moĝna mieÊ pewnoĂci, ĝe bÚdzie dziaïaïa w kolejnych wersjach Excela. OkreĂlenie wielkoĂci kontrolek comboBox, dropDown i editBox W pewnych sytuacjach trzeba kontrolowaÊ wielkoĂÊ kontrolki comboBox oraz powiÈzanych z niÈ kontrolek dropDown i editBox. W tym celu uĝywamy atrybutu sizeString, ale zamiast liczby, takiej jak 10 lub 20, podajemy ciÈg tekstowy zawierajÈcy maksymalnÈ liczbÚ znaków, które chcemy wyĂwie- tliÊ. Znaki uĝyte w tym ciÈgu tekstowym nie sÈ waĝne, natomiast czcionka zastosowana w kontrolce wpïywa na jej rzeczywistÈ szerokoĂÊ. JeĂli chcemy ograniczyÊ liczbÚ znaków wprowadzonych w kontrolce, moĝemy uĝyÊ 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. LISTING 10.17. Definicja XML WstÈĝki sïuĝÈca do ustawienia wielkoĂci kontrolki listy rozwijanej comboBox id= rxcboName label= Name: sizeString= xxxxxxx maxLength= 8 screentip= ProszÚ podaÊ imiÚ. onChange= rxcboName_OnChange / Nawigacja po kartach W rozwiÈzaniach z duĝÈ iloĂciÈ kart w interfejsie uĝytkownika skoroszytu lub z ukrytym paskiem kart moĝe wystÈpiÊ koniecznoĂÊ dostarczenia wïasnej funkcji sïuĝÈcej do nawigacji po kartach. W omawianym przykïadzie mamy szeĂÊ kart, z których jedna pozostaje ukryta. Dlatego teĝ musimy utworzyÊ listÚ arkuszy zawierajÈcÈ piÚÊ widocznych arkuszy. W omawianym przykïadzie uĝyjemy kontrolki dropDown zamiast combo ´Box gïównie dlatego, ĝe kontrolka comboBox pozwala uĝytkownikom na wprowadzanie nowych wpisów w kontrolce, a na to nie moĝemy siÚ zgodziÊ. ZAAWANSOWANE ROZWIkZYWANIE 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ĝ powinniĂmy dÈĝyÊ do tworzenia w peïni dynamicznych aplikacji, wiÈĝe siÚ to z kosztem, jakim jest koniecznoĂÊ napisania kodu dla wszelkich moĝliwych sytuacji. W rzeczywistych aplikacjach skïaniamy siÚ wiÚc do two- rzenia póïstaïych aplikacji, gdzie pewne elementy pozostajÈ staïe, natomiast inne sÈ dynamiczne. W ten sposób zbudowaliĂmy takĝe rozwiÈzanie w oma- wianym przykïadzie. Poniewaĝ dysponujemy ustalonÈ listÈ arkuszy, których nazwy nie ulegajÈ zmianie podczas dziaïania aplikacji, nie trzeba uniewaĝniaÊ kontrolki dropDown w trakcie dziaïania programu. Natomiast nazwy skoro- szytów nie zostaïy zapisane na staïe, co ma uïatwiÊ ich przyszïÈ obsïugÚ. Arkusz o nazwie Hidden pozostaje ukryty i dlatego zawsze powinien byÊ wykluczony z listy. Definicja XML WstÈĝki dla omawianego przykïadu zostaïa przedstawiona w listingu 10.18. Atrybutu getItemCount uĝyliĂmy w celu pobrania liczby nazw arkuszy, podczas gdy atrybut getItemLabel wypeïnia kontrolkÚ dropDown listÈ nazw. StosujÈc oba atrybuty, zyskujemy nieco bar- dziej dynamiczne rozwiÈzanie. LISTING 10.18. Definicja XML WstÈĝki sïuĝÈca do nawigacji miÚdzy 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 wywoïañ zwrotnych zostaïy przedstawione w listingu 10.19. Wywoïanie zwrotne rxdd_ItemCount zwraca liczbÚ arkuszy widocz- nych w skoroszycie. W ten sposób Excel zostaje poinformowany, ile razy powinien wykonaÊ wywoïanie zwrotne rxdd_ListItem. Wywoïanie to dodaje do kontrolki dropDown nazwÚ kaĝdego widocznego arkusza. Podczas pobierania nazwy zaznaczonego arkusza dodajemy 1 do indeksu listy prze- kazywanego do VBA. Wynika to z faktu, ĝe wartoĂci indeksu tablicy kolekcji arkuszy rozpoczynajÈ siÚ od jednego, podczas gdy VBA operuje na tablicach, których numeracja rozpoczyna siÚ od zera. 296 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 LISTING 10.19. Wywoïania zwrotne do nawigacji miÚdzy arkuszami Option Explicit Wywoïanie 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 Wywoïanie zwrotne dla rxddSheetNavigation getItemLabel. Sub rxdd_ListItem(control As IRibbonControl, index As Integer, _ ByRef returnedVal) Wypeïnienie kontrolki dropDown nazwami arkuszy. If mwkbNavigation.Worksheets(index + 1).Visible = _ xlSheetVisible Then returnedVal = mwkbNavigation.Worksheets(index + 1).Name End If End Sub Wywoïanie 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 DALSZE POZYCJE DO CZYTANIA 297 Po uruchomieniu skoroszytu nastÚpuje utworzenie nowej karty Nawigacja po arkuszach. Uĝytkownik moĝe przejĂÊ do dowolnego arkusza poprzez wybranie jego nazwy z listy wyĂwietlanej przez kontrolkÚ dropDown, co poka- zano na rysunku 10.9. RYSUNEK 10.9. Nawigacja po arkuszach Skoroszyt zawierajÈcy omówiony przykïad znajduje siÚ w katalogu KoncepcjeRozdzial10 na pïycie CD doïÈczonej do ksiÈĝki. Uĝywanie szablonów StosujÈc szablony, moĝna na etapie tworzenia aplikacji zaoszczÚdziÊ sporo czasu. NarzÚdzie Custom UI Editor znacznie uïatwia tworzenie i uĝywanie dostosowanych do wïasnych potrzeb szablonów XML WstÈĝki. 1. W narzÚdziu Custom UI Editor naleĝy utworzyÊ definicjÚ XML WstÈĝ- ki i upewniÊ siÚ, ĝe jest prawidïowo zbudowana. 2. NastÚpnie zawartoĂÊ XML trzeba skopiowaÊ do edytora tekstowego, takiego jak Notatnik, i zapisaÊ w katalogu Program FilesCustom UIEditor Samples jako plik z rozszerzeniem .xml. Na rysunku 10.10 pokazano wyglÈd menu Sample w narzÚdziu 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 ROZDZIA’ 10. WSTk¿KA W OFFICE 2007 RYSUNEK 10.10. Wïasne szablony w narzÚdziu Custom UI Editor Poniewaĝ WstÈĝka jest funkcjÈ dostÚpnÈ w caïym pakiecie Office, wiÚc nie ma ksiÈĝki poĂwiÚconej jedynie WstÈĝce w Excelu. Ta ksiÈĝka porusza te- mat dostosowania WstÈĝki do wïasnych potrzeb w aplikacjach Excel, Word i Access. Zostaïa 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 wyjĂcia do uzyskania wiÚkszej iloĂci informacji na temat formatu Open XML. Warto odwiedziÊ stronÚ http://msdn.microsoft.com/en-us/office/ aa905545.aspx. OpenXMLDeveloper.org Inna dobra witryna poĂwiÚcona Open XML to OpenXMLDeveloper.org dos- tÚpna pod adresem http://openxmldeveloper.org/default.aspx. WNIOSKI 299 The Office Fluent User Interface Devel
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Excel. Programowanie dla profesjonalistów. Wydanie II
Autor:
, , ,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


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