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

VB 6 et antérieur Discussion :

changer de référence à Microsoft Word xx.x library de manière dynamique en fonction de l'OS Windows 7 ou Win10


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 295
    Par défaut changer de référence à Microsoft Word xx.x library de manière dynamique en fonction de l'OS Windows 7 ou Win10
    Bonjour,

    J'ai un exécutable codé en VB6.
    Celui-ci doit s'exécuter aussi bien dans Windows 7 que Windows 10.
    Je dois ouvrir des documents Word.
    Cependant, VB6 est installé dans Windows 7.
    Les librairies référencées sont :

    MS Word 14 (pour Windows 7)
    MS Office 15 (pour Windows 10)

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
            Dim objWord As Word.Application
            Dim DocWord As Word.Document
            Dim fichier As String
            fichier = param1        
     
            If FileExiste(fichier) Then
     
                Set objWord = CreateObject("Word.Application")   '-- ouvrir le processus Word 
                Sleep 200
                Set DocWord = objWord.Documents.Open(fichier)    '-- ouvrir le document Word
                Sleep 200
                objWord.Visible = True    '-- masquer ou non l'application Word
                Sleep 100
                    Set objWord = Nothing
                Set DocWord = Nothing
     
                End If
    Le problème est que lorsque l'exe tourne dans Win10, les documents word mettent 10'' (min) à s'ouvrir tandis que dans Win7, le document Word s'ouvre en 3 ou 4" !
    Je pense que cela est dû au fait que le script doit chercher après la bonne librairies.
    D'où ma demande :
    Est-ce possible d'ajouter les références dans le code de manière dynamique en fonction de l'OS ?

    merci pour votre aide

    Carmelo

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Un peu plus de précision.
    Avant tout, Sleep 200 n'est pas du VB6 (à moins que tu ais codé une une fonction maison), cela serait plutôt du code VbScript, mais dans ce cas je ne comprends pas que tu ais typé tes variables.
    De ta réponse différera les nôtres.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 295
    Par défaut
    Bonjour ProgElect

    Le problème ne concerne pas Sleep mais les librairies à ajouter.

    mais si cela peut te faire plaisir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Concernant les librairies, je voudrais savoir si on peut choisir les librairies non pas par la méthode manuelle comme par exemple (trouvé dans le forum) :
    "Pour activer une bibliothèque (référence), déplacez vous dans l'éditeur de macros (ALT+F11):
    Menu Outils
    Références
    Cochez la ligne qui correspond à l'application que vous souhaitez piloter.
    Cliquez sur le bouton OK pour Valider.
    Vous avez désormais accès aux méthodes et propriétés VBA de l'application spécifiée.
    "

    !!! Je précise que je travaille avec VB6 et non VBA !!! donc ce qui précède est n'est pas tout à fait adapté à VB6

    Mais plutôt de manière dynamique, comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Shell + regsvr32 /s lefichier.OLB
    Ce qui me permettrait en fonction de l'OS, de choisir le bon fichier (word15 ou word14)
    Bien que je ne pense pas que je pourrais compiler sans avoir coché les références.

    Ici un article qui parle de ce dont je voudrais faire mais dans VB6 et non VBA (liaison tardive) en déclarant toutes les variables "Word.Application" en Object

    Merci d'avance

    Carmelo

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Re

    mais si cela peut te faire plaisir

    Le problème ne concerne pas Sleep mais les librairies à ajouter.
    Là n'est pas mon propos dans ma première intervention, mais certains poste une question dans un forum alors qu'ils ne sont pas au bon endroit (fin de la parenthèse ).

    Je dirai simplement, dans ton package d’installation, tu référence la librairie la plus performante, cela ne devrait pas poser de problème d'installation, quelque soit l'OS (7 ou 10).

    Ou je n'ai rien compris à ta question, ce qui est possible.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si tu passes par CreateObject, tu peux te passer des références aux bibliothèques. (Mais pas avec GetObject). Je ne me souviens pas pour VB6, mais en VBA, ajouter la référence donne aussi accès à l'IntelliSense entre Word et Excel, du moins.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 295
    Par défaut
    Bonjour clementmarcotte

    Merci pour la réponse.
    En effet, en VBA j'ai trouvé une solution.
    A l'ouverture du fichier excel, je détecte l'os et j'ajoute les librairies.
    A la fermeture du fichier, je supprime les librairies de manière à pouvoir les ouvrir dans un autre OS.

    Mais ça, c'est en VBA avec un fichier à ouvrir avec des macros à exécuter.
    Tandis qu'en VB6, c'est exécutable. La tâche est donc plus hardue.

    Merci pour ton aide

    Carmelo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/04/2016, 11h24
  2. Changer de base de manière dynamique et à la volée
    Par anta_res dans le forum Doctrine2
    Réponses: 13
    Dernier message: 13/06/2012, 22h25
  3. Réponses: 3
    Dernier message: 30/08/2010, 15h51
  4. Changer les Références en fonction de la version Excel
    Par mpereg dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/04/2008, 13h53
  5. [JTable] Changer les colonnes de manière dynamique
    Par gg2laba dans le forum Composants
    Réponses: 3
    Dernier message: 03/10/2005, 23h39

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