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 91 92 93 94 95 96 97
| Option Compare Database
Sub recupere_les_messages_outlook_dans_une_table()
'gestion des erreurs
On Error GoTo gere
'déclaration des variables de travail
Dim stPJointes As String
Dim olkapp As Object
Dim olknamespace As Object
Dim objOLfolder As Outlook.MAPIFolder
Dim I As Integer
Dim marequete As String
DoCmd.SetWarnings False 'sinon il va te demander a chaque fois voulez vous supprimer
DoCmd.RunSQL "DELETE * FROM BoiteDeRéception;"
DoCmd.SetWarnings True 'remet l'affichage des messages d'erreurs
'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
Exit Sub
End If
'on désactive les avertissements
DoCmd.SetWarnings False
Find = Chr(34)
repl = "'"
'passage en revue des mails et écriture dans la table
'des champs suivants SUJET,DESTINATAIRE,DATE ENVOI,DATE RECU
For I = objOLfolder.Items.Count To 1 Step -1
'le code pour enregistre les pièces jointes dans la table
For Each myatt In objOLfolder.Items(I).Attachments
If stPJointes = "" Then
stPJointes = myatt.FileName
Else
stPJointes = stPJointes & "," & myatt.FileName
End If
Next
'pour remplacer le caractère " dans le sujet par un espace ou le carctère '
nouvsujet = Replace(Replace(objOLfolder.Items(I).Subject, Find, repl), "'", " ")
marequete = "INSERT INTO BoiteDeRéception (SUJET,TO,ENVOYELE,RECULE,Body,Size,CC,De,Attachments) VALUES ('" _
& IIf(Not IsNull(nouvsujet), nouvsujet, "") & "'" _
& ",'" & IIf(Not IsNull(objOLfolder.Items(I).TO), objOLfolder.Items(I).TO, "") & "'" _
& ",'" & 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(objOLfolder.Items(I).Body), objOLfolder.Items(I).Body, "") & "'" _
& ",'" & IIf(Not IsNull(objOLfolder.Items(I).Size), objOLfolder.Items(I).Size, "") & "'" _
& ",'" & IIf(Not IsNull(objOLfolder.Items(I).CC), objOLfolder.Items(I).CC, "") & "'" _
& ",'" & IIf(Not IsNull(objOLfolder.Items(I).SenderEmailAddress), objOLfolder.Items(I).SenderEmailAddress, "") & "'" _
& ",'" & IIf(Not IsNull(stPJointes), stPJointes, "") & "'" _
& ");"
DoCmd.RunSQL marequete
Next I
'on réactive les avertissements
DoCmd.SetWarnings True
'fermeture des objets
'et libération
olkapp.Quit
Set olkapp = Nothing
'fermeture normale
Exit Sub
'en cas d'erreur
gere:
MsgBox ("L'erreur suivante a eu lieue : " & vbCrLf & Err.Description)
Exit Sub
End Sub
Sub essai()
recupere_les_messages_outlook_dans_une_table
End Sub |