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