Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1005 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Fonction Autoopen()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fonction Autoopen()

n°1444493
acorsa
Posté le 19-09-2006 à 10:07:23  profilanswer
 

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?

mood
Publicité
Posté le 19-09-2006 à 10:07:23  profilanswer
 

n°1444566
galopin01
Posté le 19-09-2006 à 12:07:03  profilanswer
 

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+

n°1444616
acorsa
Posté le 19-09-2006 à 14:10:20  profilanswer
 

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

n°1444708
galopin01
Posté le 19-09-2006 à 16:21:56  profilanswer
 

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+

n°1444721
acorsa
Posté le 19-09-2006 à 16:35:27  profilanswer
 

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!!

n°1444830
galopin01
Posté le 19-09-2006 à 18:27:40  profilanswer
 

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+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Fonction Autoopen()

 

Sujets relatifs
fonction getBytes() de java en phpDimensions d'un div en fonction de son contenu
[Access][VBA] Construction d'un lien HTML fonction de plusieurs champsFonction qui recupere toutes la barre URL
fonction qui retourne un objetNom de variable en fonction de la valeur d'une autre
fonction et returnBug fonction find, the return
Contourner fonction execfonction template d'une classe template
Plus de sujets relatifs à : Fonction Autoopen()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR