• Ingrandisci carattere
  • Dimensione predefinita
  • Riduci carattere
Home Esempi di codice VBA: aprire tutte le Note all'avvio di Outlook
Errore
  • XML Parsing Error at 1:1418. Error 9: Invalid character

VBA: aprire tutte le Note all'avvio di Outlook

E-mail Stampa

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.

Ultimo aggiornamento ( Venerdì 03 Settembre 2010 16:37 )