Elenco delle mail da posta in arrivo
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Argomenti correlati
Una macro che mostra come sia semplice leggere le mail nella cartella posta di in arrivo di Outlook e riportarle in Excel.
Uno degli esempi tipici di un file del genere è quando si ricevono un gran numero di moduli simili allegati alle mail, in questo caso è molto comodo leggere le mail ed estrarne i dati in Excel; l'esempio classico sono gli ordini inviati che arrivano su foglio di calcolo.
Lo scopo è avere un elenco delle mail presenti nella cartella posta in arrivo in una tabella simile a quella qui a lato.
In realtà per rendere davvero utilizzabile uno strumento del genere dovremmo aggiungere la lettura degli allegati e lo spostamento delle mail processate in altra cartella, ma procediamo per gradi.

La procedura legge le mail (le prime NrRigheMax) dalla cartella posta in arrivo ordinate per data (ultima per prima) e le riporta nell'elenco. Per rendere più semplice la lettura del testo in Excel vengono tolti, dal testo del messaggio, gli a-capo multipli.

Sub LeggiMailDaInbox()
  ' Libreria: Strumenti --> Riferimenti--> Microsoft Outlook x.xx Object Library
  Dim xOutApp As Outlook.Application
  Dim xOutNameSpace As Outlook.Namespace
  Dim xOutFolder As Outlook.Folder
  Dim xOutItems As Outlook.Items
  Dim xOutMail As Outlook.MailItem
  
  Ra = 5
  NrRigheMax = 20
  
  ' cancella l'elenco precendente
  Set Fa = ActiveSheet
  Ur = Fa.Cells(Rows.Count, "B").End(xlUp).Row
  If (Ur >= Ra) Then
    Rows(Ra & ":" & Ur).Delete Shift:=xlUp
  End If
      
  Set xOutApp = CreateObject("Outlook.Application")
  Set xOutNameSpace = xOutApp.GetNamespace("MAPI")
  Set xOutFolder = xOutNameSpace.GetDefaultFolder(olFolderInbox)
  Set xOutItems = xOutFolder.Items

  xOutItems.Sort "ReceivedTime", True

  For Each xOutMail In xOutItems
    Fa.Cells(Ra, 2) = xOutMail.ReceivedTime
    Fa.Cells(Ra, 3) = xOutMail.Sender
    Fa.Cells(Ra, 4) = xOutMail.Subject
    
    ' body
    Body = xOutMail.Body
    ' toglie gli a-capo multipli dal corpo del messaggio
    ' per rendere più semplice la lettura all'interno delle celle
    While (InStr(Body, vbNewLine + vbNewLine) > 0)
      Body = Replace(Body, vbNewLine + vbNewLine, vbNewLine)
    Wend
    Fa.Cells(Ra, 5) = Body
    
    Ra = Ra + 1
    
    ' verifica se ha superato il numero massimo di mail da leggere
    NrRigheMax = NrRigheMax - 1
    If (NrRigheMax <= 0) Then Exit For
  Next xOutMail
End Sub

In questo articolo potete trovare la parte di codice necessaria per leggere gli allegati presenti ed eventualmente salvarli nel proprio pc; la abbiamo messa separata qui per rendere più semplice la lettura del codice.


L'esempio completo é scaricabile da questo link: Es399.xlsm (a questo link le info per attivare le macro se risultano bloccate)

Gli esempi contenuti nel sito sono per uso personale, non é consentito l'uso professionale, commerciale o la riproduzione senza autorizzazione.
Per dubbi o domande potete scriverci a domande@macrofacili.it, sulla nostra pagina FB MacroFacili.it o sul gruppo FB Excel, macro e formule.
 

data4idea srls - PIva 01881000937 - info@data4idea.it