![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums. |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre chevronné
![]() Date d'inscription: juin 2003
Messages: 610
|
Bonjour à tous,
Je fait de l'automation Word depuis Delphi. Utilisant des macros similaires pour plusieurs modèles Word, j'ai décidé de les stoquer dans un fichier bas commun que j'importe de cette manière: Code :
vDoc.VBProject.VBComponents.Import (MonChemin+'\Module1.bas'); Seulement, j'ai beau le mettre et enregistrer dans le modèle... Il le garde bien, mais le document généré depuis ce modèle ne garde pas les références de son modèle. Si bien que les macros se chargent bien, mais je ne peux pas les utiliser. Je l'ai ajouté au normal.dot, mais ca ne change rien. Comment faire pour contourner le problème (ou au pire, ajouter dynamiquement cette référence depuis le module bas ou Delphi). Merci d'avance.
__________________
David. |
|
|
|
|
|
#2 (permalink) |
![]() Date d'inscription: février 2006
Localisation: Morlanwelz (Carnières)
Âge: 44
Messages: 10 113
|
Lorsque tu ajoutes une référence, tu peux dès la déclaration créer et lier ton "objet" (Early binding)
Code :
Dim wApp as Word.Application Set wApp = CreateObject("Word.Application") Code :
Dim wApp as New Word.Application Mais en VBA, il est possible de faire du (Late Binding) Code :
Dim wApp As Object set wApp = CreateObject("Word.Application")
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Ne posez pas de question par MP, c'est inutile. Les rubriques Office recrutent. Ma page d'accueil Consultez nos FAQ !! Word ; Access ; Outlook ; Excel ; PowerPoint ; SharePoint Si vous pensez que certains sujets manquent dans la FAQ, aidez nous ! Des images |
|
|
|
|
|
#3 (permalink) |
|
Membre chevronné
![]() Date d'inscription: juin 2003
Messages: 610
|
Bonjour Heureux-oli,
Merci pour ta rapidité, mais je ne vois pas du tout à quel moment l'ajout de référence intervient dans ton exemple. En fait, ce que tu donnes, je le fait dans Delphi, ensuite, je fait un: vDoc.VBProject.VBComponents.Import ('monModule.bas'); (vDoc étant l'instance du document Word désiré) Seulement, je comptait faire l'ajout de référence dans 'monModule.bas'. Mais il ne connait pas l'objet 'Reference'. Ca n'en finit plus.
__________________
David. |
|
|
|
|
|
#4 (permalink) |
![]() Date d'inscription: février 2006
Localisation: Morlanwelz (Carnières)
Âge: 44
Messages: 10 113
|
A aucun moment.
Si dans ton code tu utilises mon dernier morceau pour la déclaration de ton code, tu n'as pas besoin de déclarer la référence.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Ne posez pas de question par MP, c'est inutile. Les rubriques Office recrutent. Ma page d'accueil Consultez nos FAQ !! Word ; Access ; Outlook ; Excel ; PowerPoint ; SharePoint Si vous pensez que certains sujets manquent dans la FAQ, aidez nous ! Des images |
|
|
|
|
|
#5 (permalink) |
|
Membre chevronné
![]() Date d'inscription: juin 2003
Messages: 610
|
Dans mon code VBA ???
Je fait donc un truc comme ça : Code :
Dim wApp as Word.Application Set wApp = CreateObject("Word.Application") Dim mydb As DAO.Database Dim myRS As DAO.Recordset Set mydb = DAO.OpenDatabase(chemBase) mySQL = "SELECT * FROM TblStyles WHERE Id=" & myId Set myRS = mydb.OpenRecordset(mySQL) myRS.MoveFirst While Not myRS.EOF Coloriage_Style myRS("NomStyle"), Couleur, myRS("FondouPolice") myRS.MoveNext Wend myRS.Close Set myRS = Nothing Très bien, j'essaye ça dans quelques instants. Merci.
__________________
David. |
|
|
|
|
|
#6 (permalink) |
![]() ![]() Date d'inscription: juin 2002
Localisation: Argenteuil (95)
Messages: 3 561
|
hum ! hum !
J'ai peur d'avoir compris, et pense que la solution n'est pas (complètement) là. Effectivement, comme l'à dit Heureux-Oli, le Late-Binding te permettra de t'affranchir des références. Mais, si tu as à créer un document word, tu as d'office les références à Word. Partant, le CreateObject ne sert plus à grand-chose pour les bjets de Word. Là où tu en aurais plutôt besoin, ce serait pour tes objets DAO qui ne sont pas référencés, par défaut, dans un projet Word. Une autre possibilité, c'est d'ajouter les références à la volée dans ton projet. Pour cela, regardes donc le tutoriel suivant: http://sinarf.developpez.com/access/autoref/
__________________
MVP Office Systems - Access Je ne réponds pas aux questions techniques par MP surtout ne cliquez pas >>là<< je vous aurai prévenu ! Profil LinkedIn <=> Viadeo Pour une formation de qualité : 1formaxion |
|
|
|
|
|
#7 (permalink) |
![]() Date d'inscription: février 2006
Localisation: Morlanwelz (Carnières)
Âge: 44
Messages: 10 113
|
Dans mon dernier exemple, je met
Code :
Dim wApp as Objet Code :
Dim oDoc as Object Set oDoc = wApp.Documents.Add Code :
Set rs as Object
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Ne posez pas de question par MP, c'est inutile. Les rubriques Office recrutent. Ma page d'accueil Consultez nos FAQ !! Word ; Access ; Outlook ; Excel ; PowerPoint ; SharePoint Si vous pensez que certains sujets manquent dans la FAQ, aidez nous ! Des images |
|
|
|
|
![]() |
![]() |
||
[VBA 2003] Import de module->Perte de références
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|