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 :
Citation :
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 :
Citation :
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 :
- Dim txt As String
- Dim res As Boolean
-
- txt = "MsgBox ""Ca tourne"""
- res = FExecuteCode(txt)
- MsgBox "Statut :" + res
|
Code :
- 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