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:
Se il documento non è ancora stato salvato, nell'intestazione verrà inserito solo il nome geerico Documento1 e non il percorso:

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

Come al solito, in allegato trovate le due applicazioni.
Ciao a tutti
Laura