Fulvio's Blog

.NET e dintorni

  Home :: Contact :: Syndication  :: Login
  84 Posts :: 3 Stories :: 5 Comments :: 3026 Trackbacks

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:

Modulo VB
(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.


Programma avviato

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

================================================

?>

posted on mercoledì 31 agosto 2005 10.14