You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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打开属性窗口,将「公开」属性设为「是」。

  • 严格遵循编译顺序

    1. 先保存接口类(ITest),确保代码无语法错误;
    2. 再打开实现类(Class1),添加Implements ITest语句;
    3. 通过接口方法下拉列表自动生成实现代码,避免手动编写时的拼写错误;
    4. 保存实现类后,执行「调试」->「编译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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:33:21