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

Access 2019按钮调用Shell运行odbcad32.exe打开ODBC管理器失效

故障原因
  • 该问题由64位Windows系统的文件重定向机制、ODBC管理器多版本共存的特性共同导致,Shell函数本身无异常,这也是替换为notepad.exe可以正常启动记事本的核心原因:记事本程序默认在系统全局搜索路径中,不存在多版本路径寻址冲突。
  • 64位Windows系统内置两个独立的ODBC数据源管理器程序,文件名均为odbcad32.exe,但存放路径和作用完全不同:
    • 64位ODBC管理器存放路径为C:\Windows\System32\odbcad32.exe,用于管理64位程序的ODBC数据源
    • 32位ODBC管理器存放路径为C:\Windows\SysWOW64\odbcad32.exe,用于管理32位程序的ODBC数据源
  • 当安装的Access 2019为32位版本时,直接调用不带全路径的odbcad32.exe会触发WOW64层的文件系统重定向,导致程序寻址失败无法拉起;即便是64位Access,在部分精简系统、受限权限配置场景下,未写全路径的程序调用也会因为Path变量优先级问题出现启动失败。
解决方法

最稳定的方案是在调用时写死对应版本的ODBC管理器全路径,跳过系统路径搜索和重定向逻辑,根据自己安装的Office版本选择对应代码即可:

  • 32位Access 2019场景(个人用户安装的默认版本多为该类型),使用如下代码:
Private Sub Command210_Click()
Dim RetVal
RetVal = Shell("C:\Windows\SysWOW64\odbcad32.exe", 1)
End Sub
  • 64位Access 2019场景,使用如下代码:
Private Sub Command210_Click()
Dim RetVal
RetVal = Shell("C:\Windows\System32\odbcad32.exe", 1)
End Sub

补充提示:如果需要按钮自动适配Office和系统位数,避免硬编码系统盘路径在特殊分区配置下失效,可以额外增加环境变量读取、系统位数判断逻辑动态拼接程序路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:18:22