Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2
Avatar
Anacoluthe
Bonjour !

'Andre' nous a écrit ...
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.
Lorsque j'exécute l'enregistreur de macro, je pers le bouton droit de la souris.


Ce n'est pas une question de souris ni de secrétaire. Word n'a pas de messageur.
Il sous-traite ces fonctions. Le vôtre est probablement une version d'Outlook.
L'enregistreur de macro ne peut pas sortir de Word.
Si vous retrouvez vos PJ dans des documents Word, il peut s'agir d'InlineShapes
(images ou icônes d'objets) qu'il serait possible d'enregistrer.

Anacoluthe
« On rejette toujours la faute sur le messager. »
- Donald WESTLAKE

Avatar
andre
Bonjour,

Merci pour votre réponse. Donc si je comprends, je vais devoir ouvrir les ± 1200
documents à la main !

Bon... allons y!

Andre

Ce n'est pas une question de souris ni de secrétaire. Word n'a pas de messageur.
Il sous-traite ces fonctions. Le vôtre est probablement une version d'Outlook.
L'enregistreur de macro ne peut pas sortir de Word.
Si vous retrouvez vos PJ dans des documents Word, il peut s'agir d'InlineShapes
(images ou icônes d'objets) qu'il serait possible d'enregistrer.

Anacoluthe
« On rejette toujours la faute sur le messager. »
- Donald WESTLAKE


Avatar
Geo

Bonjour,

Merci pour votre réponse. Donc si je comprends, je vais devoir ouvrir les ± 1200
documents à la main !

Bon... allons y!


Peut-être pas, au moins en théorie tout ce qu'on peut faire à la main
peut être fait par macro, mais comme vous l'indique Anacoluthe,
l'enregistreur de macros a des limites, il faut donc programmer
soi-même.
Si vous pouviez nous faire un petit exemple (non confidentiel) sur
www.cjoint.com, nous pourrions sans doute vous aider sur cette face
cachée que ne voit pas l'enregistreur et qui parait vous poser
problème.
Précisez aussi vos versions.


--
A+

Avatar
Andre
Bonjour,
C'est sympa...

J'ai mis à l'URL suivante un exemple de document ou je dois extraire le fichier
attaché et le sauvegarder dans un répertoire quelconque.

http://cjoint.com/?cziVBDyUFX


Si vous trouvez quelque chose ... je baisse mon chapeau et total respect.

André

Peut-être pas, au moins en théorie tout ce qu'on peut faire à la main
peut être fait par macro, mais comme vous l'indique Anacoluthe,
l'enregistreur de macros a des limites, il faut donc programmer
soi-même.
Si vous pouviez nous faire un petit exemple (non confidentiel) sur
www.cjoint.com, nous pourrions sans doute vous aider sur cette face
cachée que ne voit pas l'enregistreur et qui parait vous poser
problème.
Précisez aussi vos versions.




Avatar
Geo


J'ai mis à l'URL suivante un exemple de document ou je dois extraire le fichier
attaché et le sauvegarder dans un répertoire quelconque.

http://cjoint.com/?cziVBDyUFX


Je n'arrive pas à le lire, il est protégé ?

--
A+

Avatar
Andre
non, pas du tout
J'ai essayé le lien et il fonctionne très bien.
Le document est crée en Word 2003.

Autrement, donnez-moi votre adresse E-mail et je vous envoie le document.

André


http://cjoint.com/?cziVBDyUFX


Je n'arrive pas à le lire, il est protégé ?




Avatar
Anacoluthe
Bonjour !

'Andre' nous a écrit ...
J'ai mis à l'URL suivante un exemple de document ou je dois extraire le fichier
attaché et le sauvegarder dans un répertoire quelconque.


Comme je le disais, il s'agit bien d'un objet incorporé dans une forme en ligne
(inlineShape) en icône.

Vous devez disposer du serveur OLE gérant cet objet et lui passer la main.
Ne pas oublier de référencer l'application dans VBE
(votre objet est objet Outlook que je n'arrive pas à ouvrir dans ma version)

- Supposons pour simplifier l'objet comme document Word :
Dim monObjet as Word.Document
- Récupérons l'objet dans la 1ère InlineShape du document actif :
Set monObjet = ActiveDocument.InlineShapes(1).OLEFormat.Object
- Il devient facile de l'enregistrer :
monObjet.SaveAs "C:MesObjetstoto.doc"

Il suffit ensuite d'automatiser ça sur les 1200 documents avec un petit
coup de batchmacro (voir dans la FAQ) et le tour est joué.

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD

Avatar
Andre
Bonjour,

Merci pour le code, mais il ne fonctionne pas.
J'ai le message d'erreur suivant:
Run-time error 430
Class does not support Automation or does not support expected interface.

J'ai bien "Microsoft Word 11.0 Object library" et aussi "Microsoft Office 11.0
Object library" d'actif dans les références.

Est ce une librairie qui manquerait?

André

Voici le code que j'ai écris:
sub test()
Dim objDoc As Word.Document
Dim attache As Word.Document
chemin = "D:FichierWord"

fichier = Dir(chemin)
While fichier <> ""
If Right(fichier, 3) = "rtf" Then
Set objDoc = Application.Documents.Open(chemin & fichier)
If ActiveDocument.InlineShapes.Count > 0 Then
For Each ws In ActiveDocument.InlineShapes
With ws
Set attache = .OLEFormat.Object ' l'erreur se fait sur cette ligne.
MsgBox attache.Name
End With
' Set attache = ActiveDocument.InlineShapes(1).OLEFormat.Object
Next

attache.SaveAs chemin & "toto.doc"
End If
objDoc.Close
End If
fichier = Dir
Wend
End Sub




Comme je le disais, il s'agit bien d'un objet incorporé dans une forme en ligne
(inlineShape) en icône.

Vous devez disposer du serveur OLE gérant cet objet et lui passer la main.
Ne pas oublier de référencer l'application dans VBE
(votre objet est objet Outlook que je n'arrive pas à ouvrir dans ma version)

- Supposons pour simplifier l'objet comme document Word :
Dim monObjet as Word.Document
- Récupérons l'objet dans la 1ère InlineShape du document actif :
Set monObjet = ActiveDocument.InlineShapes(1).OLEFormat.Object
- Il devient facile de l'enregistrer :
monObjet.SaveAs "C:MesObjetstoto.doc"

Il suffit ensuite d'automatiser ça sur les 1200 documents avec un petit
coup de batchmacro (voir dans la FAQ) et le tour est joué.

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD


Avatar
Geo

Est ce une librairie qui manquerait?


La bibliothèque Outlook sans doute.

--
A+

Avatar
Anacoluthe
Bonjour !

'Andre' nous a écrit ...
Dim attache As Word.Document
For Each ws In ActiveDocument.InlineShapes
With ws
Set attache = .OLEFormat.Object ' l'erreur se fait sur cette ligne.


J'ai dit que je donnais un exemple de code pour un objet Word
mais votre objet 'attache' N'EST PAS un objet Word !!!!!!

Attention : certains objets OLE doivent être activés pour que le serveur
OLE (très probablement Outlook 2000 dans votre cas) puisse y accéder.
Vous devez référencer le modèle objet de Outlook dans VBE.

Pour info (mais je n'est pas pu tester sur votre exemple) un objet
Outlook.Attachment s'enregistre avec la méthode SaveAsFile et non SaveAs

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD

1 2