Incorporer un modèle word à un document existant [Résolu]

Signaler
-
 Juan -
Bonjour,

Pour un projet je souhaiterai incorporer un modèle word dans un document. Je ne sais pas si cela est possible.

Je m'explique :
J'ai un utilitaire que j'ai fait sur word qui embarque du vba.
Mon utilitaire doit créer un nouveau document quand je clique sur un bouton (que j'ai fait avec un controle activeX) sur la base d'un modèle stocké dans mon pc.

Le code :
Private Sub CommandButton1_Click()
Dim My_Contrat As Document
Set My_Contrat = Application.Documents.Add(Template:="Doc_to_scan.dotx")
End Sub


J'aimerai pouvoir envoyer mon utilitaire à un tiers et que celui-ci fonctionne toujours. Pour ce faire il faut que le code VBA soit toujours capable de trouver le modèle de document en question. Une solution qui serait très pratique serait de pouvoir incorporer le modèle dans le document.

Pouvez-vous m'aider ?

En vous remerciant !

4 réponses

Messages postés
16649
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
24 octobre 2020
9 835
Bonjour,

Ce n'est pas vraiment prévu dans Word.

Cela étant, il y a une solution qui peut te convenir... pas sûr, mais bon...

Un document incorporé dans un autre sera obligatoirement visible d'une manière ou d'une autre. Ce que tu peux faire : tu ouvres le modèle, tu copies tout son contenu. S'il est vide, ce serait peut être bien d'y mettre quand même un titre par exemple, mais c'est pas obligatoire, le retour paragraphe seul peut suffire.
Dans le document utilitaire, tu fais un collage spécial (onglet Fichier => Coller, collage spécial) et tu choisis "Microsoft Word Document Objet". Tu coches "Afficher sous forme d'icône". Éventuellement tu changes l'icône et surtout tu mets la légende qui convient.

L'utilisateur, pour créer son document basé sur ce modèle, va devoir double cliquer sur cette icône. Cela va ouvrir le document (qui est donc basé sur ton modèle). Si le modèle est correctement fait, il ne devrait pas y avoir de problèmes de mise en page ni de mise en forme.
Lorsque l'utilisateur va fermer ce document, ce dernier sera automatiquement enregistré dans ton document utilitaire.
Il peut aussi faire un enregistrement sous afin d'obtenir un document indépendant.

Côté macro, tu peux peut être en prévoir une dans le document modèle si tu as besoin du document indépendant, afin de faire un enregistrer sous.

m@rina

Messages postés
16649
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
24 octobre 2020
9 835
Bonsoir,

Quelque chose comme ça :
 ActiveDocument.InlineShapes(1).OLEFormat.Activate


ça va ouvrir le premier InlineShape, en espérant qu'il a un format OLE.

S'il y a bcp d'objets et qu'il s'agit du seul document Word incorporé, il vaudrait mieux tester avant :

Dim objet As InlineShape, obj_OLE As OLEFormat
For Each objet In ActiveDocument.InlineShapes
With objet
If .Type = wdInlineShapeEmbeddedOLEObject Then
If .OLEFormat.Application = "Microsoft Word" Then
.OLEFormat.Activate
Exit For
End If
End If
End With


m@rina

Bonjour m@rina,

Un grand merci pour cette idée qui me semble très bonne. J'ai essayé et je peux effectivement incorporer mon modèle de cette façon dans mon utilitaire.

Néanmoins je n'arrive pas à faire une macro qui ouvre ce modèle incorporé... Après quelques recherches je suis tombé sur la collection d'objet Inlineshapes qui semble contenir mon document incorporé. Mais impossible de l'ouvrir.

Aurais tu une nouvelle bonne idée ?

Un grand merci !
Bonsoir M@rina,

Cela fonctionne parfaitement. Je vous remercie chaleureusement.

Bien à vous

Juan