Finalità
Questo esempio di codice VBA presenta una procedura che, all'avvio di Outlook, apre tutte le Note di Outlook presenti nell'omonima cartella. Molti utenti utilizzano infatti le Note come se fossero dei "Post-it", e vogliono che questi vengano aperti automaticamente.
Breve descrizione della procedura
Le procedure presentate sono due: una prima procedura di evento (Application_MAPILogonComplete) che serve per "trappare" l'evento di caricamento della sessione di Outlook, e una seconda (VisualizzaTutteLeNote) che contiene il codice vero e proprio. Operativamente viene creato un riferimento alla cartella delle Note e viene eseguito un loop su ogni elemento presente in tale cartella, forzandone la visualizzazione.
Si potrebbe migliorare la procedura facendo riferimento ad una sotto-cartella delle Note, aprendo automaticamente solo le Note presenti nella sotto-cartella.
Private Sub Application_MAPILogonComplete()
Call VisualizzaTutteLeNote
End Sub
Public Sub VisualizzaTutteLeNote()
Dim objNS As NameSpace
Dim objFolder As MAPIFolder
Dim objItem As Object
Set objNS = Application.GetNamespace("MAPI")
'recupera il riferimento alla cartella con le Note
Set objFolder = objNS.GetDefaultFolder(olFolderNotes)
On Error Resume Next
'effettua un loop, forzando la visualizzazione per ogni
' Nota presente nella cartella.
For Each objItem In objFolder.Items
objItem.Display
Next
Set objItem = Nothing
Set objFolder = Nothing
Set objNS = Nothing
End Sub
Variante per l'apertura selettiva solo di alcune Note
Propongo qui una variante del codice, che permette di aprire solamente alcune Note e non tutte...
In questo esempio cerco di sfruttare la capacità di Outlook di associare ad un elemento (e quindi anche alle Note) una Categoria, sulla quale opererò la selezione degli elementi da aprire.
Bisogna ovviamente creare una nuova Categoria e lo si può fare attraverso il comando "Modifica-> Categorie...". Per il mio esempio ne ho creata una chiamata "Post-it".
Bisogna poi associare ad ogni Nota che si vuole fare aprire in automatica la nuova Categoria ("Post-it").
Il codice modificato è il seguente:
Private Sub Application_MAPILogonComplete()
Call VisualizzaTutteLeNote
End Sub
Public Sub VisualizzaTutteLeNote()
Dim objNS As NameSpace
Dim objFolder As MAPIFolder
Dim objItem As Object
Set objNS = Application.GetNamespace("MAPI")
'recupera il riferimento alla cartella con le Note
Set objFolder = objNS.GetDefaultFolder(olFolderNotes)
On Error Resume Next
'effettua un loop, forzando la visualizzazione per ogni
' Nota presente nella cartella, associata alla
' Categoria "Post-it".
For Each objItem In objFolder.Items
If InStr(objItem.Categories, "Post-it") > 0 Then
objItem.Display
End If
Next
Set objItem = Nothing
Set objFolder = Nothing
Set objNS = Nothing
End Sub
Nel codice viene verificata la proprietà .Categories di ogni Nota. Questa proprietà espone un campo di tipo testo (stringa) che contiene l'elenco delle Categorie a cui è associato l'elemento, presentandole in maniera sequenziale e separando i valori con un punto-e-virgola.
La funzione Instr() va a ricercare nel campo testo la presenza del nome della Categoria "Post-it" e se trovato ne indica la posizione. nel nostro caso non ci interessa la posizione precisa, ma ci basta sapere che sia diversa da zero (se il risultato è zero significa che il nome della nostra Categoria non è stato trovato all'interno delle categorie associate all'elemento).
Solamente se la Categoria è stata trovata allora viene chiamato il metodo .Display di visualizzazione della Nota.