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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
Sub test_saveAttachtoDisk()
saveAttachtoDisk ActiveInspector.CurrentItem
End Sub
Public Sub saveAttachtoDiskTest(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim pj, TypeAtt
saveFolder = "C:\temp\pj"
saveFolder = saveFolder & "\" & remplaceCaracteresInterdit(itm.SenderName) & "\" & remplaceCaracteresInterdit(itm.Subject) & "[" & Format(itm.ReceivedTime, "ddmmyy-hhnn") & "]"
Call waaps_creedir(saveFolder)
For Each objAtt In itm.Attachments
TypeAtt = PJ_Isembedded(pj)
If TypeAtt = False Then
objAtt.SaveAsFile saveFolder & "\" & remplaceCaracteresInterdit(objAtt.DisplayName)
End If
Set objAtt = Nothing
Next
End Sub
Function remplaceCaracteresInterdit(ByVal CheminStr As String)
Dim objCurrentMessage As Outlook.MailItem
Dim liste As Variant
Dim L
liste = Array("\", "/", ":", "*", "?", "<", ">", "|", """", vbTab, Chr(7))
For L = 0 To UBound(liste)
CheminStr = Replace(CheminStr, liste(L), "")
Next L
remplaceCaracteresInterdit = CheminStr
'MsgBox CheminStr
End Function
Private Function waaps_creedir(lerep As String) As Boolean
'----------------------------------------------------------------------
' FUNCTION : waaps_creedir
' Création d'un répertoire (récursif)
'----------------------------------------------------------------------
' Paramètres :
' rep : répertoire à créer par son chemin relatif % au root
'----------------------------------------------------------------------
' retour : True si le répertoire est créé
'----------------------------------------------------------------------
' Global utilisé : REP_TOP
'----------------------------------------------------------------------
' COPYRIGHTS : 1994-2005 CAXTON / WAAPS / BRUNO VILLACAMPA
' Utilisation commerciale interdite
' Utilisation personnelle / professionnelle autorisée
' Le message courant doit être préservé
'----------------------------------------------------------------------
On Error Resume Next
Dim fso As Object, i As Integer, retour As Boolean
Dim rp As String, r
Dim rep, REP_TOP
Set fso = CreateObject("Scripting.filesystemobject")
rp = Replace(lerep, "\", "/")
rp = Replace(rp, "//", "/")
rep = Split(rp, "/")
r = REP_TOP
retour = True
For i = 0 To UBound(rep)
If (rep(i) <> "") Then
r = r & rep(i) & "\"
If (Not fso.FolderExists(r)) Then
fso.CreateFolder (CStr(r))
If (Not fso.FolderExists(r)) Then retour = False
End If
End If
Next
Set fso = Nothing
waaps_creedir = retour
End Function
Function PJ_Isembedded(ByVal pj As Attachment) As Boolean
'---------------------------------------------------------------------------------------
' Procedure : PJ_Isembedded pour OL2010
' Author : OLIV-
' Date : 05/06/2015
' Version : 2
' Purpose : Indique VRAI si une PIECE JOINTE est INCORPOREE dans le Corps du Mail
'---------------------------------------------------------------------------------------
'
Dim oPA As Outlook.PropertyAccessor
Dim ATTACH_MIME_TAG
Dim ATTACH_CONTENT_ID
Dim ATTACHMENT_HIDDEN
Dim ATTACH_FLAGS
Dim ATTACH_CONTENT_LOCATION
Dim ATTACH_METHOD
Const PR_ATTACH_MIME_TAG = "http://schemas.microsoft.com/mapi/proptag/0x370E001E"
Const PR_ATTACHMENT_HIDDEN = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B"
Const PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001E"
Const PR_ATTACH_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x37140003"
Const PR_ATTACH_CONTENT_LOCATION = "http://schemas.microsoft.com/mapi/proptag/0x3713001E"
Const PR_ATTACH_METHOD = "http://schemas.microsoft.com/mapi/proptag/0x37050003"
Set oPA = pj.PropertyAccessor
On Error Resume Next
ATTACH_MIME_TAG = oPA.GetProperty(PR_ATTACH_MIME_TAG)
ATTACHMENT_HIDDEN = oPA.GetProperty(PR_ATTACHMENT_HIDDEN)
ATTACH_CONTENT_ID = oPA.GetProperty(PR_ATTACH_CONTENT_ID)
ATTACH_FLAGS = oPA.GetProperty(PR_ATTACH_FLAGS)
ATTACH_CONTENT_LOCATION = oPA.GetProperty(PR_ATTACH_CONTENT_LOCATION)
ATTACH_METHOD = oPA.GetProperty(PR_ATTACH_METHOD)
'MsgBox pj & vbCr & "PR_ATTACH_MIME_TAG=" & ATTACH_MIME_TAG _
& vbCr & "PR_ATTACHMENT_HIDDEN=" & ATTACHMENT_HIDDEN _
& vbCr _
& vbCr & "PR_ ATTACH_CONTENT_ID=" & ATTACH_CONTENT_ID _
& vbCr & "PR_ATTACH_FLAGS=" & ATTACH_FLAGS _
& vbCr & "PR_ATTACH_CONTENT_LOCATION=" & ATTACH_CONTENT_LOCATION _
& vbCr & "PR_ATTACH_METHOD=" & ATTACH_METHOD
If (ATTACH_CONTENT_ID <> "" And ATTACH_FLAGS = 4) Or ATTACH_METHOD = 6 Then
PJ_Isembedded = True
Else
PJ_Isembedded = False
End If
End Function |
Partager