如何在运行的Database2.accde中打开Database1.mda的外部窗体?
解决ACCDE中打开MDA插件窗体的问题
问题分析
你的代码创建了新的Access应用实例,插件窗体在这个新实例中运行,当前ACCDE的Forms集合无法访问到它,且新实例默认隐藏,导致看不到窗体。另外,.mda作为旧格式Access加载项,应使用OpenDatabase而非OpenCurrentDatabase来关联。
修正后的代码
直接在当前ACCDE进程中打开MDA的窗体,无需创建新实例:
Private Sub btnMostrarFormularioExterno_Click() Dim extDb As DAO.Database Dim frm As Access.Form ' 打开外部MDA数据库 Set extDb = OpenDatabase(CurrentProject.Path & "\AA.mda") ' 在当前Access实例中打开外部窗体 DoCmd.OpenForm "Formulario2", acDialog, , , , , extDb.Name ' 遍历当前实例的窗体集合验证 For Each frm In Forms MsgBox frm.Name Next frm ' 关闭外部数据库连接 extDb.Close Set extDb = Nothing End Sub
关键说明
- 使用
DAO.Database打开MDA,避免创建新的Access进程,确保窗体在当前ACCDE界面显示 DoCmd.OpenForm的最后一个参数指定外部数据库名称,让Access从该库加载窗体- 若需要非模态显示,将
acDialog改为acNormal即可
内容的提问来源于stack exchange,提问作者pfigueredo
相关产品推荐
相关产品推荐

