ACCESS中如何引用DataGridView或MSHFlexGrid控件

何尧 100 信誉分
2026-01-19T11:52:53.71+00:00

我在VB.NET中使用DataGridView控件,十分方便,请教在ACCESS中如何引用这个控件。

在VBA编辑器的工具菜单-引用,甚至都找不到网上所说的 MSHFlexGrid控件(“Microsoft Hierarchical FlexGrid Control 6.0 (SP6)”),在窗体设计视图的ActiveX控件中也没找到。

有时候无法避免使用功能更强大的控件,例如:

1.制作一个交叉表,它的字段是不固定的,使用常规的子窗体控件无法表达。

2.在一个列的不同行,需要使用不同的数据源,Combobox控件是表达不了的。

只要满足上述功能,DataGridView或MSHFlexGrid都可以,当然以DataGridView优先,谢谢!

Microsoft 365 和 Office | Access | 家庭版 | Windows
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Gabriel-N 13,035 信誉分 Microsoft 外部员工 仲裁人
    2026-01-19T14:50:53.7133333+00:00

    注:此回复已自动翻译。因此,它可能包含语法错误或表达尴尬。

    你好 何尧

    感谢你在 Q&A 论坛发帖咨询。我理解你的问题;不过很抱歉地通知你,DataGridView 无法在 Microsoft Access 中使用。DataGridView 是一个 .NET WinForms 控件,而 Access/VBA 只能承载 COM/ActiveX 控件,无法加载 .NET WinForms 组件。

    关于 MSHFlexGrid(MSHFLXGRD.OCX),该控件在今天同样并不理想,原因包括:

    • 只能在 32 位 Office 中使用
    • 必须手动安装并通过管理员权限注册: regsvr32 MSHFLXGRD.OCX (如有需要,还需在注册表中加入许可证密钥以启用完整功能)
    • 该控件已经过时,不建议在新的项目中使用,尤其是对于兼容性、部署和安全性方面都有风险

    如果你使用的是 32 位环境,并且确实需要使用该控件,它确实可以通过 VBA 将 Recordset 绑定到网格,从而处理动态表格,但仍然建议优先考虑替代方案。

    由于这些限制,DataGridView 在 Access 中不可行,而 MSHFlexGrid 也存在大量限制。 因此,在你的使用场景中,通常建议以下替代方案:

    • 数据表单(Datasheet Form)或连续表单(Continuous Form)+ 动态临时表 (适用于需要动态列的交叉表场景) 例如,可使用 VBA 根据交叉表查询创建一个临时表,然后将其设为窗体的 RecordSource。
    • 针对每一行设置不同数据源的 ComboBox(动态 RowSource) (适用于同一列的每行需要不同下拉数据源的情况) 例如,在窗体的 Current 事件中: Me.ComboBoxName.RowSource = "SELECT ... WHERE ID = " & Me.CurrentID

    希望这些信息对你有所帮助。如果你需要示例代码或需要协助实现这些方法,请告诉我。


    注意:如果您希望收到此线程的相关电子邮件通知,请按照我们的文档中的步骤启用电子邮件通知功能

    1 个人认为此答案很有帮助。

你的答案

提问者可以将答案标记为“已接受”,版主可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。