In questo articolo farò un esempio molto semplice di come l'utilizzo di VSTO 2005 per OutLook potrebbe semplificarci la vita nella creazione di mail di routine.
Uno dei miei primi esperimenti in Outlook 2003 è stato quello di creare un sistema che potesse aiutarmi nel preparare le mail da inviare egli editor di ShareOffice.it contenente i dati di accesso al blog.
Il programma è stato scritto utilizzando questo setup aggiuntivo per Visual Studio 2005 che ci permetterà di scrivere gli add-in per Outlook. Una volta installato il software possiamo creare il primo progetto per Outlook. Apriamo Visual Studio 2005 e facciamo click su File -> New -> Project e selezioniamo dalla cartella Visual basic -> Office -> Outlook Add-in .
Assegniamo come nome del progetto PrimoAddin e facciamo click sul bottone OK. Visual Studio creerà il progetto. Il programma sarà formato dai seguenti file:
- AddTest.vb ( il file contenente delle procedure per la creazione del menu, del bottone, del disposable e della creazione del testo della mail)
- base.htm (contiene il testo base della mail con i campi che verranno sostituiti dall'applicazione con i dati che inseriremo nel modulo form)
- Modulo.vb (il windows form con i campi da compilare che andranno inseriti nella nuova mail)
Per prima cosa aggiungiamo una nuova classe al nostro progetto e la chiamiamo AddTest.vb. In questa classe dobbiamo importare le classi che utilizzeremo per creare l'add-in di outlook:
Imports
office = Microsoft.Office.Core
Imports
System.Runtime.InteropServices
Implementiamo la routine IDisposable e dichiariamo le variabili che utilizzeremo nel progetto:
Implements IDisposable 'Implemento la routine per disabilitare
Private _app As Outlook.Application
Private _disposed As Boolean
Private _wywoForm As Modulo
Private _cbBar As office.CommandBar
Private WithEvents _cbButton As office.CommandBarButton 'serve per visualizzare il bottone nella barra di outlook
Una delle routine più complesse (per motivi di tempo alcune routine non le spiego, troverete alla fine dell'articolo il progetto completo da scaricare) è quella per la creazione del menu e la creazione del pulsante:
Private Sub InitializeUI()
' Dichiaro un oggetto outlook explorer (menu).
Dim explorer As Outlook.Explorer = _app.ActiveExplorer
' Creo il menu e lo aggiungo alla barra di outlook.
_cbBar = explorer.CommandBars.Add("Risposta", office.MsoBarPosition.msoBarTop, False, True)
' Creo l'oggetto bottone.
_cbButton = _cbBar.Controls.Add(Office.MsoControlType.msoControlButton)
_cbButton.Caption = "Risposta"
_cbButton.Style = Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption
' Rendo visibile il bottone.
_cbBar.Visible = True
explorer = Nothing
End Sub
Come si può notare dal codice scritto per poter creare il menu ed associarli dopo un bottone, dobbiamo dichiarare un oggetto di tipo Outlook.Explorer e poi creare il menu (o CommandBars) e associargli il pulsante.
La posizione del menu creato la si determina con il namespace office.MsoBarPosition.msoBarTop (se avessimo voluto posizionarlo nella barra laterale avremmo dovuto inserire office.MsoBarPosition.msoBarLeft).
Per aggiungere il bottone nella barra appena creata utilizziamo il controllo _cbar.Controls.Add(Office.MsoControlType.msoControlButton).
_cbar è la variabile che abbiamo creato in precedenza
Controls.Add è il comando per aggiungere un controllo nella barra di Outlook
Office.MsoControlType.msoControlButton indica il tipo di controllo da aggiungere
Una volta completata la classe che andrà a creare il menu e il bottone, dobbiamo farla caricare dalla nostra applicazione. Per afre questo dobbiamo aprire il file ThisApplication.vb e dichiarare un oggetto che sia di tipo AddTest:
Private _addtest as AddTest
Poi dobbiamo implementare questo nuovo oggetto nel ThisApplication_StartUp per farlo partire:
_addtest = New AddTest (Me)
e annullarlo quando l'applicazione viene chiusa, per farlo dobbiamo utilizzare la funzione dispose nel ThisApplication_Shutdown:
_addtest.Dispose()
_addTest = Nothing
Adesso passiamo alla creazione dell'interfaccia Form che utilizzeremo per l'inserimento dei dati. Dobbiamo aggiungere al nostro progetto un file Windows Forms e lo chiameremo Modulo.vb
Dobbiamo inserire nel Windows Forms i controlli che ci permetteranno di poter inserire i dati: TexBox, Label e Button. Il risultato dovrebbe essere come quello in figura:

(nel progetto completo troverete tutto)
Adesso passeremo alla programmazione dell'evento del click sul pulsante "Invia". Per prima cosa facciamo doppio click sul pulsante invia per far creare l'evento click a Visual Studio 2005. In dettaglio vedremo come dire ad Outlook 2003 come creare un nuovo messaggio di posta elettronica e quale tipo di formato assegnargli (Text o HTML):
Dim msgFormat As Outlook.OlBodyFormat
Dim myMail As Outlook.MailItem = Nothing
' Determino il tipo di formato del messaggio; Testo o HTML.
If ComboBoxFormat.SelectedIndex = 0 Then ' plain text
msgFormat = Outlook.OlBodyFormat.olFormatPlain
Else
msgFormat = Outlook.OlBodyFormat.olFormatHTML
End If
' Creo il nuovo messaggio nel formato scelto.
Try
myMail = _app.CreateItem(Outlook.OlItemType.olMailItem)
myMail.BodyFormat = msgFormat
Catch ex As System.Runtime.InteropServices.COMException
MessageBox.Show(ex.ErrorCode.ToString(System.Globalization.CultureInfo.InvariantCulture) & ": " & ex.Message, "ButtonSend")
End Try
If Not myMail Is Nothing Then
' Setto le proprietà del messaggio.
With myMail
.To = Me.TextBox1.Text
.Subject = "Dati di accesso per lo Usergroup ShareOffice.it"
.BodyFormat = Outlook.OlBodyFormat.olFormatHTML
.HTMLBody = BuildHTMLBody()
End
Proviamo a lanciare il progetto e vedremo che si sarà aggiunto un nuovo menu con un pulsante "Risposta". Facendo click sul pulsante avremo l'apertura di un Windows Form con la possibilità di inserire dei dati.

Questo è solo un semplicissimo esempio su come sviluppare applicazioni che possano semplificarci l'uso di Outlook. Per scaricare l'intero progetto potete fare click qui
Ciao a tutti e buona programmazione
================================================
Fulvio Giaccari [MCAD/MCSD/MCT]
Webmaster
ShareOffice.it - Usergroup Sviluppatori Office
Blog: http://blog.shareoffice.it/webmaster
================================================
?>