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 :

[VBA-E] API EbExecuteLine


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut [VBA-E] API EbExecuteLine
    Bonjour !

    Le VB Script ne me convenant finalement que moyennement (les variables globales et les objets du programme sont inconnus dans le VBScript sauf si passage en paramétres....), j'étais tout heureux de trouver cette API me permettant d'exécuter du code ligne par ligne contenu dans un string (et qui , peut-être, me permettra d'utiliser mes variables comme bon me semble).

    En réalité, je me suis galéré toute la matinée.

    Il paraît que cette API fait partie de la librairie VBA6.DLL. En creusant un peu, j'ai lu aussi par-ci par-là que c'était une DLL localisée (VB6FR.DLL, VB6DE.DLL, etc).

    Le fait est que VB6FR.DLL est présente sur mon système. Par contre, à l'exécution :

    Point d'entrée EbExecuteLine d'une DLL introuvable dans VB6FR.DLL
    J'ai donc recherché cette fameuse VBA6.DLL. Je l'ai trouvé... mais impossible de l'enregistrer :

    VBA6.DLL a été chargé mais le point d'entrée DllRegisterServer n'a pas été trouvé.
    VBA6.DLL n'apparaît pas comme étant un fichier .DLL ou .OCX
    Et là pour le coup, si j'exécute mon programme en spécifiant VBA6.DLL en tant que librairie de mon API. Plaf, plantage total d'Excel.

    J'ai fouiné un peu partout sans succès. J'avoue que je commence à désespérer. Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
         Dim txt As String
        Dim res As Boolean
     
        txt = "MsgBox ""Ca tourne"""
        res = FExecuteCode(txt)
        MsgBox "Statut :" + res
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Declare Function EbExecuteLine Lib "vba6.dll" _
            (ByVal pStringToExec As Long, ByVal Foo1 As Long, _
            ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long
     
    Function FExecuteCode(stCode As String, _
                Optional fCheckOnly As Boolean) As Boolean
     
        FExecuteCode = EbExecuteLine(StrPtr(stCode), 0&, 0&, Abs(fCheckOnly)) = 0
    End Function
    Merci de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    peux tu réexpliquer l'objectif de ton projet


    bon week end
    michel

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    Je te dirai ce que c'est que ça ne t'aiderai même pas...

    C'est un outil de description de processus. En gros, c'est une application qui génère des diagrammes de flux entre applications en fonction de paramétres spécifiés en entrée.

    Une idée pour mon problème ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    Nom de dioû

    Ca fonctionne sur mon PC perso. J'ai Visual Basic 6 d'installé sur mon poste ça doit être pour ça.
    Je peux faire une demande d'installation sur mon poste de travail mais en définitive ça ne change rien parce que dès que je vais exécuter mon application (VBA Excel) sur un poste n'ayant pas VB6 d'installé ça va foiré royalement.

    HELP !

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    En quoi as-tu finalement développé ?
    en VB6 ?
    Autre chose : as-tu ajouté des composant et références ? si oui, lesquels

    Il est nécessaire que la machine d'accueil ait les runtimes et composasnts utilisés également installés, sinon... bernique, pardi !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Par défaut
    Salut.

    Pour l'instant, il s'agit de VBA Excel. Oui j'ai plusieurs références : Visual Basic for Applications, Microsoft Excel 11.0 Object Library, OLE Automation, Microsoft Office 11.0 Object Library, Microsoft Forms 2.0 Object Library, Ref Edit Control, Microsoft Shell Controls and Automation, Microsoft Windows Common Controls 6.0 (SP6), Microsoft Common Dialog Control 6.0 (SP3).

    Mais étant donné, que ça commence à devenir une application très complexe pour du VBA et que je suis très fréquemment bloqué à cause de DLL ou d'OCX (avec quelques crises de nerfs au passage), j'envisage sérieusement de migrer vers VB6

    J'ai récupéré un petit programme qui fournit la liste des dépendances d'un exécutable VB.

    Mais bon j'hésite encore à me lancer dans une migration. J'ai bien peur que ça mette encore plus le foutoir qu'il n'y en a déjà...

    PS : Je souhaite à personne d'avoir à utiliser une API de VBA6.DLL, ça m'a l'air d'être une m.erde cette DLL

Discussions similaires

  1. [VBA] Utilisation API FindWindows
    Par idir.17 dans le forum Général VBA
    Réponses: 5
    Dernier message: 28/03/2007, 14h39
  2. [API-VBA]utilisation API Printer
    Par Alexandre Sahli dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/03/2007, 13h24
  3. [VBA-E] Probleme d'api
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/07/2006, 09h17
  4. Réponses: 69
    Dernier message: 15/06/2006, 11h42
  5. [VBA] DLL -API
    Par Ric500 dans le forum Access
    Réponses: 1
    Dernier message: 20/10/2005, 15h50

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