Access数据库位置为何影响VBA连接?OpenSchema报错3251排查
Access数据库位置导致OpenSchema触发3251运行时错误的原因
我将完全相同的Access数据库(.accdb)复制到以下5个不同位置:
- 1:
C:\JunkSaves - 2:
C:\Users\...\OneDrive\Desktop\...\Project Tool\DBTransfer - 3:
C:\Users\...\OneDrive\Desktop\...\Project Tool\Tool - 4:
\\Netork\Server$\...\02_Test and Training Environment - 5:
\\Netork\Server$\...\Projects\_Archive
运行以下VBA代码时:
Private Sub GetUsers() Dim Rs As New ADODB.Recordset Set Rs = Nothing Set ThisWorkbook.TenantDB = Nothing Call DBLookup.ConnectToDB 'ThisWorkbook.TenantDB 类型为 ADODB.Connection Set Rs = ThisWorkbook.TenantDB.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}") ... '执行后续操作 End Sub
当连接位置2和4的数据库时,Set Rs = ... 这一行会触发运行时错误3251。我想明确为何数据库的存储位置会影响Excel VBA脚本执行OpenSchema的能力。
补充信息:
- 每次测试前都会用PowerShell关闭所有Excel和Access进程
- 无论数据库在哪个位置,Select、Update等常规查询都能正常运行
- 已参考Stack Overflow相关问题及微软官方KB文档
- 将报错位置的数据库复制到正常位置后,脚本可正常执行
- VBA脚本运行在启用宏的Excel文件中
- 连接字符串:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DbPath & ";Jet OLEDB:Database Password=" & constants.ToolPassword & ";"
新增信息:使用微软官方方法在Access中运行同类脚本,得到完全相同的结果——部分位置报错,部分位置正常。
内容的提问来源于stack exchange,提问作者Mandelbrotter
相关产品推荐
相关产品推荐

