Autodesk Inventor中VBA连接PostgreSQL报错求助(Excel可正常运行)
问题解答:Autodesk Inventor VBA连接PostgreSQL报错的原因及解决方法
这个ADODB连接PostgreSQL的方法并非仅适用于Excel,Autodesk Inventor的VBA环境完全支持ADODB组件。报错的原因大概率是以下几个环节的差异,而非方法本身的兼容性问题:
32/64位兼容性不匹配
Inventor的位数(32/64位)必须和PostgreSQL ODBC驱动的位数完全一致。如果Excel是32位,搭配32位驱动能正常运行,但Inventor是64位的话,就会因为驱动位数不兼容报错。
解决:- 查看Inventor位数:点击顶部菜单「帮助」→「关于Autodesk Inventor」确认;
- 安装对应位数的PostgreSQL ODBC驱动;
- 配置对应位数的ODBC数据源(64位系统需注意:控制面板里的「ODBC数据源(64位)」对应64位程序,「ODBC数据源(32位)」对应32位程序)。
Inventor运行权限不足
Inventor可能没有足够权限访问ODBC驱动文件或PostgreSQL数据库。比如普通用户权限运行Inventor时,无法读取驱动安装目录的文件,或者数据库用户TEST没有连接目标库的权限。
解决:- 右键Inventor图标,选择「以管理员身份运行」重试;
- 在PostgreSQL中检查TEST用户权限,确保其拥有
CONNECT权限及目标数据库的访问权限。
DSN配置的上下文差异
你使用的用户DSN仅对当前登录用户可见,如果Inventor运行在不同用户上下文(比如管理员用户),会找不到该DSN;而Excel和Inventor可能使用了不同的用户上下文。
解决:- 将DSN配置为系统DSN,确保所有用户都能访问;
- 改用无DSN的直接连接字符串,避免依赖DSN配置(驱动名称需和实际安装的一致):
若为32位驱动,驱动名称改为oConn.Open "Driver={PostgreSQL Unicode(x64)};" & _ "Server=" & strServerAddress & ";" & _ "Database=" & strDatabase & ";" & _ "Uid=" & strUsername & ";" & _ "Pwd=" & strPassword{PostgreSQL Unicode}。
ADODB组件版本差异
虽然你确认了项目引用一致,但Inventor和Excel可能加载了不同版本的ADODB库。比如Excel使用的是最新版msado15.dll,而Inventor默认加载了旧版本组件。
解决:在Inventor的VBA编辑器中,点击「工具」→「引用」,勾选最新版本的ADO库(如「Microsoft ActiveX Data Objects 6.1 Library」),并移除旧版本的引用。
内容的提问来源于stack exchange,提问作者G.H.
相关产品推荐
相关产品推荐

