Pièces jointes sous outlook

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 111 fois - Téléchargée 43 fois

Contenu du snippet

Ce programme prends les mails dans la boite de reception d'Outlook et cherche tous ceux qui ont été envoyé par formulaire html. Pour ces mails, la pièce jointe (appelé POSTDATA.ATT) est enregistrée dans un répertoire et subit le traitement "enregistrement" que je n'ai pas détaillé ici.

Source / Exemple :


Option Compare Binary
Option Explicit

Public Sub messagerie()

Dim objOutlook As outlook.Application           'représente l'application outlook
Dim objItems As outlook.Items                   'représente un objet outlook
Dim objMailItem As MailItem                     'représente un mail
Dim PJ As Attachment                            'représente un fichier joint
Dim mailIndex As Integer                        'représente le numéro d'indexation des mails
Dim cpt As Integer                              'compteur de mails traités
Dim msg As String                               'message donnant le nombre de mail traité
Dim reponse                                     'affichage de msg

cpt = 0                                         'initialisation

Set objOutlook = New outlook.Application        'objOutlook devient l'application

Set objItems = objOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
                                                'objItems représente la boîte de reception

For mailIndex = 1 To objItems.Count             'pour index de mail allant de 1 au nb total de mail

    
    Set objMailItem = objItems.Item(mailIndex)  'objMailItem devient le mail indexé par mailIndex
    
    If objMailItem.Subject Like "Formulaire posté avec Microsoft Internet Explorer." Then
                                                'si le sujet du mail est "Form..." alors
        
        Set PJ = objMailItem.Attachments.Item(1)  'PJ reçoit la 1ere pîèce jointe de ce mail
                                                'et la seule mais objMailItem.Attachemennts est
                                                'l'ensemble de ses pièces jointes
                                                'Il faut donc préciser le numéro de celui qui nous
                                                'interresse
        PJ.SaveAsFile "c:\sondage\" & PJ.DisplayName
                                                'On sauve la pièce jointe dans le dossier sondage
                                                'le fichier s'appelle comme la pièce jointe
        Call enregistrement                     'appel de la fonction enregistrement non présente
                                                '(faite moi savoir si vous le voulez (c'est du traitement
                                                'de chaine de caratères)
        objMailItem.Delete                      'destuction du mail
                                                'qui entraine des changement dans l'indexation
                                                'des mails
        Set objItems = objOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
                                                'on recommence l'indexation

        mailIndex = 0                           'on remet l'index à 0 (cette instruction ne semble pas
                                                'fonctionner ! ????
        cpt = cpt + 1                           'et on incrémente le nombre de mail traité
    End If
    
    Select Case mailIndex                       'ces instructions servent à résoudre le problème
        Case objItems.Count: Exit For           'de la réinitialisation de l'index (nécessaire après le delete !)
    End Select                                  'Si l'index est égale au nombre de mail, il faut sortir.
                                                'Si ces lignes ne sont pas écrites, l'index est incrémenté
                                                'et devient donc > à la valeur d'arrêt.
                                                'le programme continue la boucle for
                                                'entrainant des bugs
Next
    msg = cpt & " mail(s) traité(s)"            'enregistrement du message
    reponse = MsgBox(msg, 0)                    'affichage
    End Sub

Conclusion :


Pas de bug connu.
Pour ceux que ça intéresse, j'ai aussi le code de l'enregistrement (ouverture de fichier, traitement de caractère pour enregistrer les données envoyé par formulaire (D)HTML dans Access. Pour le niveau, j'en sais rien vu que je débute en VB alors je vais mettre '2'

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
jeudi 11 décembre 2008
Statut
Membre
Dernière intervention
2 janvier 2009

j'ai une petite question, comment ajouter ce code sur un module standard, j'ai créé une macro pour lancer le code sans resultat
Messages postés
4
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
26 août 2008

Bonjour,

Pour ma part, j'ai un souci ligne 28....
"Erreur type 13" Incompatibilité de type...

Je suis sous Outlook 2007 et je tiens aussi à préciser que ce code à fonctionné avant même après quelques modifs de mon cru.(pas de changement au niveau de cette ligne ou des déclarations)..

Any idea?
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
5
Est-ce que quelqu'un saurait comment faire pour avoir un accusé de reception?
Messages postés
7
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
16 décembre 2005

Bonjour,
Quel bonheur que de trouver cette source!
Débutant en vb script j'avais pour besoin de scanner ma boite outlook afin de récupérer les pieces jointes (3 PJ, fichiers textes à insérer dans une base oracle) de mails dont l'objet reste le même.
Ton code m'a rendu un grand service et m'a fait gagner un temps précieux
Ce petit commentaire pour un grand merci.
Bonne continuation!
Messages postés
2
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
17 mai 2006

Pour Zorba55 :
Tu as certainement oublier d'aller dans le menu Outils>References pour cocher la case Microsoft Office 10.0 Object Library.
Sinon colle le code dans un nouveau module sous vba dans outlook (touches ALT+F11).
Voila sinon ce code m'a fait gagner un temps précieux en recherche. Donc lot of thanks !!!!
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.