从c#查找msform上的所有控件

我试图从C#使用VBA扩展互操作find所有的控件。

我可以find所有的forms使用:

using System; using Microsoft.Office.Interop.Excel using Microsoft.Vbe.Interop; using Microsoft.Vbe.Interop.Forms; ..... foreach (Microsoft.Vbe.Interop.VBComponent mycom in wb.VBProject.VBComponents) { if (mycom.Type == Editor.vbext_ComponentType.vbext_ct_MSForm) ..... 

但我无法find该表单上的控件。

我认为它应该看起来像这样:

 .... foreach (Microsoft.Vbe.Interop.Forms.Control ctrl in Microsoft.Vbe.Interop.VBComponent.Designer.Controls) .... 

但Controls集合不被识别。

有任何想法吗?


这个线程提供了更多关于我面临的问题的信息:

http://groups.google.co.uk/group/microsoft.public.dotnet.languages.csharp/browse_thread/thread/e2fe6e6b6335780e/6c17add3bfa50b4e?hl=en&ie=UTF-8&q=msform+designer+c%23#6c17add3bfa50b4e

这个代码应该工作:

 using System; using Microsoft.Office.Interop.Excel using VBA = Microsoft.Vbe.Interop; ... VBA.Forms.UserForm form; VBA.Forms.Control c; foreach (VBA.VBComponent mod in wb.VBProject.VBComponents) { // Use only VBA Forms if (!(mod.Designer is VBA.Forms.UserForm)) continue; form = (VBA.Forms.UserForm) mod.Designer; for (int i = 1; i < form.Controls.Count; i++) { c = (VBA.Forms.Control)form.Controls.Item(i); ... } }