OVH Cloud OVH Cloud

Renommer pièces jointes

2 réponses
Avatar
Florent
Bonjour,

Voil=E0 je reviens sur ma fonction de r=E9cup=E9ration de pi=E8ces=20
jointes. Cette fois-ci je souhaiterais renommer les pi=E8ces=20
jointes qui ont le m=EAme nom. Voici ce que j'ai utilis=E9:

Function SaveAttachments(strPath As String)

Dim OlApp As New Outlook.Application
Dim OlMAPI As Outlook.NameSpace
Dim OlItems As Outlook.Items
Dim OlItem As Outlook.MailItem
=20
Dim strAttachment As String
Dim NbAttachments As Integer
Dim i As Integer
Dim NbEmails As Integer
=20
Set OlMAPI =3D OlApp.GetNamespace("MAPI")
Set OlItems =3D OlMAPI.PickFolder.Items
=20
For Each OlItem In OlItems
If OlItem.ReceivedTime > Date & " 00:00" Then
NbAttachments =3D OlItem.Attachments.Count
i =3D 1
=20
Do While i <=3D NbAttachments
strAttachment =3D OlItem.Attachments.Item(i).FileName
If i > 1 Then
If OlItem.Attachments.Item(i - 1).FileName =3D=20
OlItem.Attachments.Item(i).FileName Then
OlItem.Attachments.Item(i).SaveAsFile strPath & i=20
& strAttachment
Else
OlItem.Attachments.Item(i).SaveAsFile strPath &=20
strAttachment
End If
End If
=20
i =3D i + 1
Loop
End If
Next OlItem

MsgBox "Copie des CV termin=E9e"
=20
Set OlItem =3D Nothing
Set OlItems =3D Nothing
Set OlMAPI =3D Nothing
Set OlApp =3D Nothing

End Function

Le probl=E8me est que les pi=E8ces jointes identiques ne sont=20
pas renomm=E9e et donc sont =E9cras=E9es au fur et mesure. Il ne=20
reste donc que le derni=E8re. O=F9 est le probl=E8me ?

2 réponses

Avatar
Raymond
Bonsoir.

A mon avis ton test de :
If OlItem.Attachments.Item(i - 1).FileName OlItem.Attachments.Item(i).FileName Then
n'est pas suffisant pour être sûr de ne pas avoir de doublons.
en général quand on sauvegarde les pièces jointes de la boîte de réception,
on ne teste pas le doublon en tant que nom de fichier, mais on crée un
nouveau nom comme tu le fais avec la date yyyymmdd & "_" & indice & "_" &
nom de la pièce

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Florent" a écrit dans le message de
news:080901c3915f$be413150$
Bonjour,

Voilà je reviens sur ma fonction de récupération de pièces
jointes. Cette fois-ci je souhaiterais renommer les pièces
jointes qui ont le même nom. Voici ce que j'ai utilisé:

Function SaveAttachments(strPath As String)

Dim OlApp As New Outlook.Application
Dim OlMAPI As Outlook.NameSpace
Dim OlItems As Outlook.Items
Dim OlItem As Outlook.MailItem

Dim strAttachment As String
Dim NbAttachments As Integer
Dim i As Integer
Dim NbEmails As Integer

Set OlMAPI = OlApp.GetNamespace("MAPI")
Set OlItems = OlMAPI.PickFolder.Items

For Each OlItem In OlItems
If OlItem.ReceivedTime > Date & " 00:00" Then
NbAttachments = OlItem.Attachments.Count
i = 1

Do While i <= NbAttachments
strAttachment = OlItem.Attachments.Item(i).FileName
If i > 1 Then
If OlItem.Attachments.Item(i - 1).FileName OlItem.Attachments.Item(i).FileName Then
OlItem.Attachments.Item(i).SaveAsFile strPath & i
& strAttachment
Else
OlItem.Attachments.Item(i).SaveAsFile strPath &
strAttachment
End If
End If

i = i + 1
Loop
End If
Next OlItem

MsgBox "Copie des CV terminée"

Set OlItem = Nothing
Set OlItems = Nothing
Set OlMAPI = Nothing
Set OlApp = Nothing

End Function

Le problème est que les pièces jointes identiques ne sont
pas renommée et donc sont écrasées au fur et mesure. Il ne
reste donc que le dernière. Où est le problème ?
Avatar
Florent
Oui effectivement, je pense également que c'est mieux de
renommer directement les pièces.

Merci





-----Message d'origine-----
Bonsoir.

A mon avis ton test de :
If OlItem.Attachments.Item(i - 1).FileName =
OlItem.Attachments.Item(i).FileName Then
n'est pas suffisant pour être sûr de ne pas avoir de
doublons.

en général quand on sauvegarde les pièces jointes de la
boîte de réception,

on ne teste pas le doublon en tant que nom de fichier,
mais on crée un

nouveau nom comme tu le fais avec la date yyyymmdd & "_"
& indice & "_" &

nom de la pièce

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Florent" a écrit dans le message de
news:080901c3915f$be413150$
Bonjour,

Voilà je reviens sur ma fonction de récupération de pièces
jointes. Cette fois-ci je souhaiterais renommer les pièces
jointes qui ont le même nom. Voici ce que j'ai utilisé:

Function SaveAttachments(strPath As String)

Dim OlApp As New Outlook.Application
Dim OlMAPI As Outlook.NameSpace
Dim OlItems As Outlook.Items
Dim OlItem As Outlook.MailItem

Dim strAttachment As String
Dim NbAttachments As Integer
Dim i As Integer
Dim NbEmails As Integer

Set OlMAPI = OlApp.GetNamespace("MAPI")
Set OlItems = OlMAPI.PickFolder.Items

For Each OlItem In OlItems
If OlItem.ReceivedTime > Date & " 00:00" Then
NbAttachments = OlItem.Attachments.Count
i = 1

Do While i <= NbAttachments
strAttachment = OlItem.Attachments.Item
(i).FileName

If i > 1 Then
If OlItem.Attachments.Item(i - 1).FileName =
OlItem.Attachments.Item(i).FileName Then
OlItem.Attachments.Item(i).SaveAsFile strPath & i
& strAttachment
Else
OlItem.Attachments.Item(i).SaveAsFile strPath &
strAttachment
End If
End If

i = i + 1
Loop
End If
Next OlItem

MsgBox "Copie des CV terminée"

Set OlItem = Nothing
Set OlItems = Nothing
Set OlMAPI = Nothing
Set OlApp = Nothing

End Function

Le problème est que les pièces jointes identiques ne sont
pas renommée et donc sont écrasées au fur et mesure. Il ne
reste donc que le dernière. Où est le problème ?

.