1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| Sub recupere_les_messages_outlook_dans_une_table()
'gestion des erreurs
' pour tester tout le code mettre : On Error GoTo gere à la place de ce qui suit...
'On Error Resume Next
'déclaration des variables de travail
Dim olkapp As Outlook.Application
Dim olknamespace As Outlook.NameSpace
Dim objOLfolder As Outlook.MAPIFolder
Dim mailItm As Outlook.MailItem
Dim i As Integer, pj As Integer
Dim marequete As String
'ouverture de l'object outlook
Set olkapp = CreateObject("Outlook.application")
Set olknamespace = olkapp.GetNamespace("MAPI")
'ouverture des dossiers de mails
Set objOLfolder = olknamespace.GetDefaultFolder(olFolderInbox)
'informations sur le nombre de mails trouvés
MsgBox ("Access a trouvé : " & objOLfolder.Items.Count & " mail(s) dans votre boite de réception !")
'aucun mail n'a été trouvé ? => on sort !
If objOLfolder.Items.Count = 0 Then GoTo Sortie
'passage en revue des mails et écriture dans la table
'des champs suivants SUJET,DESTINATAIRE,DATE ENVOI,DATE RECU
Dim nouvsujet As String
Dim nouvto As String
Dim nouvMessage As String
Dim nouvAttachments As String
Dim find As String
Dim repl As String
find = Chr(34)
repl = "'"
For i = objOLfolder.Items.Count To 1 Step -1
If objOLfolder.Items(i).Class <> olMail Then GoTo MsgSuivant
Set mailItm = objOLfolder.Items(i)
nouvsujet = Replace(Replace(mailItm.Subject, find, repl), "'", " ")
nouvto = Replace(Replace(mailItm.SenderName, find, repl), "'", " ")
nouvMessage = Replace(Replace(mailItm.Body, find, repl), "'", " ")
For pj = 1 To mailItm.Attachments.Count
Debug.Print mailItm.Attachments(pj).DisplayName & ":" & mailItm.Attachments(pj).FileName
Next
nouvAttachments = Replace(Replace(mailItm.Attachments.Count, find, repl), "'", "''")
marequete = "INSERT INTO T_mails (SUJET,TO,ENVOYELE,RECULE,MESSAGE,Attachments) VALUES ('" _
& IIf(Not IsNull(nouvsujet), nouvsujet, "") & "'" _
& ",'" & IIf(Not IsNull(nouvto), nouvto, "") & "'" _
& ",'" & IIf(Not IsNull(objOLfolder.Items(i).SentOn), objOLfolder.Items(i).SentOn, "") & "'" _
& ",'" & IIf(Not IsNull(objOLfolder.Items(i).ReceivedTime), objOLfolder.Items(i).ReceivedTime, "") & "'" _
& ",'" & IIf(Not IsNull(nouvMessage), nouvMessage, "") & "'" _
& ",'" & IIf(Not IsNull(nouvAttachments), nouvAttachments, "") & "'" _
& ");"
'on désactive les avertissements
DoCmd.SetWarnings False
'Insertion dans la table
DoCmd.RunSQL marequete
'on réactive les avertissements
DoCmd.SetWarnings True
MsgSuivant:
Next
'fermeture des objets
'et libération
Sortie:
Set mailItm = Nothing
Set objOLfolder = Nothing
Set olknamespace = Nothing
olkapp.Quit
Set olkapp = Nothing
'fermeture normale
Exit Sub
'en cas d'erreur
gere:
MsgBox ("L'erreur suivante a eu lieue : " & vbCrLf & Err.Description)
GoTo Sortie
End Sub |
Partager