IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Récupérer toutes les piéces jointes des messages selctionnés


Sujet :

VBA Outlook

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Récupérer toutes les piéces jointes des messages selctionnés
    Bonjour,

    Je souhaite récupérer toutes les piéces jointes d'une selection de messages. Pour cela j'ai récupéré quelques lignes de codes (ci-dessous) afin de faire une macro VBA.
    Cela marche partiellement car si je selectionne 200 messages avec chacun une piéce jointe je n'aurai que 90 fichiers enregistrés dans mon repertoire.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim myOlApp As New Outlook.Application
    Dim myOlExp As Outlook.Explorer
    Dim myOlSel As Outlook.Selection
     
    Set myOlExp = myOlApp.ActiveExplorer
    Set myOlSel = myOlExp.Selection
     
    /* MyOlsel.count contient 200 éléments */   
    For i = 1 To myOlSel.Count
        If myOlSel.Item(i).Attachments.Count > 0 Then
            myOlSel.Item(i).Attachments.Item(1).SaveAsFile "C:\" & i & "name.jpg"
        End If
    Next
    Pourtant si je rajoute l'index manuellement et non pas dans une boucle alors il est bien écrit.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myOlSel.Item(197).Attachments.Item(1).SaveAsFile "C:\test\" & "197" & "name.jpg"
    Et ensuite si je relance l'extraction des piéces jointes en enlevant la partie avec l'index manuel (et bien entendu j'ai effacé mon repertoire destination avant) j'aurai bien mes 90 fichiers du départ et par contre le fichier 197name.jpg d'écrit aussi mais toujours pas le reste. je précise que le fichier 197name.jpg correspond bien à la piéce jointe de mon 197 iéme mail de ma sélection. et pareil pour les 90 premiers. La boucle parcours biens 200 éléments avec à chaque fois le bon Item(i).Attachments.

    Je pense à un problème de sécurité mais j'ai beau désactiver les sécurités dans outlook, globalement à XP je ne trouve pas. je n'ais plus d'idée. Je ne sais pas comment debuger ou avoir des infos sur le retour de la fonction SaveAsFile.
    Je suis avec outlook 2003 et VBA 6.5.

    Merci bien pour toutes idées éventuelle.

  2. #2
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Essaye ca ca marche tres bien de mon coté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Dim MonMail As Outlook.MailItem
    Dim Olk_selex As Outlook.Selection
    Dim OutlookApp As New Outlook.Application
    Dim OutlookExp As Outlook.Explorer
    Dim MonNSpace As Outlook.NameSpace
    Dim MyPath, myort, ext, a As String
    Dim i, j As Integer
    Dim MesAttachments
     
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookExp = OutlookApp.ActiveExplorer
    Set MonNSpace = OutlookApp.GetNamespace("MAPI")
    Set Olk_selex = OutlookExp.Selection
     
    For i = 1 To Olk_selex.Count
     
            Set MonMail = Olk_selex.Item(i)        
            Set MesAttachments = MonMail.Attachments ' recuperation des PJs
     
            If MesAttachments.Count > 0 Then
     
                For j = 1 To MesAttachments.Count
     
                        MesAttachments(j).SaveAsFile Monchemin & _
                        MesAttachments(j).DisplayName                       
     
                Next j
     
            End If
     
    Next i
    Chipss

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse,

    Je n'ai pas encore compris exactement le problème mais à priori c'est un souci au niveau du dossier "Temporary Internet Files". Je m'explique, chacune de mes messages contient un fichier en attachement qui porte exactement le même nom pour tous les messages. Lorsque je parcours les messages le premier fichier du premier message est d'abord transféré vers le dossier "Temporary Internet Files" puis copié vers l'emplacement que je lui indique dans la fonction SaveAsFile. Le deuxième fichier du deuxième message va lui aussi être copié dans " "Temporary Internet Files" mais avec une numérotation.
    Ex: name.txt puis name(1).txt etc jusqu'à name(99).txt et ensuite cela semble poser un problème et il s'arrête la ...
    Donc en effaçant régulièrement le contenu du répertoire cela fonctionne...
    Comme je n'ais pas encore compris exactement le problème je n'ai pas de solution élégante.
    Surtout que ce n'est pas stocké directement dans le dossier "Temporary Internet Files" mais dans un sous dossier (OLK34A) qui n'est pas toujours le même.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/12/2012, 22h15
  2. Réponses: 1
    Dernier message: 10/10/2012, 00h21
  3. [OL-2007] image en pièce jointe qui s'affiche avec toutes les pièces jointes
    Par Morgann Noémie dans le forum Outlook
    Réponses: 3
    Dernier message: 14/12/2010, 10h32
  4. Réponses: 0
    Dernier message: 23/11/2009, 18h35
  5. Récupérer les pièces jointes des emails d'outlook
    Par Décibel dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/05/2008, 21h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo