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 :
J'ai donc recherché cette fameuse VBA6.DLL. Je l'ai trouvé... mais impossible de l'enregistrer :Point d'entrée EbExecuteLine d'une DLL introuvable dans VB6FR.DLL
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.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
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 :" + resMerci de votre aide
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![]()
Partager