venerdì 7 dicembre 2018

MS Outlook: Aprire le cartelle Posta in Arrivo, Calendario, Attività e Contatti in più finestre all'avvio di Outlook

Alcuni utenti potrebbero trovare utile che all'avvio di Outlook vengono aperte le cartelle Posta in Arrivo, Calendario, Attività e Contatti in diverse finestre con dimensioni personalizzate. 
Per raggiungere tale scopo è possibile utilizzare VBA:
  • Avviare Outlook;
  • Dal menu File->Opzioni selezionare Personalizzazione barra multifunzione;
  • Nell'elenco Schede principali (sulla destra) aggiungere il segno di spunta alla voce Sviluppo e cliccare su OK;
    Outlook, Personalizza barra multifunzione
    FIG 1 - Outlook, Personalizza barra multifunzione
  • Avviare Microsoft Visual Basic, Application Edition tramite la combinazione di tasti ALT+F11;
  • Nella visualizzazione ad albero del progetto, sul lato sinistro della finestra, selezionare ThisOutlookSession;
    Outlook, Microsoft Visual Basic Application Edition
    FIG 2 - Outlook, Microsoft Visual Basic Application Edition
  • Copiare e incollare il seguente script;
    Private Sub Application_Startup()
     Dim olExp As Outlook.Explorer
     Dim objInbox As Folder
     Dim objCalendar As Folder
     Dim objContacts As Folder
     Dim objTasks As Folder
    
     Set objInbox = Application.ActiveExplorer.CurrentFolder
     Set objCalendar = Session.GetDefaultFolder(olFolderCalendar)
     Set objContacts = Session.GetDefaultFolder(olFolderContacts)
     Set objTasks = Session.GetDefaultFolder(olFolderTasks)
    
    'Apre la cartella Contatti in una finestra di Outlook ridotta ad icona (olMinimized)
     objContacts.Display
     Set olExp = Application.ActiveExplorer
     With olExp
         .WindowState = olMinimized
     End With
    
    'Apre la cartella Attività in una finestra di Outlook ridotta ad icona (olMinimized)
     objTasks.Display
     Set olExp = Application.ActiveExplorer
     With olExp
         .WindowState = olMinimized
     End With
    
    'Apre la cartella Calendario in una finestra normale di Outlook (olNormalWindow)
     objCalendar.Display
     Set olExp = Application.ActiveExplorer
     With olExp
         .WindowState = olNormalWindow
     End With
    
    'Apre la cartella Posta in arrivo in una finestra massimizzata di Outlook (olMaximized)
     objInbox.Display
     Set Application.ActiveExplorer.CurrentFolder = objInbox
     Set olExp = Application.ActiveExplorer
     olExp.WindowState = olMaximized
    
    End Sub
    
  • Attraverso la proprietà WindowState di Outlook.Explorer è possibile indicare se aprire la cartella in una finestra normale (olNormalWindow), ridotta (olMinimized) o ingrandita (olMaximized).  Salvare lo script cliccando sull'apposita icona e ritornare alla finestra di Outlook;
  • Dalla scheda Sviluppo cliccare su Sicurezza macro;
    Outlook, Sicurezza macro
    FIG 3 - Outlook, Sicurezza macro
  • Dalla finestra Centro protezione, nella sezione Impostazioni macro, selezionare Visualizza notifiche per tutte le macro. In questo modo all'avvio di Outlook verrà richiesto se eseguire la macro.
    Outlook, Visualizza notifiche per tutte le macro
    FIG 4 - Outlook, Visualizza notifiche per tutte le macro
Per agire sulla posizione e sulla dimensione delle finestre aperte si utilizzano le proprietà Top, Left, Height, Width che consentono di specificare la distanza in pixel della finestra dalla parte alta dello schermo, la distanza dal bordo sinistro, l'altezza della finestra e la sua larghezza. 
Ad. es volendo aprire la finestra con il Calendario di Outlook, spostarla in altro a sinistra dello schermo e impostare la dimensione 800x1000 lo script è il seguente:

Private Sub Application_Startup()
 Dim olExp As Outlook.Explorer
 Dim objInbox As Folder
 Dim objCalendar As Folder
 Dim objContacts As Folder
 Dim objTasks As Folder

 Set objInbox = Application.ActiveExplorer.CurrentFolder
 Set objCalendar = Session.GetDefaultFolder(olFolderCalendar)
 Set objContacts = Session.GetDefaultFolder(olFolderContacts)
 Set objTasks = Session.GetDefaultFolder(olFolderTasks)

'Apre la cartella Contatti in una finestra di Outlook ridotta ad icona (olMinimized)
 objContacts.Display
 Set olExp = Application.ActiveExplorer
 With olExp
     .WindowState = olMinimized  
 End With

'Apre la cartella Attività in una finestra di Outlook ridotta ad icona (olMinimized)
 objTasks.Display
 Set olExp = Application.ActiveExplorer
 With olExp
     .WindowState = olMinimized
 End With

'Apre la cartella Calendario in una finestra normale di Outlook (olNormalWindow)
 objCalendar.Display
 Set olExp = Application.ActiveExplorer
 With olExp
     .WindowState = olNormalWindow
     .Top = 0
     .Left = 0
     .Height = 800
     .Width = 1000
 End With

'Apre la cartella Posta in arrivo in una finestra massimizzata di Outlook (olMaximized)
 objInbox.Display
 Set Application.ActiveExplorer.CurrentFolder = objInbox
 Set olExp = Application.ActiveExplorer
 olExp.WindowState = olMaximized

End Sub

Se si vogliono aprire più finestre di Outlook in modo che siano sfalsate tra loro come mostrato in FIG 5, il codice da copiare è il seguente:
Private Sub Application_Startup()
 Dim objInbox As Folder
 Dim objCalendar As Folder
 Dim objContacts As Folder
 Dim objTasks As Folder

 Set objInbox = Application.ActiveExplorer.CurrentFolder
 Set objCalendar = Session.GetDefaultFolder(olFolderCalendar)
 Set objContacts = Session.GetDefaultFolder(olFolderContacts)
 Set objTasks = Session.GetDefaultFolder(olFolderTasks)

 objCalendar.Display
 objContacts.Display
 objTasks.Display

 Dim olExps As Outlook.Explorers
 Set olExps = Application.Explorers

 Dim oTop As Long, oLeft As Long
 oTop = 100
 oLeft = 200

 For x = 1 To olExps.Count

  With olExps.Item(x)
      .WindowState = olNormalWindow
      .Top = oTop
      .Left = oLeft
      .Height = 800
      .Width = 1000
  End With
 oTop = oTop + 50
 oLeft = oLeft + 50

 Next x

 Set Application.ActiveExplorer.CurrentFolder = objInbox
End Sub
Outlook, Finestre sfalsate
FIG 5 - Outlook, Finestre sfalsate





Nessun commento:

Posta un commento

I messaggi sono soggetti a moderazione da parte dell'amministratore prima della loro pubblicazione.