如何确定DataRecordset.Add()的ConnectionString及Excel连接疑问
Visio数据连接相关问题与解答
问题详情
官方文档针对DataRecordsets.Add()方法和DataConnection.ConnectionString属性说明:通过Visio UI中的**数据选择向导(Data Selector Wizard)**建立连接,录制宏后从宏代码中复制连接字符串是确定对应数据源连接字符串的最简方式。但遇到以下问题:
- 不清楚数据选择向导是什么、如何访问
- 使用该向导时无法录制宏,在线文档也无相关参考
- 尝试了数据选项卡下的“创建”按钮,仍无法录制宏
此外,需连接Excel表格,现有示例代码的连接字符串构建命令如下,不确定该代码是否适用于所有Excel连接场景,比如仅修改Data Source值是否总能正常连接?
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" _ & "User ID=Admin;" _ & "Data Source=" + strOfficePath + "SAMPLES\1033\ORGDATA.XLS;" _ & "Mode=Read;" _ & "Extended Properties=""HDR=YES;IMEX=1;MaxScanRows=0;Excel 12.0;"";" _ & "Jet OLEDB:Engine Type=34;"
关于数据选择向导与宏录制的解决方法
数据选择向导的访问方式
数据选择向导就是Visio中引导连接外部数据源的可视化工具,在Visio的「数据」选项卡中,点击「链接数据到形状」(部分版本可能命名为「导入数据」或「连接数据」)即可启动该向导,它会一步步引导你完成Excel、Access等数据源的连接配置。宏录制失败的解决步骤
- 先启用开发工具选项卡:依次点击「文件」→「选项」→「自定义功能区」,勾选「开发工具」,点击确定后界面会显示该选项卡。
- 点击开发工具中的「录制宏」,再去操作数据选择向导完成数据源连接流程,最后停止录制,即可在宏代码中找到自动生成的连接字符串。
- 若仍无法录制,可能是版本兼容性问题,可尝试重启Visio后再操作,或手动完成向导配置后检查宏代码是否生成。
Excel连接字符串的适用性分析
示例代码的连接字符串不适用于所有Excel场景,仅修改Data Source不一定总能正常连接,需根据实际情况调整参数:
- Provider版本:如果Visio和Excel位数不匹配(比如32位Visio连接64位Excel),需切换Provider,旧版
.xls文件可尝试Microsoft.Jet.OLEDB.4.0(仅支持32位),新版优先用Microsoft.ACE.OLEDB.12.0/16.0。 - 文件格式适配:
- 对于
.xlsx格式,Extended Properties里的Excel 12.0要改为Excel 12.0 Xml,且无需Jet OLEDB:Engine Type=34参数; - 旧版
.xls文件保留Excel 12.0和Jet OLEDB:Engine Type=34即可。
- 对于
- 表头配置:若Excel表格第一行不是表头,需将
HDR=YES改为HDR=NO。 - 数据类型处理:
IMEX=1是强制混合数据类型列按文本读取,若数据源数据类型统一,可改为IMEX=0或删除该参数。 - 权限与锁定:若Excel文件在受保护目录(如OneDrive同步文件夹),可将
Mode=Read改为Mode=ReadWrite,但需确保文件未被其他程序锁定。
总结:在同位数Visio/Excel、常规.xls文件、存在表头的基础场景下,仅修改Data Source可正常连接;复杂场景需对应调整其他参数。
内容的提问来源于stack exchange,提问作者bdbshs
相关产品推荐
相关产品推荐

