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

如何将32位Access的VBA代码转换为可在64位Access运行?

Access表单打印/复制按钮错误排查方案

相关API声明

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long

Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
    (ByVal lpPrevWndFunc As Long, _
     ByVal hwnd As Long, _
     ByVal msg As Long, _
     ByVal wParam As Long, _
     ByVal lParam As Long) As Long

问题描述

我在Access中创建了一个表单,怀疑是打印和复制按钮引发了错误,但不确定该尝试什么解决方法。

排查与解决步骤

  • 隔离按钮代码:暂时移除打印、复制按钮的事件代码,测试表单是否还报错。如果不再报错,再逐行恢复代码定位问题行。
  • 检查API调用合法性:如果按钮代码中用到了上述API,确认hwnd参数是否正确获取(比如表单的hWnd属性),nIndex、msg等参数是否符合Windows API规范,避免参数类型不匹配。
  • 验证打印/复制逻辑:
    • 打印按钮:确认打印对象(报表、表单)是否存在,打印设置是否正确,可尝试直接调用DoCmd.PrintOut基础命令测试。
    • 复制按钮:检查复制的数据源是否有效(比如控件是否有值、记录集是否打开),可先用Clipboard.SetText简单语句测试剪贴板功能。
  • 启用错误捕获:在按钮事件代码开头添加On Error GoTo ErrorHandler,并在末尾添加错误处理段,获取具体错误编号和描述,精准定位问题。
  • 检查Access版本兼容性:如果是64位Access,上述API声明需要修改为适配64位的格式(添加PtrSafe关键字,调整Long为LongPtr),否则会引发运行时错误。

内容的提问来源于stack exchange,提问作者S20ccar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:55:29