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