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

Macros et VBA Excel Discussion :

installer des references pour office2000 et 2010


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Par défaut installer des references pour office2000 et 2010
    Bonjour,
    voilà mon objectif:

    j'ai un fichier Excel qui génère un documents Word, ce fichier est utilisé par toute une équipe qui travaillent en réseau pour mettre à jour ce fichier.
    or depuis peu on est en train de migrer vers office 2010, mais pas tous en même temps.donc il faut que ce fichier fonctionne aussi bien dans les deux environnement.
    pour génèrer du word les macros ont besoin de la référence "Microsoft Word", qui n'est pas la même dans les deux cas bien sûr.

    pour m'en sortir j'ai fait cette petite routine pour initialiser la bonne référence suivant le bon cas de figure.

    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
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    chem_2000 = "C:\Program Files\Microsoft Office\Office12\MSWORD.OLB"
    chem_2010 = "C:\Program Files\Microsoft Office\Office14\MSWORD.OLB"
     
     
    ver_office = Application.Version
     
     
    If ver_office = "9.0" Then
    On Error Resume Next
     With ThisWorkbook.VBProject.References
     Application.DisplayAlerts = False
     .AddFromFile chem_2000
     End With
     Application.DisplayAlerts = True
    End If
     
    If ver_office = "14.0" Then
    On Error Resume Next
     With ThisWorkbook.VBProject.References
     Application.DisplayAlerts = False
     .AddFromFile chem_2010
     End With
     Application.DisplayAlerts = True
    End If
    mon problème vient du fait que ça marche bien pour office 2000, mais pas sur office 2010, rien ne plante dans cette macro mais la référence n'est pas cochée et la routine de création du fichier word plante;

    le fichier existe bien là où je le défini.

    quelqu'un a t'il une idée ?

  2. #2
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Salut,
    Tu peux faire du late binding, c'est à dire que ton projet ne contient pas de référence explicit à word, mais qu'il va le trouver AT RUNTIME.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    'early binding
    dim oApp as Word.application
    set oApp = word.application
    'late binding
    Dim oApp as Object	
    set oDApp = CreateObject("Word.Application")
    attention aux constantes word qui ne sont par conséquent par connues

    Regarde ce tuto :

    edit : "http://www.jpsoftwaretech.com/excel-vba/list-of-enumerated-constants-for-late-bound-vba-automation/" source du fichier joint
    Fichiers attachés Fichiers attachés
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Par défaut
    merci pour ta réponse Oliv,
    tu me presente quelque chose de nouveau pour moi que je ne comprend pas vraiment :

    voici comment je traite ma création de fichier word :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim oWoApp As New Word.Application
     
    ......
     
    ' ouvrir la fiche
    Set oWoApp = New Word.Application
     
    fic_out = oWoApp.Documents.Open(fich_ec, ReadOnly:=False, revert:=False)
    oWoApp.Visible = True
    voilà pourquoi je dois installer la référence à word
    je ne vois pas comment appliquer ta méthode de late binding ???
    si tu peux me donner un peu plus d'éclaircissement

    Merci

  4. #4
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Salut,

    Essaye cela dans un nouveau classeur sans référence à WORD bien sûr!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test_à_Patnel()
     
    fich_ec = "C:\temp\temp.doc"
    Dim oWoApp As Object
     
    ' ouvrir la fiche
    Set oWoApp = CreateObject("Word.Application")
     
    fic_out = oWoApp.Documents.Open(fich_ec, ReadOnly:=False, Revert:=False)
    oWoApp.Visible = True
    End Sub
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, à lire Early ou Late Binding
    On développe en Early Binding et déploie en Late Binding surtout dans les environnements hétérogènes.

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Par défaut
    merci Philippe (kiki29 vive la bretagne et les bretons !!)

    j'ai fait comme tu as dit:

    sur office 2000
    1 la reference est toujours demandée sinon il ne reconnait pas l'objet
    2 si je rajoute la reference il reconnait l'objet mais il plante sur le traitement


    ça serai bien si ma première idée d'implanter la bonne référence par vba suivant la version d'office fonctionnerait avec 2010 , doit y avoir quelque chose qui m'échappe

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

Discussions similaires

  1. Installation des packages pour Beamer
    Par AmiCoul dans le forum Distributions
    Réponses: 1
    Dernier message: 13/05/2014, 17h20
  2. Installer des paquetages pour du graphique
    Par Solly dans le forum Ada
    Réponses: 1
    Dernier message: 14/11/2008, 17h34
  3. Installer des bibliothèques pour python 2.4 avec python 2.5
    Par zabibof dans le forum Déploiement/Installation
    Réponses: 3
    Dernier message: 31/07/2008, 16h49
  4. Création d'un MSI pour installer des ActiveX pour IE
    Par Sisoun dans le forum Windows XP
    Réponses: 0
    Dernier message: 30/04/2008, 13h03
  5. Stratégie d'installation des fixes pour windows 2000/2003
    Par bill4134 dans le forum Autres Logiciels
    Réponses: 20
    Dernier message: 07/07/2004, 16h04

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