Leggere mail salvate in una cartella del PC
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Argomenti correlati
Questa macro mostra come sia posibile leggere della mail (file .msg) archiviati all'interno di una cartella del PC; usa questa procedura per leggere l'elenco delle mail da analizzare.

Sub Leggi_Mail_Da_Cartella()
  Set Fa = ActiveSheet
  Set Outlook = CreateObject("Outlook.Application")
  
  'cancella elenco precedente
  Rf = Range("B:B").SpecialCells(xlCellTypeLastCell).Row
  If (Rf >= 5) Then
    Fa.Range(Rows(5), Rows(Rf)).Delete
  End If
 
  Dim DirDaEsaminare As String
  DirDaEsaminare = AddBackSlash(Range("c2"))
  Dim ElencoFile As New Collection
  ScanDir ElencoFile, DirDaEsaminare, "*.msg", True

  Ra = 5
  Dim tFile As Variant
  For Each tFile In ElencoFile
    Fa.Cells(Ra, 2) = Replace(tFile, DirDaEsaminare, "")
      
    Set tMail = Outlook.CreateItemFromTemplate(tFile)
    Fa.Cells(Ra, 3) = tMail.ConversationTopic
    Fa.Cells(Ra, 4) = tMail.ReceivedTime
    Fa.Cells(Ra, 5) = tMail.SenderName
    Fa.Cells(Ra, 6) = tMail.Body
    
    'crea l'HiperLink per la cella "oggetto" per aprire il file
    ActiveSheet.Hyperlinks.Add Anchor:=Fa.Cells(Ra, 3), Address:=tFile, _
                               TextToDisplay:=tMail.ConversationTopic
    
    'formatta
    Fa.Range(Cells(Ra, 2), Cells(Ra, 6)).VerticalAlignment = xlTop
    If (Fa.Rows(Ra).RowHeight > 50) Then
      Fa.Rows(Ra).RowHeight = 50
    End If
      
    Ra = Ra + 1
  Next tFile
End Sub

Volendo analizzare anche gli allegati della mail è possibile modificare il codice aggiungendo le parti riportate sotto.
Gli allegati sono contenuti nell'insieme .Attachments ma non possono essere "letti" direttamente, devono prima essere salvati in un cartella locale e poi aperti.
For Each tFile In ElencoFile
    ...

    Set Attachments = tMail.Attachments
    For Each tAttachment In Attachments
      p = InStrRev(tAttachment hment.DisplayName, ".")
      ExtA = Mid(tAttachment.DisplayName, p + 1, 5)
           
      myAttachment.SaveAsFile NomeFileTemp & "." & ExtA
      Set Wbi = Workbooks.Open(Filename:=NomeFileTemp & "." & ExtA, UpdateLinks:=False)
        ...
      Wbi.Close SaveChanges:=False
    next tAttachment
  next tFile

nel file di esempio è stata aggiunta una funzione che permette di avere il nome della cartella su cui è memorizzato il file, in questo caso quella in cui verranno cercate le mail.
Function CartellaFile()
  CartellaFile = Application.ThisWorkbook.Path
End Function


L'esempio completo é scaricabile da questo link: Es126.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