このCodeProjectには優れた分析がありますhttp://www.codeproject.com/Articles/164036/Reflection-in-VBA-a-CreateObject-function-for-VBA
エキス:
VBAは、設計時にクラスのタイプを知らなくてもクラスをインスタンス化する機能など、多くの側面を持つOOPの概念であるリフレクションをサポートしていません。Reflectionは、VBAにはない非常に柔軟な柔軟性を提供します(少なくとも、通常の意図よりも多くの目的でVBAを使用したい人にとっては)。
いくつかの反射のようなものが可能です:
例
たとえば、コードで型を明示的に宣言せずに(Set xlApp = New Excel.Applicationを使用して)Excelアプリケーションオブジェクトのインスタンスを作成したい場合は、次のリフレクションレベルのオブジェクト作成コードを使用して作成できます。
Dim xlApp As Excel.Application
Set xlApp = CreateObject(,"Excel.Application")
これは、タイプ固有のステートメントと同等です
Set xlApp = New Excel.Application
また:
assyliasアプローチを使用して、独自のコードを調べることができます(regexpまたはその他の解析を使用して、関心のあるコードの部分を選択します)。
yourWorkbook.VBProject.VBComponents("MyModule").CodeModule
この投稿にはいくつかの興味深いリードがあります:VBAのオブジェクトブラウザを反復処理する