Export mail Outlook sur disque dur avec modification de date

Bonjour

Je ne trouve pas d'équivalent ou de réponses sur d'autre forum sur Outlook alors je me permets de poser la question.

Je cherche à exporter par une macro vba dans Outlook un email sélectionner ou ouvert pour l'enregistrement sur mon disque dur avec en date du fichier la date de réception ou d'envoi du mail.

Pouvez-vous m'aider ?

Bonjour,

Une première piste.

Assurez-vous d’activer les références Microsoft Outlook dans l’éditeur VBA avant d’exécuter ce code. Vous pouvez le faire en allant dans Outils -> Références et en cochant Microsoft Outlook XX.0 Object Library, où XX est la version de votre Outlook.

Sub EnregistrerMail()
    Dim MailItem As Outlook.MailItem
    Dim Filepath As String
    Dim Filename As String

    ' Définir le chemin d'accès où vous voulez enregistrer l'e-mail
    Filepath = "C:\VotreChemin\"

    ' Vérifier si un e-mail est sélectionné
    If TypeName(Outlook.Application.ActiveWindow) = "Inspector" Then
        Set MailItem = Outlook.Application.ActiveInspector.CurrentItem
    Else
        Set MailItem = Outlook.Application.ActiveExplorer.Selection.Item(1)
    End If

    ' Définir le nom du fichier avec la date de réception ou d'envoi
    Filename = MailItem.ReceivedTime.Format("yyyy-mm-dd") & " " & MailItem.Subject & ".msg"

    ' Enregistrer l'e-mail en tant que fichier .msg
    MailItem.SaveAs Filepath & Filename, olMSG
End Sub

Bonjour

Merci pour votre retour.

Je ne dispose pas de cette librairie (je dispo d'office prof plus 2016), à la compilation la macro bloque sur cette ligne:

Filename = MailItem.ReceivedTime.Format("yyyy-mm-dd") & " " & MailItem.Subject & ".msg"

Il ne connait pas la fonction ? Comment contourner le problème

Merci pour l'aide

Code modifié

'Enregistrer le courrier sous forme de fichier
Sub EnregistrerMail()
    Dim MailItem As Outlook.MailItem
    Dim Filepath As String
    Dim Filename As String

    ' Définir le chemin d'accès où vous voulez enregistrer l'e-mail
    Filepath =  Filepath = "C:\VotreChemin\"

    ' Vérifier si un e-mail est sélectionné
    If TypeName(Outlook.Application.ActiveWindow) = "Inspector" Then
        Set MailItem = Outlook.Application.ActiveInspector.CurrentItem
    Else
        Set MailItem = Outlook.Application.ActiveExplorer.Selection.Item(1)
    End If

    ' Définir le nom du fichier avec la date de réception ou d'envoi
    Filename = Format(MailItem.ReceivedTime, "yyyy-mm-dd") & " " & MailItem.Subject & ".msg"

    ' Enregistrer l'e-mail en tant que fichier .msg
    MailItem.SaveAs Filepath & Filename, olMSG
End Sub

et pour trouver la référence Microsoft Outlook dans l’éditeur VBA

cellulexcel 259

Pour ma part cela fonctionne

cellulexcel 261

Re...

Je n'ai plus l'erreur lors de la compilation et j'ai bien activé la référence Microsoft....

J'ai créé le dossier sans rien toucher comme sur l'exemple.

J'ai essayé les 2 cas soit en sélectionnant l'email soit en l'ouvrant et j'ai lancé la macro....et rien ne se passe.

J'ai fait une fausse manip ou y a t-il une autre sécurité ?

Voila un exemple de chemin :

Filepath = "C:\Users\et1000lio\MES FICHIERS\MES FICHIERS\FICHIERS EXCEL PRATIQUE\"

qui correspond à l'endroit où vous souhaitez mettre le fichier format :

.msg

Votre Outlook contient-il plusieus boîtes mail ? Si c'est le cas cela est plus compliqué. Dans notre cas, le code correspond à votre boîte de référence outlook.

Merci

Pour ma part le chemin d'accès est correct

Je ne dispose que d'une seule boite mail mais j'ai plusieurs boites d'archives.

Pour le coup je ne pige pas pourquoi cela ne fonctionne pas

Bonjour,

Après nouveau test, il y avait une errreur de chemin de ma part dans le code

Filepath =  Filepath = "C:\VotreChemin\"

il faut lire :

Filepath = "C:\VotreChemin\"

Ci-après le nouveau code pour enregistrer le courrier sous forme de fichier

Sub EnregistrerMail()
    Dim MailItem As Outlook.MailItem
    Dim Filepath As String
    Dim Filename As String

    ' Définir le chemin d'accès où vous voulez enregistrer l'e-mail
    Filepath = "C:\VotreChemin\"

    ' Vérifier si un e-mail est sélectionné
    If TypeName(Outlook.Application.ActiveWindow) = "Inspector" Then
        Set MailItem = Outlook.Application.ActiveInspector.CurrentItem
    Else
        Set MailItem = Outlook.Application.ActiveExplorer.Selection.Item(1)
    End If

    ' Définir le nom du fichier avec la date de réception ou d'envoi
    Filename = Format(MailItem.ReceivedTime, "yyyy-mm-dd") & " " & MailItem.Subject & ".msg"

    ' Enregistrer l'e-mail en tant que fichier .msg
    MailItem.SaveAs Filepath & Filename, olMSG
End Sub

si tu souhaites modifier le nom du fichier .msg avant l'archivage, tu peux modifier le nom avec cette partie de code, via une InputBox

' Demander à l'utilisateur s'il veut modifier le nom du fichier
    UserInput = InputBox("Voulez-vous modifier le nom du fichier ?", "Modifier le nom du fichier", Filename)

    ' Si l'utilisateur a cliqué sur Cancel, UserInput sera vide
    If UserInput <> "" Then
        Filename = UserInput
    End If

    ' Enregistrer l'e-mail en tant que fichier .msg
    MailItem.SaveAs Filepath & Filename, olMSG

J'ai aussi un autre moyen pour archiver directement un mail via Outlook et sans passer par Excel.

Bonne journée

Bonjour

Merci beaucoup

Je regarde cela dès demain.

Excellente journée

Bonjour

Cela fonctionne parfaitement pour les messages reçus. Cependant pas pour les envoyés.

J'ai essayé de trouver un équivalent " MailItem.ReceivedTime " du type "SendTime" mais je n'en n'ai pas trouvé.

Rechercher des sujets similaires à "export mail outlook disque dur modification date"