2011-06-30 3 views
1

J'ai le code vba suivant qui enregistre les pièces jointes dans un e-mail.Extrait les pièces jointes msg de Outlook email

Cela fonctionne très bien pour .docx, .jpg etc. mais je dois l'utiliser pour extraire plusieurs pièces jointes .msg qui ne fonctionnent pas.

Le code est

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 

saveFolder = "C:\Test\" 
For Each objAtt In itm.Attachments 
stFileName = saveFolder & "\" & objAtt.DisplayName 
i = 0 
JumpHere: 
If Dir(stFileName) = "" Then 
objAtt.SaveAsFile stFileName 
Else 
i = i + 1 
stFileName = saveFolder & "\" & i & " - " & objAtt.DisplayName 
GoTo JumpHere 
End If 
Set objAtt = Nothing 
Next 
End Sub 

L'erreur concerne la ligne - Si Dir (stFileName) = "" Alors

+0

Vous ** ne devriez vraiment pas utiliser ** le 'GoTo'statement dans VBA! Voici une discussion à illustrer: http://www.eggheadcafe.com/software/aspnet/32608532/goto-statement-in-vba.aspx – JMax

+0

Merci - on dirait de revenir à la planche à dessin ... – Haribo83

+0

@ Haribo83: peut-être Nous pouvons vous aider à concevoir ce que vous essayez de faire. Pouvez-vous nous expliquer le but de cette partie du code? – JMax

Répondre

1

Après notre chat, voici le code final:

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
Dim objAtt As Outlook.Attachment 
Dim saveFolder As String 
Dim i As Integer 

saveFolder = "C:\Test\" 
For Each objAtt In itm.Attachments 
    stFileName = saveFolder & objAtt.FileName 
    i = 0 
    'Loop to find the first available filename 
    Do While Dir(stFileName) <> "" 
    i = i + 1 
    stFileName = saveFolder & i & " - " & objAtt.FileName 
    Loop 
    objAtt.SaveAsFile stFileName 
Next 
End Sub 

Cordialement,

Max

+0

+1 mais notez que 'While ... Wend' est obsolète. VBA help: "L'instruction Do ... Loop fournit une manière plus structurée et flexible d'effectuer une boucle." Pour "émuler" 'While ... Wend', utilisez' Do While ... Loop'. –

+0

Merci Jean-François de me l'avoir signalé. Je vais modifier mon post pour le corriger. – JMax

Questions connexes