Interfejs na życzenie
A
A
A
rozmiar czcionki
Począwszy od wersji 97 aż do 2003, wszystkie kolejne pakiety Office pozwalały użytkownikom pisać własne makra za pomocą Visual Basic for Applications i przyporządkowywać je przyciskom dodatkowego lub jednego z ogólnych pasków narzędzi. Zwiększało to elastyczność pakietu - przycisk uruchamiający makro można było wstawić gdziekolwiek, przyporządkować mu napisaną funkcję i ozdobić dowolną ikoną.
W Office 2007 trochę się zmieniło. Nadal akceptowane są makra w VBA, ale pojawiły się ograniczenia dotyczące położenia i znaku graficznego przycisku, który można im przyporządkować. Stare menu i paski narzędzi, zaprojektowane do poprzednich wersji Office, zostaną wrzucone bezładnie na kartę Dodatki na wstążce menu z nowego pakietu razem ze swoimi ikonami. Co więcej, przyciski do nowych makr, rejestrowanych za pomocą tego samego mechanizmu, mogą się standardowo znaleźć tylko w dwóch miejscach - na wspomnianej karcie, albo na pasku Szybki dostęp. Na dodatek ikony do ich wyróżniania trzeba wybrać z niezbyt długiej listy, nie można już ozdabiać przycisków za pomocą własnej fantazji.
Aktualizacja
W momencie zastępowania starszego Worda wersją 2007 szablony zawierające makra zapisują się w plikach z rozszerzeniem .dotm zamiast .dot. W istocie są to dane skompresowane według formatu ZIP, w których paski narzędzi razem z przyciskami zostają zachowane w pliku attachedtoolbars.bin, a ich kod jest umieszczony w vbaproject.bin. Zwykle stare paski i przyciski lądują na karcie Dodatki, ale dużo lepsza byłaby możliwość umieszczania ich tam, gdzie jest poręczniej, w innych częściach menu. Pokażemy, jak zmienić ich lokalizację, jak wykorzystywać do tego XML i wyspecjalizowany edytor i jak dobierać się do składników plików typu DOTM.

Nietypowe makro bez żadnych sztuczek może być przypięte tylko w dwóch miejscach. Albo na pasku szybkiego dostępu w prawym górnym rogu menu, albo
na karcie Dodatki.Schemat wstążkowego menu RibbonX, którego będziemy używać, jest stosunkowo prosty, ale wymaga przestrzegania kilku reguł. Struktura liczy trzy poziomy: przyciski (Button), ich grupy (Group), takie jak Schowek w Narzędziach głównych, wreszcie sama karta (Tab). Aby dodać jeden z tych elementów bezpośrednio do wstążki, wystarczy go nazwać, nadać mu identyfikator i etykietę. Jeśli grupa lub przycisk mają być ulokowane o poziom niżej i stać się składnikiem już istniejącej karty - należy użyć jej atrybutu idMso. Chcąc dodać nową grupę czy przycisk i umieścić je w wybranym miejscu, przed lub za innymi elementami menu, należy wykorzystać atrybut insertBeforeMso lub insertAfterMso. Identyfikatory idMso wszystkich przycisków, grup i kart w całym pakiecie Office 2007 są opublikowane w postaci skoroszytów Excela i można je pobrać ze strony
www.microsoft.com/downloads/details.aspx?familyid=4329d9e9-4d11-46a5-898d-23e4f331e9ae&displaylang=en#filelist . Te same identyfikatory służą do ponumerowania ikon na przyciskach, można je także wykorzystać w razie potrzeby.
Prawie wszystko
Jeśli w poprzedniej wersji projekt był szablonem Worda 2000 czy 2003, który zawierał kod makra i skojarzony z nim pasek narzędzi z przyciskiem, wystarczyło wstawić ten szablon do folderu Startup, skąd będzie się ładował za każdym razem w momencie uruchomienia programu. Folder startowy Worda zwykle jest zlokalizowany w katalogu %APPDATA%\MICROSOFT\WORD\STARTUP.
Starsze wersje makr będą pracować z Wordem 2007, ale ich przyciski z paska zostaną wepchnięte na kartę Dodatki. Przypuśćmy, że nasze makro ma coś wspólnego ze wstawianiem i dlatego chcemy je przenieść w bardziej stosowne miejsce, na kartę Wstawianie, np. do nowo utworzonej sekcji między Strony i Tabele. Oto stosowny kod w XML-u:
<tab idMso="TabInsert">
..<group id="Extra_Grupa"
label="Extra_Grupa" ........
insertAfterMso="GroupInsertPages">
<button id="Logo_PCWK"
label="Logo_PCWK"
size="large"></buton>
W tym fragmencie kodu definiujemy nową grupę, nazwaną ="Extra_Grupa", na karcie Wstawianie (TabInsert) określamy jej położenie na wstążce (za grupą Strony), żądamy przycisku dużych rozmiarów i nazywamy go ="Logo_PCWK". Dla jasności nie ma reszty pliku, ale na pewno zrozumieliście, o co chodzi.

Jawna część kodu otrzymanego za pomocą Custom UI Editor. Aplikacja nie tylko umieszcza poszczególne składniki pliku w odpowiednich miejscach, ale także dodaje ilustracje, sprawdza poprawność składni i generuje nagłówek do makra.Można napisać te polecenia XML za pomocą dowolnego edytora tekstu, chociażby Notatnika, ale sztuka polega na dostaniu się do wnętrza pakietu skompresowanego w formacie ZIP, którym w rzeczywistości jest szablon typu DOTM. Można to zrobić ręcznie, zamieniając rozszerzenie pliku z DOTM na ZIP, następnie otworzyć, wykreować wewnątrz nowy folder, wstawić do niego plik customui.xml oraz wyedytować plik _rels\rels.xml, żeby dołączyć tam relację do nowego pliku. Można także wykorzystać narzędzie pobrane spod adresu
openxmldeveloper.org/archive/2006/05/26/CustomUIeditor.aspx , które pozwoli zrobić to wszystko, a nawet jeszcze więcej.
Wyręka i podpowiadacz
Otwórz dokument Worda 2007 albo szablon, korzystając z tego narzędzia i będziesz mógł napisać lub wstawić gotowy customui.xml w odpowiednie miejsce. Program sprawdzi kod XML pod względem zgodności ze schematem RibbonX, wyświetlając lakoniczną, ale przydatną wiadomość, jeżeli są jakieś problemy. Na dodatek automatycznie wstawi plik z poleceniami XML w odpowiednie miejsce i wyedytuje plik z relacjami.
Kiedy już customui.xml zostanie zapisany, będzie można otworzyć dokument w Wordzie i bezpośrednio przyjrzeć się zmianom. Nowe przyciski są związane z kodem za pomocą atrybutu onAction, który po naciśnięciu powinien wymieniać nazwę wywoływanego makra. Makro powinno się zawierać między następującymi wierszami kodu:
Public Sub Tu_Wpisujemy_Nazwę_Makra (ByVal jakas_zmienna As IRibbonControl)
...
End Sub