OVH Cloud OVH Cloud

importation Outlook => Access

4 réponses
Avatar
Gantzer Stéphan
Bonjour à tous,
J'aimerais importer les mails contenus dans un répertoire Outlook ("DFDH")
dans une table ("Temp_outlook").
J'ai bien essayé de simplement lier le répertoire mais ça me pose 2
problèmes:
1 avec un expéditeur du type : Toto [toto@msn.com] seul Toto apparaît
dans ma table liée, le mail manque
2 j'aurais préféré pouvoir déplacer mail traité dans un autre répertoire
outlook ("DFDH_traité")

En cherchant sur http://access.seneque.free.fr/ j'ai trouvé une exemple pour
la création d'un répertoire qui fonctionne à merveille.
En le modifiant un peut, j'ai réussit à compter le nombre de messages
présent dant le répertoire (11)
Mais après je sèche.... comment récupérer ces éléments et surtout leur
contenu puis les déplacer ?
Merci par avance de votre aide.

Function fait()
Dim OL_App As New Outlook.Application
Dim OL_Space As Outlook.NameSpace
Dim OL_Folder As Outlook.MAPIFolder
Dim OL_Inbox As Outlook.MAPIFolder
Dim dfdh As Outlook.MAPIFolder
Set OL_Space = OL_App.GetNamespace("MAPI")
Set OL_Inbox = OL_Space.GetDefaultFolder(olFolderInbox)
Set dfdh = OL_Inbox.Folders.Item(23)

MsgBox dfdh.Items.Count


Set OL_Inbox = Nothing
Set OL_Folder = Nothing
Set OL_Space = Nothing
Set OL_App = Nothing

End Function

4 réponses

Avatar
Anor
Bonjour Stéphan

| Bonjour à tous,
| J'aimerais importer les mails contenus dans un répertoire Outlook
| ("DFDH") dans une table ("Temp_outlook").

ça tombe bien j'ai commencé à travailler sur le sujet, mais je n'ai pas terminé
le travail de recherches.......

| J'ai bien essayé de simplement lier le répertoire mais ça me pose 2
| problèmes:
| 1 avec un expéditeur du type : Toto [] seul Toto
| apparaît dans ma table liée, le mail manque

là je peux te donner une solution alternative d'importation

| 2 j'aurais préféré pouvoir déplacer mail traité dans un autre
| répertoire outlook ("DFDH_traité")

mais pour l'instant je n'en suis pas là ....

Si ça peut t'aider, voici l'état du travail en cours.
Il y a encore des propriétés intéressantes à importer qui n'y figurent pas, mais pas encore
explorées.

Alors une table nommé tblMails avec les champs et type suivants :

AlternateRecipientAllowed Yes/No
AutoForwarded Yes/No
BCC Text
BillingInformation Text
Body Memo
Categories Text
CC Text
Companies Text
ConversationIndex Text
ConversationTopic Text
CreationTime Date/Time
DeferredDeliveryTime Date/Time
DeleteAfterSubmit Yes/No
EntryID Text
ExpiryTime Date/Time
FlagDueBy Date/Time
FlagRequest Text
HTMLBody Memo
InternetCodepage Number
IsConflict Yes/No
LastModificationTime Date/Time
MessageClass Text
Mileage Text
NoAging Yes/No
OriginatorDeliveryReportRequested Yes/No
OutlookInternalVersion Number
OutlookVersion Text
ReadReceiptRequested Yes/No
ReceivedByEntryID Text
ReceivedByName Text
ReceivedOnBehalfOfEntryID Text
ReceivedOnBehalfOfName Text
ReceivedTime Date/Time
RecipientReassignmentProhibited Yes/No
ReminderOverrideDefault Yes/No
ReminderPlaySound Yes/No
ReminderSet Yes/No
ReminderSoundFile Text
ReminderTime Date/Time
ReplyRecipientNames Text
Saved Yes/No
SenderName Text
Sent Yes/No
SentOn Date/Time
SentOnBehalfOfName Text
Size Number
Subject Text
Submitted Yes/No
To Text
UnRead Yes/No
VotingOptions Text
VotingResponse Text
Attachments Text

puis le code pour importer les données :

Sub btnImportMail_Click()
Dim strAttachment As String
Dim rsMail As dao.Recordset

Dim OlApp As New Outlook.Application
Dim OlMapi As Outlook.NameSpace
Dim OlFolder As Outlook.MAPIFolder
Dim OlItems As Outlook.MailItem
Dim OlAttach As Outlook.Attachment

Set OlApp = CreateObject("Outlook.Application")
Set OlMapi = OlApp.GetNamespace("MAPI")
Set OlFolder = OlMapi.PickFolder

Set rsMail = CurrentDb.OpenRecordset("tblMails")

For Each OlItems In OlFolder.Items

For Each OlAttach In OlItems.Attachments
strAttachment = strAttachment & OlAttach.DisplayName & vbCrLf
Next OlAttach

With rsMail
.AddNew
.Fields("AlternateRecipientAllowed") = OlItems.AlternateRecipientAllowed
.Fields("AutoForwarded") = OlItems.AutoForwarded
.Fields("BCC") = OlItems.BCC
.Fields("BillingInformation") = OlItems.BillingInformation
.Fields("Body") = OlItems.Body
.Fields("Categories") = OlItems.Categories
.Fields("CC") = OlItems.CC
.Fields("Companies") = OlItems.Companies
.Fields("ConversationIndex") = OlItems.ConversationIndex
.Fields("ConversationTopic") = OlItems.ConversationTopic
.Fields("CreationTime") = OlItems.CreationTime
.Fields("DeferredDeliveryTime") = OlItems.DeferredDeliveryTime
.Fields("DeleteAfterSubmit") = OlItems.DeleteAfterSubmit
.Fields("EntryID") = OlItems.EntryID
.Fields("ExpiryTime") = OlItems.ExpiryTime
.Fields("FlagDueBy") = OlItems.FlagDueBy
.Fields("FlagRequest") = OlItems.FlagRequest
.Fields("HTMLBody") = OlItems.HTMLBody
.Fields("InternetCodepage") = OlItems.InternetCodepage
.Fields("IsConflict") = OlItems.IsConflict
.Fields("LastModificationTime") = OlItems.LastModificationTime
.Fields("MessageClass") = OlItems.MessageClass
.Fields("Mileage") = OlItems.Mileage
.Fields("NoAging") = OlItems.NoAging
.Fields("OriginatorDeliveryReportRequested") = OlItems.OriginatorDeliveryReportRequested
.Fields("OutlookInternalVersion") = OlItems.OutlookInternalVersion
.Fields("OutlookVersion") = OlItems.OutlookVersion
.Fields("ReadReceiptRequested") = OlItems.ReadReceiptRequested
.Fields("ReceivedByEntryID") = OlItems.ReceivedByEntryID
.Fields("ReceivedByName") = OlItems.ReceivedByName
.Fields("ReceivedOnBehalfOfEntryID") = OlItems.ReceivedOnBehalfOfEntryID
.Fields("ReceivedOnBehalfOfName") = OlItems.ReceivedOnBehalfOfName
.Fields("ReceivedTime") = OlItems.ReceivedTime
.Fields("RecipientReassignmentProhibited") = OlItems.RecipientReassignmentProhibited
.Fields("ReminderOverrideDefault") = OlItems.ReminderOverrideDefault
.Fields("ReminderPlaySound") = OlItems.ReminderPlaySound
.Fields("ReminderSet") = OlItems.ReminderSet
.Fields("ReminderSoundFile") = OlItems.ReminderSoundFile
.Fields("ReminderTime") = OlItems.ReminderTime
.Fields("ReplyRecipientNames") = OlItems.ReplyRecipientNames
.Fields("Saved") = OlItems.Saved
.Fields("SenderName") = OlItems.SenderName
.Fields("Sent") = OlItems.Sent
.Fields("SentOn") = OlItems.SentOn
.Fields("SentOnBehalfOfName") = OlItems.SentOnBehalfOfName
.Fields("Size") = OlItems.Size
.Fields("Subject") = OlItems.subject
.Fields("Submitted") = OlItems.Submitted
.Fields("To") = OlItems.To
.Fields("UnRead") = OlItems.UnRead
.Fields("VotingOptions") = OlItems.VotingOptions
.Fields("VotingResponse") = OlItems.VotingResponse
.Fields("Attachments") = strAttachment
.Update
End With
strAttachment = ""
Next OlItems

rsMail.Close
MsgBox "Les données ont été importées dans la table"
Set rsMail = Nothing

Set OlApp = Nothing
Set OlMapi = Nothing
Set OlFolder = Nothing
Set OlItems = Nothing
Set OlAttach = Nothing

End Sub

HTH
--
à+
Arnaud
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------
Avatar
Gantzer Stéphan
Merci beaucoup.
J'ai crée la table et fait une importation, c'est super.
j'ai juste du passer
.Fields("InternetCodepage") = OlItems.InternetCodepage
.Fields("IsConflict") = OlItems.IsConflict
Pour lesquels j'avais une erreur.
Et tous les champs texte de la table, passer "chaine vide autorisée" à oui.

J'ai remodifié mon 1er code et ajouté un espion pendant l'exécution pour
voir les valeurs des expressions.
Avatar
Anor
Bonjour

Gantzer Stéphan :
| Merci beaucoup.
| J'ai crée la table et fait une importation, c'est super.
| j'ai juste du passer
| .Fields("InternetCodepage") = OlItems.InternetCodepage
| .Fields("IsConflict") = OlItems.IsConflict
| Pour lesquels j'avais une erreur.
| Et tous les champs texte de la table, passer "chaine vide autorisée"
| à oui.
|
| J'ai remodifié mon 1er code et ajouté un espion pendant l'exécution
| pour voir les valeurs des expressions.

oui je n'ai pas encore trop regardé dans le détail ce que ça donnait.

les 2 erreurs proviennent probablement du fait que j'ai extrait les champs
en regardant les propriétés directes de l'objet pour outlook 2002.

De toute façon, il y en a plein qui ne te serviront probablement jamais,
et il est facile de les supprimer et de la table, et du code.

A l'image des attachments, il y a peut-être quelques propriétés indirectes
intéressantes à ramener mais je n'ai pas encore regardé lesquelles.

reste plus qu'à déplacer ou supprimer les mails importés en fin de code ;-)

--
à+
Arnaud
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------
Avatar
Anor
Bonjour Stéphan

J'ai mis à jour la page suivante pour quelques manipulations Access/Outlook :

http://www.anor.fr.st/outlook.htm

c'est plus clair que le brouillon que j'avais posté et qui reprenait
toutes les propriétés de l'objet Item donc y compris celles inutilisées
dans les messages outlook.

Tiens, l'adresse que tu donnes me dit quelque chose ...
ah oui, outlook redemption pour programmer outlook
en contournant certaines sécurités.

allez, je vais aller voir ce que fait ce outlookspy ;-))

--
à+
Arnaud
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - www.anor.fr.st
----------------------------------------------

Gantzer Stéphan a élucidé :
| Bonjour à tous,
| Je ne comprend pas la subtille différence entre les deux codes,
| l'essentiel est que ça marche.
| Avec ça je vais pouvoir me débrouiller.
| J'ai également utilisé Outlookspy ( http://www.dimastr.com/outspy )
| pour mieux "voir" les résultat des propriétés et les méthodes d'accès
| à outlook Dommage qu'il soit si cher pour quelques utlisations ( 50$).
| Encore merci de votre aide.
| Gantzer Stéphan
|
|
|
|