Fonction Autoopen()

Fonction Autoopen() - VB/VBA/VBS - Programmation

Marsh Posté le 19-09-2006 à 10:07:23    

Bonjour!
Je voudrais qu'à chaque ouverture d'un document Word, un style s'intègre à ce dernier. Pour cela j'ai développé une macro qui se lance grâce à AutoOpen(). Mon problème c'est que si mon environnement Word est ouvert et que j'ouvre un fichier, la fonction Autoopen() ne s'appelle pas...
Connaissez-vous le moyen d'y parvenir?

Reply

Marsh Posté le 19-09-2006 à 10:07:23   

Reply

Marsh Posté le 19-09-2006 à 12:07:03    

Bonjour,
AutoOpen est une fonction qui date de Excel3 ou 5 je ne sais plus... Il en va de même pour Word.
Depuis les versions 2000 on est passé à la gestion d'évènement.
C'est donc  

Code :
  1. Private Sub Document_Open()
  2. 'blabla
  3. End Sub

... qui s'applique.
 
Je n'utilise guère Word, mais il me semble si tes documents sont basés sur un Normal.Dot qui intègre cette macro dans le module de ThisDocument ça devrait pouvoir lancer ta macro.
 
En d'autres termes, tu transfères le contenu de ta macro autopen dans la macro ci dessus que tu colles dans le Module ThisDocument de Normal.Dot et ...Tu croises les doigts !  :D  
 
A+

Reply

Marsh Posté le 19-09-2006 à 14:10:20    

Désolée...ça marche pas!!
T'as une autre idée?

Reply

Marsh Posté le 19-09-2006 à 16:21:56    

Euh... comme je t'ai dit je suis pas un admirateur de Word, mais je vais au moins essayer de vérifier ma théorie.
Tu peux me préciser ton truc : Ta macro AutoOpen elle est ou ?
Et le fichier qui doit être re-stylisé tu le lances comment ? Avec Fichier / Ouvrir ?
Ta macro de Style elle-est ou ? Quel fichier, quel module ?
Si en plus tu me donnes l'en-tête de cette macro ce sera le pied...
A+

Reply

Marsh Posté le 19-09-2006 à 16:35:27    

En fait, j'ai un fichier dans lequel j'ai une fonction AutoOpen(). Qd j'ouvre ce fichier, une barre d'outils est installée ds l'environnement Word et toutes les fonctions contenues ds Module1 sont installées ds le Normal.dot, c'est une bonne solution car je dois diffuser ma macro sur un grand nombre de postes.
Donc ma fonction pour créer le style est ds un Autoopen() qui se trouve ds le Module1, toi y'en as comprendre?
Bon je te poste ça et tu me dis ok?
Sinon, concernant le fichier, c'est les utilisateurs qui vont utiliser la macro dc ils peuvent ouvrir les fichiers par pleins de façons différentes: avec Fichier/Ouvrir, en l'ouvrant directement , etc...
Et maintenant, la cerise sur le gateau:
 
Sub AutoOpen()
 
Dim NormalDotPath As String, MySource As String
NormalDotPath = NormalTemplate.path & Application.PathSeparator & "Normal.dot"
MySource = ActiveDocument.name
 
    With ActiveDocument
        .UpdateStylesOnOpen = False
        .AttachedTemplate = "Normal"
        .XMLSchemaReferences.AutomaticValidation = True
        .XMLSchemaReferences.AllowSaveAsXMLWithoutValidation = False
    End With
     
    On Error GoTo dejala
    Application.OrganizerCopy Source:=NormalDotPath, Destination:=MySource, name:="monStyle", Object:=wdOrganizerObjectStyles
     
    On Error GoTo pasla
    Application.OrganizerDelete Source:=NormalDotPath, name:="monStyle", Object:=wdOrganizerObjectStyles
 
Exit Sub
 
dejala:
Exit Sub
 
pasla:
Exit Sub
 
End Sub
 
Et voilà!
Je te rappel que cette fonction se trouve ds le module1.
Merci!!

Reply

Marsh Posté le 19-09-2006 à 18:27:40    

ben, je suis au regret de te dire que t'es un babouin !  :D  
Sur le principe ça marche. J'ai testé.
 
J'ai mis une macro Private Sub Document_Open()
dans le ThisDocument de mon Normal.Dot et chaque ouverture d'un nouveau document déclanche la macro.
Il reste à savoir comment tu modifies le Normal.dot pour insérer cette macro Document_Open dans le module ThisDocument de Normal.Dot et NON PAS dans le module standart.
Il me semble que tu doives passer par VBComponent mais si je sais le faire en Excel, en Word ça risque d'être coton.
Essaie de contacter un MVP Word ou de poser la question dans les News à Crosoft.
 
Nota : Si ça marche pour les documents ouverts, il n'est pas certain que ça fonctionne pour les nouveaux documents. En effet il semble que ThisDocument fasse la différence entre Document_Open et Document_New !
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed