7 votes

Analyse des paramètres des fonctions du module VBA par réflexion

Dans Excel, j'ai un module VBA appelé MyModule dont la fonction est la suivante

    Public Function MyFunction(Param1 As Range, Param2 As Range) As String
            ' some implementation
    End Function

Au moment de l'exécution, je sais que j'ai un module appelé MyModule et je sais que j'ai une fonction appelée MyFunction mais je veux inspecter dynamiquement les noms des paramètres Param1 y Param2

Dans mon monde (C#), cela s'appelle la réflexion. Puis-je utiliser des concepts similaires ici pour obtenir le nom du paramètre ou est-ce que j'attends trop de VBA ?

7voto

JustinJDavies Points 1564

Une bonne analyse est disponible sur ce CodeProject. http://www.codeproject.com/Articles/164036/Reflection-in-VBA-a-CreateObject-function-for-VBA

Extrait :

VBA ne prend pas en charge la réflexion, une technique de programmation orientée vers l'utilisateur (POO). facettes, notamment la possibilité d'instancier une classe sans connaître son son type au moment de la conception. La réflexion offre une grande flexibilité qui est qui est terriblement absente de VBA (du moins pour ceux d'entre nous qui aiment utiliser VBA pour plus que ce à quoi il est destiné).

Il y a des possibilités de réflexion :

Exemple

Par exemple, si je souhaite créer une instance d'un objet Application Excel sans avoir à déclarer le type explicitement dans le code (en utilisant Set xlApp = New Excel.Application), je peux le faire en utilisant le code de création d'objet au niveau de la réflexion suivant :

Dim xlApp As Excel.Application 
Set xlApp = CreateObject(,"Excel.Application") 

C'est l'équivalent de l'instruction spécifique au type

Set xlApp = New Excel.Application

Aussi :

Vous pouvez utiliser assylias pour interroger votre propre code (en utilisant une expression rationnelle ou un autre type d'analyse syntaxique pour sélectionner les parties de votre code qui vous intéressent) :

yourWorkbook.VBProject.VBComponents("MyModule").CodeModule

Il y a quelques pistes intéressantes dans ce post : Itération dans le navigateur d'objets en VBA

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X