我正在尝试使用 VBA 可扩展性互操作从 c# 查找 msform 上的所有控件。
我可以使用以下方式找到所有表格:
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)
.....
但我找不到该表单上的控件。
我认为它应该看起来像:
....
foreach (Microsoft.Vbe.Interop.Forms.Control ctrl in Microsoft.Vbe.Interop.VBComponent.Designer.Controls)
....
但 Controls 集合不被识别。
有任何想法吗?
该线程提供了有关我面临的问题的更多信息:
这段代码应该可以工作:
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);
...
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)