Adăugarea de apelări Callback

Acum este timpul să folosiți un cod VBA pentru a răspunde atunci când utilizatorul interacționează cu Panglica.În exemplul anterior am adăugat un buton care a declanșat una dintre caracteristicile încorporate ale Word (Next Window). Dar acum vom adăuga un buton care declanșează una dintre macrocomenzi. Pentru a rula propriul cod VBA, inserați un callback în codul XML pentru a executa orice macrocomandă VBA specificați. Când utilizatorul face clic pe un control, cum ar fi un buton, codul XML care oferă servicii acestui control trimite un mesaj aplicației Office, spunându-i că este necesar un răspuns (acest lucru este foarte similar cu declanșarea unui eveniment Clic în programarea VBA obișnuită). Aplicația Office apoi "apelează înapoi" (calls back) pentru a declanșa macrocomanda care este specificată de atributul onAction scris în codul XML. Altfel, pentru a crea o apelare inversă, tastați un atribut în codul XML, specificând macrocomanda pe care doriți să o executați. Arată cam așa:

onAction="module1.test

Dacă adăugați acest atribut la un buton de control de pe Panglică, înseamnă că atunci când utilizatorul face clic pe acel buton, este executată macrocomanda denumită test situată în module1. În plus față de Buton de control, și controalele Casetă de selectare, ToggleButton și Galerie au, de asemenea, atribute OnAction.)

Pentru a vedea exact cum funcționează această comunicare între un buton și o macrocomandă VBA, urmați acești pași (consultați primul exemplu din acest capitol dacă aveți nevoie de informații suplimentare despre cum să efectuați acești pași):

1. Creați un document Word nou, gol.

2. Apăsați Alt+F11 pentru a deschide VBA Editor.

3. Faceţi dublu clic pe ThisDocument din Project Explorer pentru a deschide fereastra Code pentru noul document Word, gol. (Asigurați-vă că faceți clic pe proiectul ThisDocument corect dacă sunt deschise mai multe documente în prezent în Word. Acesta va fi ThisDocument în proiect cu același nume ca noul document Word pe care tocmai l-ați creat.)

4. Acum tastați această macrocomandă pe care o veți executa printr-un buton de pe Panglică:

Sub test(control As IRibbonControl)
   MsgBox "Salut!"
End Sub

Observați argumentul pentru această procedură: control as IRibbonControl. Acest argument este necesar atunci când interacționați cu Panglica utilizând un buton (sau oricare dintre numărul mare de alte controale care pot fi puse pe Panglică). Dacă nu includeți acest argument, veți primi un mesaj de eroare " Wrong number of arguments, or invalid property assignment ".

5. Reveniți la Word și faceți clic pe fila File de pe Panglică. Alegeți Save ca pentru a salva acest document ca RibbonTest.docm. (Asigurați-vă că îl salvați ca fișier .docm.) Apoi închideți documentul.

6. Rulați Custom UI Editor for Microsoft Office.

7. Alegeți File > Open.

8. Navigați la RibbonTest.docm pe care l-ați salvat la pasul 5 și deschideți-l.

9. În Custom UI tab of the Editor, tastați următorul cod XML:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
   <ribbon>
      <tabs>
         <tab id="t1" label="Execute">
            <group id="g1" label="Run Test">
              <button id="b1"
            label="See Message" onAction="ThisDocument.test" />
            </group>
         </tab>
      </tabs>
   </ribbon>
</customUI>

10. Faceți clic pe pictograma cu marcajul roșu de selectare pentru a valida codul XML. Dacă codul nu este bine format în funcție de testul de validare, sau ați făcut o greșeală de scriere în codul XML, reintroduceți-l (sau mai bine, copiați și lipiți-l din pagina web a acestei cărți).

11. Alegeți File > Save, apoi selectați File > Exit pentru a ieși din UI Editor.

12. Acum, pentru a vedea noua filă, grup și buton, deschideți RibbonTest.docm din Word, clic pe noua etichetă Execute din partea dreaptă și faceți clic pe butonul See Message.

Ar trebui să vedeți o casetă de mesaje care apare cu mesajul "Salut!" în ea. Dacă nu, consultați secțiunea "Ce să căutați dacă lucrurile merg prost" mai târziu în această secțiune.

Încercați să modificați codul din exemplul anterior pentru a vedea efectul altor atribute ale controlului Button. Acest control are următoarele atribute: description, enabled, id, idMso, idQ, image, imageMso, insertAfterMso, insertAfterQ, insertBeforeMso, insertBeforeQ, keytip, label, ScreenTip, showImage, showLabel, size, supertip, tag și visible.