Era da tanto che mi ero promesso di iniziare a fare qualcosa con i Visual Studio Tools for Office (VSTO), e in queste vacanze ho finalmente trovato il tempo.
Inizialmente ero veramente incuriosito dal prodotto, perchè lavorando con sharepoint sono sempre stato molto interessato dalle integrazioni che esistono tra i prodotti del pacchetto Office e il resto, e fin'ora non sono rimasto per niente deluso.
In passato avevlo lavorato un pò con le macro in VBA, e devo dire che con questo nuovo prodotto non c'è proprio storia... In pratica, è possibile attaccare degli assembly scritti e compilati con il .NET Framework 2.0 a dei documenti Word, Excel o scrivere degli add-in per Outlook.
Una volta installato infatti, VSTO aggiunge un nuovo insieme di template per Visual Studio:

  • Excel Workbook
  • Excel Template
  • Outlook add-in
  • Word Document
  • Word Template
Dati quindi i miei lavori nel passato, ho deciso subito di provare l'integrazione con Excel.
Ragazzi se ce ne sono da fare di cose... E' possibile scrivere codice in delle classi rappresentanti il singolo foglio di lavoro o l'intero workbook (la classe ThisWorkbook), iterare tra tutte le colonne e le celle di ogni foglio, inserire nuovi valori e delle funzioni all'interno delle celle e aggiungere all'interno di un qualsiasi foglio una buona parte dei controlli per windows form presenti nel .NET Framework 2.0, qunidi avere pulsanti, caselle di testo o di scelta e tanto altro pronti per interagire con il foglio attivo.
Chiaramente poi, è possibile effettuare una quantità di operazioni decisamente superiore a quanto era possibile fare con le Macro scritte in VBA.
Nell'integrazione con Excel, una volta creato un nuovo progetto, è possibile utilizzare la classe statica Globals per poter richiamare uno dei fogli presenti o l'intero workbook:

Globals.Foglio1.Cells[1, "A"] = "Hello VSTO !";

inoltre è possibile inserire del codice per gestire gli eventi di starup e di shutdown del file di Excel:

private void InternalStartup()

{
this.Startup += new System.EventHandler(ThisWorkbook_Startup);
this.Shutdown += new System.EventHandler(ThisWorkbook_Shutdown);

private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
MessageBox.Show("Workbook startup !");
}

private void ThisWorkbook_Shutdown(object sender, System.EventArgs e)
{}
}

e inserire del controlli Windows Form all'interno dell'actions pane, presente sulla sinistra di ogni file del pacchetto Office 2003.

private void InternalStartup()

{
//...
System.Windows.Forms.Label copyright = new System.Windows.Forms.Label();
copyright.Font = new System.Drawing.Font("Verdana", 10, FontStyle.Bold);
copyright.ForeColor = Color.Orange;
copyright.Text = "Copyright by peppedotnet.it";
copyright.Height = 100;
copyright.TextAlign = ContentAlignment.BottomLeft;
Globals.ThisWorkbook.ActionsPane.Controls.Add(copyright);

}

In questi giorni è uscita la seconda edizione del runtime dei Tools for Office. Qui per il download.

Spero di riuscire a postare anche altro in questi giorni, perchè il prodotto ne vale davvero la pena.