OVH Cloud OVH Cloud

add code module programmatically

4 réponses
Avatar
Herve cadieu
bonjour
voila je crée un document à partir d'une template .dot et j'ai besoin
d'embarquer du code dans le projet (document) créé ...

actuellement j'utilise pour ce faire du code style :

Sub addcode()
ActiveDocument.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString _
"Private Sub Document_Open()" & vbCr & _
"Dim x as EventClassModule" & vbCr & _
"Set x = new EventClassModule" & vbCr & _
"End Sub" & vbCr & _
"Private sub Document_Close()" & vbCr & _
" set X=nothing" & vbCr & _
"End Sub"
End Sub

'******************************************************************************
'* GRAPHO-LOCK DEVELOPPEMENTS
'* Administrateur Hervé Cadieu
'* 10:04
'* 24/10/2005
'* AddClassModuleInMyProject
'******************************************************************************
Sub AddClassModuleFromFileInMyProject(Name As String, FullFilePath As String)
'je déclare un nouveau composant
Dim NewClass As VBComponent
'je crée une instance d'une nouvelle classe
Set NewClass = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_ClassModule)
'je la nomme
With NewClass
.Name = Name
End With
'je la remplis avec le code du fichier
ActiveDocument.VBProject.VBComponents(Name).CodeModule.AddFromFile
FullFilePath

End Sub

'******************************************************************************
'* GRAPHO-LOCK DEVELOPPEMENTS
'* Administrateur Hervé Cadieu
'* 10:04
'* 24/10/2005
'* AddCodeFormFromFileInMyProject
'******************************************************************************
Sub AddCodeFormFromFileInMyProject(Name As String, FullFilePath As String)
Dim newform As VBComponent
Set newform = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_MSForm)
With newform
.Name = Name
End With
ActiveDocument.VBProject.VBComponents(Name).CodeModule.AddFromFile
FullFilePath
End Sub



'******************************************************************************
'* GL
'* Administrateur Hervé Cadieu
'* 11:38
'* 30/10/2005
'* AddCodeModuleInMyProject
'******************************************************************************
Sub AddCodeModuleInMyProject()

Dim newModule As VBComponent
Set newModule = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_StdModule)

With newModule
.Name = "Module1"
End With

ActiveDocument.VBProject.VBComponents("Module1").CodeModule.AddFromFile
"C:\Documents and Settings\Administrateur\Bureau\EventClassModule.cls"

End Sub

je voudrais savoir si au lieu de faire référence a des fichiers qui sont sur
le disque dur, je ne pourrais pas faire réference aux fichiers de mon modéle
.dot pour les copier dans le projet courant. Si cela est possible merci de
m'indiquer comment...

Cordialement

4 réponses

Avatar
Anacoluthe
Bonjour !

'Herve cadieu' nous a écrit ...
je voudrais savoir si au lieu de faire référence a des fichiers qui sont sur
le disque dur, je ne pourrais pas faire réference aux fichiers de mon modéle
.dot pour les copier dans le projet courant.


Utiliser simplement Organiser pour copier (OrganizerCopy) un module ?

Anacoluthe
« Il est très difficile d'imaginer quelque chose de simple. »
- Pierre MAC ORLAN

Avatar
Herve cadieu
Bonjour Anacoluthe

je dois avouer que je ne comprends pas votre réponse, probablement cela
vient de moi, pouvez vous me préciser votre pensée ?
Est-ce que ma question fut assez claire ?
Je souhaite savoir s'il y a un moyen de copier un module et ou une classe de
mon modele .dot vers mon projet courant et ce programmatically sans devoir
serialiser les dits modules et ou classe sur disque dur préalablement....
Si oui auriez vous la gentillesse de me proposer un code snipet ?

Sub addcode()
ActiveDocument.VBProject.VBComponents("ThisDocument").CodeModule.AddFromString _
"Private Sub Document_Open()" & vbCr & _
"Dim x as EventClassModule" & vbCr & _
"Set x = new EventClassModule" & vbCr & _
"End Sub" & vbCr & _
"Private sub Document_Close()" & vbCr & _
" set X=nothing" & vbCr & _
"End Sub"
End Sub

'******************************************************************************
'* GRAPHO-LOCK DEVELOPPEMENTS
'* Administrateur Hervé Cadieu
'* 10:04
'* 24/10/2005
'* AddClassModuleInMyProject
'******************************************************************************
Sub AddClassModuleFromFileInMyProject(Name As String, FullFilePath As String)
'je déclare un nouveau composant
Dim NewClass As VBComponent
'je crée une instance d'une nouvelle classe
Set NewClass = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_ClassModule)
'je la nomme
With NewClass
.Name = Name
End With
'je la remplis avec le code du fichier
ActiveDocument.VBProject.VBComponents(Name).CodeModule.AddFromFile
FullFilePath

End Sub

'******************************************************************************
'* GRAPHO-LOCK DEVELOPPEMENTS
'* Administrateur Hervé Cadieu
'* 10:04
'* 24/10/2005
'* AddCodeFormFromFileInMyProject
'******************************************************************************
Sub AddCodeFormFromFileInMyProject(Name As String, FullFilePath As String)
Dim newform As VBComponent
Set newform = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_MSForm)
With newform
.Name = Name
End With
ActiveDocument.VBProject.VBComponents(Name).CodeModule.AddFromFile
FullFilePath
End Sub



'******************************************************************************
'* GL
'* Administrateur Hervé Cadieu
'* 11:38
'* 30/10/2005
'* AddCodeModuleInMyProject
'******************************************************************************
Sub AddCodeModuleInMyProject()

Dim newModule As VBComponent
Set newModule = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_StdModule)

With newModule
.Name = "Module1"
End With

ActiveDocument.VBProject.VBComponents("Module1").CodeModule.AddFromFile
"C:Documents and SettingsAdministrateurBureauEventClassModule.cls"

End Sub


Bonjour !

'Herve cadieu' nous a écrit ...
je voudrais savoir si au lieu de faire référence a des fichiers qui sont sur
le disque dur, je ne pourrais pas faire réference aux fichiers de mon modéle
.dot pour les copier dans le projet courant.


Utiliser simplement Organiser pour copier (OrganizerCopy) un module ?

Anacoluthe
« Il est très difficile d'imaginer quelque chose de simple. »
- Pierre MAC ORLAN




Avatar
Clément Marcotte
http://frederic.sigonneau.free.fr/VBE.htm

Un autre paresseux qui ne respecte pas sa langue et qui pense se valoriser
avec une culture d'opérette.

programmatically


Programmatiquement

serialiser les dits modules et


Ce n'est pas du XML. On dit exporter.


un code snipet ?


Un extrait de code

Avatar
Geo

Bonjour Anacoluthe

je dois avouer que je ne comprends pas votre réponse, probablement cela
vient de moi, pouvez vous me préciser votre pensée ?
Est-ce que ma question fut assez claire ?
Je souhaite savoir s'il y a un moyen de copier un module et ou une classe de
mon modele .dot vers mon projet courant


On peut le faire à la main : outils macros macro organiser
et l'enregistreur de macro vous donne le code.

--
A+