Access VBA实现接口报错:用户定义类型未定义
Access 365 64位VBA接口「用户定义类型未定义」错误排查方案
针对在Microsoft Access 365(64位,版本2404)空白文件中使用VBA接口时出现的「用户定义类型未定义」错误,以下是具体排查和解决步骤:
可能原因及解决方法
检查核心库引用
确认项目引用中已勾选Microsoft Access 16.0 Object Library(对应365版本),且未勾选冲突的旧版本库。64位环境下需确保引用的是64位兼容的库文件。调整类模块属性
接口类(ITest)的VB_Exposed属性可尝试设为True,确保接口能被其他类模块正确识别。修改方法:在类模块代码窗口中按F4打开属性窗口,将「公开」属性设为「是」。严格遵循编译顺序
- 先保存接口类(ITest),确保代码无语法错误;
- 再打开实现类(Class1),添加
Implements ITest语句; - 通过接口方法下拉列表自动生成实现代码,避免手动编写时的拼写错误;
- 保存实现类后,执行「调试」->「编译VBAProject」操作。
排查名称冲突
确认数据库中没有其他模块(标准模块、类模块)与接口类同名(ITest),名称冲突会导致VBA无法正确识别自定义类型。修复数据库文件
执行「数据库工具」->「压缩和修复数据库」,解决可能存在的文件损坏问题,之后重新测试接口功能。
你提供的代码参考
接口类ITest代码
VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "ITest" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Compare Database Option Explicit Public Property Get ParentForm() As Form End Property
实现类Class1代码
VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "Class1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Compare Database Option Explicit Implements ITest Private Property Get ITest_ParentForm() As Form End Property
内容的提问来源于stack exchange,提问作者Simorgh
相关产品推荐
相关产品推荐

