OVH Cloud OVH Cloud

Sauvegarde d'un objet

12 réponses
Avatar
Andre
Bonjour à tous,

J'ai une secrétaire qui me fait une gaffe depuis un certain temps.
Lorsqu'elle sauve un attachement d'un émail, elle sauvegarde TOUT le mail en
format Word.

Résultat: J'ai aujourd'hui 1245 documents word qui représentent les mails.

Maintenant, je dois récupérer tous les fichiers attachés.

C'est faisable en faisant un clic droit sur l'objet et dans le menu qui
apparais, je dois faire:
- File Object => Save as

Vu que j'ai 1245 documents Word à ouvrir, j'aimerais automatiser le travail.

Comment???

Lorsque j'exécute l'enregistreur de macro, je pers le bouton droit de la souris.


Merci d'avance pour votre aide

Andre

2 réponses

1 2
Avatar
Geo
Bonjour

Set attache = .OLEFormat.Object ' l'erreur se fait sur cette ligne.



Par contre
.Oleformat.Edit
ou
.Oleformat.Open

Permettent d'ouvrir ou d'enregistrer le fichier.

--
A+


Avatar
Andre
Bonjour,

Pour commencer, j'aimerais remercier Geo et Anacoluthe pour votre support et
d'accepter de donner de votre temps pour moi.

Voici la situation:
Cela fonctionne très bien en mode "pas à pas". Mais lorsque je le fait
fonctionner en automatique, il n'active pas l'objet OLE, mais le document
principal.

J'essaie de trouver le moyen de mettre l'objet OLE dans ma variable 'attache'.

Remarque sur le point (1) dans le code:

Lorsque j'observe le stack, je vois (en automatique), que le document principal
est en index 1 et l'objet OLE en index 2. En mode "pas à pas", c'est l'inverse.
Si je suis certain (à 100%) que l'objet OLE sera TOUJOURS en index 2, alors ma
solution est trouvée.

Mais j'ose pas m'aventurer!

Qu'en pensez-vous?

André

Sub test()
Dim objDoc As Word.Document
Dim attache As Word.Document
chemin = "D:FichierWord"
ct = 1
fichier = Dir(chemin)
While fichier <> ""
If Right(fichier, 3) = "rtf" Then
nom = fichier
Set objDoc = Application.Documents.Open(chemin & fichier)
If objDoc.InlineShapes.Count > 0 Then

' L'Objet OLE s'ouvre correctement.
' J'ai essayé également l'autre instruction (Edit)
' Même résultat
' ------------------------------------------------
objDoc.InlineShapes(1).OLEFormat.Open

' C'est ici qu'est le problème:
' En "pas à pas", c'est impeccable, cela fonctionne.
' En "automatique",il selectionne le document principal (objDoc)
' -------------------------------------------------------------
Set attache = ActiveDocument ' (1) voir la remarque ci-dessus
nom = attache.Name

p = InStr(1, nom, ".")
If p > 0 Then
nom = Left(nom, p - 1) & CStr(ct) & Mid(nom, p, Len(nom))
End If
ct = ct + 1
attache.SaveAs chemin & nom
attache.Close
End If
objDoc.Close
End If
fichier = Dir
Wend
MsgBox "fini"
End Sub
1 2