Access 32/64位兼容改造后VBA项目读取失败问题求助
Access 32位/64位兼容改造后VBA项目读取错误问题
需求背景
客户要求Access系统可在32位与64位环境下运行。
示例兼容代码
' Windows API #If Win64 Then ' 64Bit Declare PtrSafe Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal Flags As LongPtr, ByVal ProcessID As LongPtr) As LongPtr Declare PtrSafe Function Process32First Lib "kernel32" (ByVal hSnapshot As LongPtr, ByRef ProcessEntry As PROCESSENTRY32) As LongPtr Declare PtrSafe Function Process32Next Lib "kernel32" (ByVal hSnap As LongPtr, ByRef ProcessEntry As PROCESSENTRY32) As LongPtr Declare PtrSafe Function CloseHandle Lib "kernel32.dll" (ByVal hObject As LongPtr) As LongPtr #Else Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal Flags As Long, ByVal ProcessID As Long) As Long Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, ByRef ProcessEntry As PROCESSENTRY32) As Long Declare Function Process32Next Lib "kernel32" (ByVal hSnap As Long, ByRef ProcessEntry As PROCESSENTRY32) As Long Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As LongPtr) As Long #End If
问题现象
将32位Access的.accdb文件改造为64位兼容后,在64位Access中运行正常,但切换回32位Access打开时出现**「无法打开数据库,因为其中的VBA项目无法读取」**错误;仅一台32位机器可正常打开该文件,调整Access选项设置无效。
复现步骤
- 在32位Access中打开.accdb文件
- 修改VBA代码以适配64位环境
- 测试流程:32位Access正常运行 → 64位Access正常运行 → 再次打开32位Access触发报错
补充信息
在64位环境打开报错时,部分引用丢失,但Visual Basic For Application的引用路径保持为「C:\Program Files (x86)\Microsoft Office\root\vfs\ProgramFilesCommonX86\Microsoft Shared\VBA\VBA7.1」;推测因VBA文件不可读导致引用声明无法加载,文件本身未损坏。
相关截图说明
- 错误提示截图:显示「无法打开数据库,因为其中的VBA项目无法读取」的错误弹窗
- 未损坏文件状态截图:展示正常状态下的文件引用及VBA项目信息
- 64位运行后疑似损坏文件截图:展示经过64位Access运行后,文件的异常状态
- 引用路径截图:显示Visual Basic For Application的引用路径详情
内容的提问来源于stack exchange,提问作者Lộc Nguyễn
相关产品推荐
相关产品推荐

