Tutorial Come creare un AddIn Excel - Personalizzare Ribbon

Stato
Chiusa ad ulteriori risposte.

xalbex

Utente abituale
Original poster
28 Febbraio 2019
109
8
18
32
Parma
Microsoft 365
CIao a tutti.
Qualche tempo fa mi sono imbattuto in una sfida che consisteva nel personalizzare la Ribbon di excel creando un tab con pulsanti e button ai quali legare delle macro.
Innanzitutto ringrazio alfrimpa @alfrimpa che mi postò un link utilissimo che ho seguito.
Poi cercando altre info sul web e sbattendo la testa varie volte sono riuscito nel mio intento.
Ho creato una guida molto basilare e semplice da seguire che riporto di seguito.
La base di partenza è: ho la necessità di raggruppare varie macro in modo semplice e intuitivo per l'utente evitando di assegnare le medesime a combinazioni di tasti o commandButton che "sporcano" i nostri fogli di lavoro Excel.
Quindi prima di cimentarci alla creazione di un AddIn, dobbiamo avere in chiaro cosa metteremo dentro (le nostre macro).

Vai con gli step:
  1. Mi serve un modulo con delle macro all'interno
    • Se non ho ancora scritto nessuna macro apro un file Excel e inserisco (o importo) il modulo al suo interno. Salvo il file con un nome a piacere, ma con estensione .xlam (AddIn di Excel) nella cartella AddIns di Microsoft che dovrebbe trovarsi nel vostro PC all'indirizzo "\...AppData\Roaming\Microsoft\AddIns". Supponiamo che il nostro file si chiami Pippo.xlam.
    • Se il modulo (con dentro le macro) l'ho già creato e fa parte di un altro file .xlsm, vado nell'editor VBA del suddetto file, clicco sul modulo, lo esporto e lo salvo in formato .bas dentro una cartella a mio piacimento, quindi eseguo il punto precedente.
    • Se ho creato delle macro, ma non ho nessun modulo, lo creo e trasferisco le macro all'interno (con le opportune modifiche), quindi eseguo i due punti sopra esposti.
  2. Vado nella cartella AddIns e modifico l'estensione del file Pippo in .zip (si un archivio SmileFace). Apro l'archivio e mi trovo davanti un raccolta con delle cartelle ed alcuni file.
  3. Apro la cartella _rels, al suo interno trovoun file con estensione .rels (un semplice file di testo scritto utilizzando il codice XLM, una sorta di "HTML di Excel", nel senso che come l'HTML serve a definire la struttura di un sito internet, così l'XML si usa per definire la struttura di un file Excel Caffe_rido). Al suo interno trovo il codice "Relationships" che vi riporto sotto. All'interno del tag (in linguaggio XML i tag sono i "blocchi di codice" che iniziano riconoscibili con l'apertura < e chiusura />) <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> inserisco il tag <Relationship Id="PippoId" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="PippoRibbon.xml"/> dove è tutto standardizzato ad eccezione dell'attributo "Id" che nell'esempio ho denominato "PippoId" e dell'attributo "Target" che ho denominato "PippoRibbon.xml". Questo tag dice ad Excel "oltre le relazioni classiche rId1, rId2, rId3, di questo (e di tutti) i file Excel, per questo file considera anche la relazione PippoId che è collegata al file .xml che si chiama PippoRibbon", ovvero il file che andremo a creare allo step successivo.:dubbioso:Tranquilli tutto sarà più chiaro una volta che avremo la nostra Ribbon personalizzata my_Drinks. Salvate l'archivio, ma non chiudetelo.
  4. Apro il blocco note e scrivo sempre utilizzando il codice XML la struttura vera e propria del mio Tab Ribbon. Nel codice che posto sotto "Esempio Tab Ribbon" vi riporto un esempio. Partite da quello, poi sbizzarritevi Fumato_ seguendo le indicazioni che trovate Qui. Una volta che prenderete dimestichezza capirete che l'obiettivo è creare dei tag Button ai quali associare le macro da richiamare al click. Per farlo prima della chiusura di ciascun tab <Button> inserite questo codice nella proprietà "OnAction" (al posto "onButtonClick" nell'esempio Esempio Tab RIbbon) "'Pippo.xlam'!RibbonCodePippo". RibbonCodePippo sarà il Modulo che scriverete in Vba e che metterete dentro il file Pippo.xlam con il quale richiamerete l'Id di ciascun button associandogli così la macro desiderata (vedi blocco codice Modulo RibbonCodePippo).
  5. Una volta scritto il vostro codice, salvate il file di testo col nome PippoRibbon.xml in una cartella a vostro piacimento e chiudetelo. Con la tecnica Drag and Drop trascinate il file .xml all'interno del vostro archivio nella cartella principale (E NON DENTRO LA CARTELLA _rels NE IN NESSUN ALTRA CARTELLA PREDEFINITA). Salvate le modifiche dell'archivio e chiudetelo.
  6. Rinominate nuovamente il vostro file Pippo.zip con l'estensione Pippo.xlam ed il gioco è fatto! Avete creato il vostro AddIn! :fucilate:
  7. Per aggiungere il vostro AddIn alla Ribbon di Excel, avete due modi:
    • Aprite un qualsiasi file excel, cliccate su File->Opzioni->Componenti aggiuntivi->Componenti aggiuntivi di Excel->Vai..., dovreste trovare il vostro AddIn nell'elenco, flaggatelo e cliccate su Ok.
    • Fare una copia di Pippo.xlam nella cartella XLSTART ("...\AppData\Roaming\Microsoft\Excel\XLSTART") di Excel.
  8. All'apertura di qualsiasi file Excel troverete nella Ribbon in vostro tab "Custom Tab" appena creato.
Relationships:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
    <Relationship Id="PippoId" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="PippoRibbon.xml"/>
</Relationships>

Esempio Tab RIbbon:
 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   <commands>
     <command idMso="Bold" enabled="false" />
   </commands>
   <ribbon>
     <tabs>
       <tab idMso="TabHome" visible="false" />
       <tab id="CustomTab" label="Custom Tab">
         <group id="CustomGroup" label="Custom Group">
           <button id="CustomButton" label="Custom Button"
             size="large" imageMso="HappyFace" onAction="OnButtonClick" />
         </group>
       </tab>
     </tabs >
   </ribbon>
 </customUI>

Modulo RibbonCodePippo:
Public Sub RibbonCodePippo(Control As IRibbonControl)
    Select Case Control.ID
        Case "CustomButton"
            CODE HERE 'Richiamate la macro (oppure scrivetela direttamente qui) che deve essere richiamata al click sul Button "CustomButton" dell'esempio Esempio Tab RIbbon
    End Select
End Sub

Spero la guida vi sia d'aiuto.
Ciao a tutti!
Alberto.cappello_saluta✔️
 
Ultima modifica:
Stato
Chiusa ad ulteriori risposte.