Web Analytics Word Custom Ribbon: aggiungere un'intestazione di pagina - Blog di Laura Ciccarese

Blog di Laura Ciccarese

Office: un mondo da scoprire! Approfondimenti, Automation, VBA e altro ancora...

Word Custom Ribbon: aggiungere un'intestazione di pagina

Oggi proseguiamo con la personalizzazione del ribbon di Word, aggiungendo un comando che permette di inserire o aggiornare l'intestazione di pagina del documento corrente.

L'esempio si basa sulle applicazioni descritte nel post precedente, Word Custom Ribbon: modifica stile, alle quali apporteremo le seguenti modifiche:

  • aggiungere un comando alla struttura del Ribbon.xml;
  • assegnare la dimensione massima al comando;
  • aggiungere la funzionalità relativa nel foglio ThisAddin.cs o ThisAddin.vb;
  • aggiungere la chiamata alla nuova funzionalità nella regione delle callbacks nel Ribbon.cs o Ribbon.vb.

Ribbon.xml

<button id ="aggiungiIntestazione01"

                              label ="Intestazione ufficiale"

                              screentip="aggiunge o aggiorna l'intestazione di pagina per la documentazione ufficiale"

                              size ="large"

                              onAction ="MyFunctions"

                              imageMso ="HeaderFooterEditHeader"/>

 

ThisAddin.cs

public void aggiungiIntestazione01()

        {

            //impostiamo la variabile per il documento attivo

            Word.Document myDoc = Application.ActiveDocument;

            //impostiamo la variabile per l'intestazione di pagina

            Word.HeaderFooter myHeader = myDoc.Sections[1].Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary];

            try

            {

           

                //inseriamo e formattiamo l'intestazione di pagina

               

                //inseriamo il nome del file completo di percorso (attenzione: se il documento

                //non è ancora stato salvato, il nome del percorso non sarà disponibile:

                if (myDoc.Saved == true)

                    myHeader.Range.Text = "Documento ufficiale - File:" + myDoc.Path + "'\'" + Application.ActiveDocument.Name;

                else

                    myHeader.Range.Text = "Documento ufficiale - File:" + Application.ActiveDocument.Name;

                    myHeader.Range.Font.Name = "Bauhaus 93";

                    myHeader.Range.Font.Size = 9;

                    myHeader.Range.Font.Color = Word.WdColor.wdColorGray70;

                    myHeader.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;

                    myHeader.Range.Underline = Word.WdUnderline.wdUnderlineThick;

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.ToString());

            }

 

        }

 

Ribbon.cs

public void MyFunctions(Office.IRibbonControl control)

        {

        //chiamata alle diverse funzioni corrispondenti ai diversi comandi del ribbon

        //attualmente esiste un solo comandoswitch (control.Id)

            switch(control.Id)

            {

                case "FormattaTitolo1":

                    Globals.ThisAddIn.FormattaTitolo1();

                    break;

                case "aggiungiIntestazione01":

                    Globals.ThisAddIn.aggiungiIntestazione01();

                    break;

                default:

                  // aggiungere codice per altre funzioni

                    break;

            }

      

        }

 

ThisAddin.vb

public void aggiungiIntestazione01()

        {

            //impostiamo la variabile per il documento attivo

            Word.Document myDoc = Application.ActiveDocument;

            //impostiamo la variabile per l'intestazione di pagina

            Word.HeaderFooter myHeader = myDoc.Sections[1].Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary];

            try

            {

           

                //inseriamo e formattiamo l'intestazione di pagina

               

                //inseriamo il nome del file completo di percorso (attenzione: se il documento

                //non è ancora stato salvato, il nome del percorso non sarà disponibile:

                if (myDoc.Saved == true)

                    myHeader.Range.Text = "Documento ufficiale - File:" + myDoc.Path + "'\'" + Application.ActiveDocument.Name;

                else

                    myHeader.Range.Text = "Documento ufficiale - File:" + Application.ActiveDocument.Name;

                    myHeader.Range.Font.Name = "Bauhaus 93";

                    myHeader.Range.Font.Size = 9;

                    myHeader.Range.Font.Color = Word.WdColor.wdColorGray70;

                    myHeader.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;

                    myHeader.Range.Underline = Word.WdUnderline.wdUnderlineThick;

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.ToString());

            }

 

        }

 

Ribbon.vb

Public Sub myFunctions(ByVal control As Office.IRibbonControl)

        'chiamata alle diverse funzioni corrispondenti ai diversi comandi del ribbon

        'attualmente esiste un solo comando

        Select Case control.Id

            Case "FormattaTitolo1"

                Globals.ThisAddIn.FormattaTitolo1()

            Case "aggiungiIntestazione01"

                Globals.ThisAddIn.aggiungiIntestazione01()

            Case Else

                'aggiungere codice per altre funzioni

        End Select

 

    End Sub

 

 

Ecco il risultato:

WordCustomRibbon03

 

Se il documento non è ancora stato salvato, nell'intestazione verrà inserito solo il nome geerico Documento1 e non il percorso:

WordCustomRibbon04

 

Se il documento è stato salvato, nell'intestazione verrà inserito il nome del file e il percorso completo:

WordCustomRibbon

 

Come al solito, in allegato trovate le due applicazioni.

Ciao a tutti

Laura