IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

[VBA 2003] Import de module->Perte de références


Sujet :

VBA

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut [VBA 2003] Import de module->Perte de références
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    vDoc.VBProject.VBComponents.Import (MonChemin+'\Module1.bas');
    Seulement, dans ces macros, je fait de l'appel aux données en utilisant l'objet DAO, ce qui impose qu'il doit se trouver dans les références du fichier Word concerné.
    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.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Lorsque tu ajoutes une référence, tu peux dès la déclaration créer et lier ton "objet" (Early binding)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim wApp as Word.Application
    Set wApp = CreateObject("Word.Application")
    Ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim wApp as New Word.Application

    Mais en VBA, il est possible de faire du (Late Binding)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim wApp As Object
    set wApp = CreateObject("Word.Application")
    Dans ce dernier cas, la référence ne doit pas être ajoutée.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    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.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    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 ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Dans mon code VBA ???

    Je fait donc un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        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
    Et ca suffit ?

    Très bien, j'essaye ça dans quelques instants.

    Merci.

  6. #6
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    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/

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Dans mon dernier exemple, je met

    Tous les objets doivent être déclaré en Objet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim oDoc as Object
    Set oDoc = wApp.Documents.Add
    Pareil pour le DAO

    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. [Access 2003] IMPORT DE TABLES EN VBA
    Par texas2607 dans le forum VBA Access
    Réponses: 0
    Dernier message: 11/09/2007, 15h28
  2. [VBA-E]Importation de modules
    Par XineMA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2007, 11h16
  3. [VBA]Exporter / importer tous les modules et frm d'un projet
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 12/02/2007, 16h31
  4. Réponses: 2
    Dernier message: 31/05/2006, 15h13
  5. [VBA-A] importer un module
    Par yuriashford dans le forum VBA Access
    Réponses: 6
    Dernier message: 30/05/2006, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo