| |
Posté le 18 novembre 2005 - 12:02 |
Bonjour,
J'ai un fichier .bas qui est en fait une exportation d'une macro Word 2003 et qui contient donc ce code.
Comment faire avec Windev 9 pour inclure et lancer cette macro dans un document donné? Ou bien lancer cette macro à partir d'un fichier externe
Merci! |
| |
| |
| | | |
|
| | |
| |
Posté le 18 novembre 2005 - 15:30 |
Jerome a écrit :
Bonjour,
J'ai un fichier .bas qui est en fait une exportation d'une macro Word 2003 et qui contient donc ce code.
Comment faire avec Windev 9 pour inclure et lancer cette macro dans un document donné? Ou bien lancer cette macro à partir d'un fichier externe
Merci!
Bonjour, La classe cVBAExterne est faite pour cela : http://www.wdforge.org/modules/icontent/index.php…
[R&B] WDForge.org |
| |
| |
| | | |
|
| | |
| |
Posté le 21 novembre 2005 - 16:04 |
Cette classe fonctionne-t-elle aussi avec Word? Car je vois qu'elle hérite de CExcel et dans les doc on ne parle que d'Excel. |
| |
| |
| | | |
|
| | |
| |
Posté le 21 novembre 2005 - 16:32 |
J'oubliais dans mon précédent message. J'ai vu sinon comment faire en replaçant les "." par des ">>", mais j'ai deux conditions dans a macro, et je ne sais pas comment les faire passer.
Voici la macro en question, qui n'est pas bien compliquée:
Attribute VB_Name = "Module1" Sub AfficheCadre() If ActiveDocument.Tables(1).Columns(1).Cells(1).Range.Text = Chr(13) & Chr(7) Then ActiveDocument.Tables(1).Columns(1).Cells(1).Select Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone End If If ActiveDocument.Tables(1).Columns(2).Cells(1).Range.Text = Chr(13) & Chr(7) Then ActiveDocument.Tables(1).Columns(2).Cells(1).Select Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone End If ActiveDocument.SaveAs End Sub |
| |
| |
| | | |
|
| | |
| |
Posté le 22 novembre 2005 - 10:11 |
Jerome a écrit :
Cette classe fonctionne-t-elle aussi avec Word? Car je vois qu'elle hérite de CExcel et dans les doc on ne parle que d'Excel.
Cette classe pourrait aussi fonctionner, avec des adaptations, avec un héritage d'un cWord... à produire.
++ R&B |
| |
| |
| | | |
|
| | |
| |
Posté le 22 novembre 2005 - 11:39 |
Jerome a écrit :
Bonjour,
J'ai un fichier .bas qui est en fait une exportation d'une macro Word 2003 et qui contient donc ce code.
Comment faire avec Windev 9 pour inclure et lancer cette macro dans un document donné? Ou bien lancer cette macro à partir d'un fichier externe
Merci!
Bonjour
J'importe le script Vba puis je l'exécute :
l_vbComposant est objet Automation dynamique NomProjet est une chaîne = "Document1.doc"
// importation du script dans le document actif en cours l_vbComposant = :cWord>>VBE>>VBProjects(NomProjet)>>vbComponents>>Import(NomScript.bas)
l_vbComposant>>Name = "NomComposant" // vbext_vm_Run 0 Project is in Run mode // vbext_vm_Break 1 Project is in Break mode // vbext_vm_Design 2 Project is in Creation mode. SI :cWord>>VBE>>ActiveVBProject>>Mode = 2 ALORS // execution de la procedure Vb : SubMachin :cWord>>Run(NomProjet + ".NomComposant.SubMachin") // suppression du composant :cWord>>VBE>>VBProjects(NomProjet)>>VBComponents>>Remove(l_vbComposant) FIN
Thierry |
| |
| |
| | | |
|
| | |
| |
Posté le 24 novembre 2005 - 10:18 |
Voilà qui purrait m'être très utile.
Par contre (oui, je suis débutant...), àa quoi correspond le ":cWord"? J'ai importer la classe "cWord" présente dans un exemple de Windev, mais j'ai toujours cette erreur:
"Les opérateurs : et :: permettent d'accéder aux éléments des classes et ne peuvent être utilisés que dans les méthodes de classes."
Merci! |
| |
| |
| | | |
|
| | |
| |
Posté le 24 novembre 2005 - 15:06 |
J'ai déjà testé en enlevant les deux points en fait (oublié de le préciser...), dans ce cas-là il est bien reconnu (mis en bleu), mais j'ai ceci comme message d'erreur:
"Opérateur '>>' interdit" ...
J'en profite pour te remercier de cette aide que tu m'apportes. |
| |
| |
| | | |
|
| | |
| |
Posté le 24 novembre 2005 - 15:13 |
J'ai créé un "cWord est un objet Automation dynamique" dans les variable globales de la fenêtre, je n'ai plus d'erreur, mais je me retrouve avec ceci quand je lance le projet, ou tout du moins quand je clique sur le bouton qui lance le code en question:
"L'objet sur lequel on accède au membre VBE n'est pas un objet Automation"
Il s'agit de cette ligne:
l_vbComposant = cWord>>VBE>>VBProjects(NomProjet)>>vbComponents>>Import("Cadre.bas") |
| |
| |
| | | |
|
| | |
| |
Posté le 24 novembre 2005 - 15:26 |
Bonjour
Le code vient d'une classe ou cWord est un objet Automation dynamique
Enleve les deux points si ton objet n'est pas un attibut de classe
Thierry
Jerome a écrit :
Voilà qui purrait m'être très utile.
Par contre (oui, je suis débutant...), àa quoi correspond le ":cWord"? J'ai importer la classe "cWord" présente dans un exemple de Windev, mais j'ai toujours cette erreur:
"Les opérateurs : et :: permettent d'accéder aux éléments des classes et ne peuvent être utilisés que dans les méthodes de classes."
Merci!
|
| |
| |
| | | |
|
| | |
| |
Posté le 25 novembre 2005 - 10:51 |
Voici ce que j'ai pour le moment:
******************************************* DECLARATIONS GLOBALES DE LA FENETRE:
l_vbComposant est un objet Automation dynamique cWord est un objet Automation dynamique NomProjet est une chaîne = "C:\Mes Projets\Macro Word\Exe\test.doc" *******************************************
******************************************* CLIC SUR LE BOUTON cWord = ObjetActif("Word.Application")
SI cWord = Null ALORS cWord = allouer un objet Automation "Word.Application" SI cWord = Null ALORS Erreur("Impossible de lancer Word") RETOUR FIN FIN
SI cWord <> Null ALORS cWord>>Application>>Visible = True // importation du script dans le document actif en cours l_vbComposant = cWord>>VBE>>VBProjects(NomProjet)>>vbComponents>>Import("Cadre.bas") l_vbComposant>>Name = "NomComposant" SI cWord>>VBE>>ActiveVBProject>>Mode = 2 ALORS // execution de la procedure Vb : SubMachin cWord>>Run(NomProjet + ".NomComposant.SubMachin") // suppression du composant cWord>>VBE>>VBProjects(NomProjet)>>VBComponents>>Remove(l_vbComposant) FIN libérer cWord FIN *******************************************
L'erreur qui m'est renvoyée est la suivante:
"En tentant d'invoquer la méthode <VBE> ou de lire la propriété <VBE>, l'objet Automation/ActiveX a renvoyé l'erreur suivante : 'Erreur 800A17B4 : L'accès programmatique à Visual Basic Project n'est pas approuvé.' En tentant de lire la propriété <VBE>, l'objet Automation/ActiveX a renvoyé l'erreur suivante : 'Erreur 800A17B4 : L'accès programmatique à Visual Basic Project n'est pas approuvé.'
En tentant d'invoquer la méthode <VBE>, l'objet Automation/ActiveX a renvoyé l'erreur suivante : 'Erreur 800A16E7 : 'VBE' n'est pas une méthode."
Dans Word, je suis allé dans la gestion de la sécurité des macro (Outils, Macro, Sécurité). J'ai mis le niveau à "Faible" et sur le second onglet, j'ai coché les deux case en bas faisant confiance à tous les modèles et compléments installés, ainsi qu'au projet Visual basic... J'ai désactivé mon anti-virus et j'ai eu droit à l'erreur "Le membre n'existe pas", mais je suis depuis retourné à l'erreur précédente. |
| |
| |
| | | |
|
| | |
| |
Posté le 25 novembre 2005 - 10:55 |
Jerome a écrit : > J'ai créé un "cWord est un objet Automation dynamique" dans les variable globales de la fenêtre, je n'ai plus d'erreur, mais je me retrouve
avec ceci quand je lance le projet, ou tout du moins quand je clique sur le bouton qui lance le code en question:
"L'objet sur lequel on accède au membre VBE n'est pas un objet Automation"
Il s'agit de cette ligne:
l_vbComposant = cWord>>VBE>>VBProjects(NomProjet)>>vbComponents>>Import("Cadre.bas")
La declaration n'est pas suffisante, il faut que tu precises a ton objet quelle est l'application qu'il pilote
// on regarde si Word est deja actif cWord = ObjetActif("Word.Application")
// Word n'est pas actif SI cWord = Null ALORS // lancement de Word cWord = allouer un objet Automation "Word.Application" // lancement impossible SI cWord = Null ALORS Erreur("Impossible de lancer Word") RENVOYER Faux FIN FIN
RENVOYER Vrai |
| |
| |
| | | |
|
| | |