ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2806|回复: 9

[求助] 用ADO连接Excel表时居然把表格只读打开了...

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-11-8 13:21 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 feng3724 于 2017-11-8 16:08 编辑


逛了一下论坛, 有多人也遇到同样的问题:  做为数据源的Excel表放在共享盘(多人有打开编辑权限), 然后用ADO连接时, 如果其他人打开了源表格, 则在连接open时会同时在本地打开源表格(只读).
  看他们做了多种尝试, 都无法避免这种情况.
  两种简单的障眼方法:
       1. 连接时判断源表格是否打开, 打开则copy一份到本地, 然后连接本地的表格;
       2. 如果被打开了, 则加个语句进行判断并关闭之;
  但我觉得这两种方法都会导致增加额外的时间, 所以也再次询问一下老师们, 有没有什么设置上的变更来直接连接源表格, 而不是本地打开它?

  Dim xlscnn as ADODB.Connection
  Set xlscnn = New ADODB.Connection
  With xlscnn
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filename & ";Mode=Read;Extended Properties='Excel 12.0;HDR=No;IMEX=1'"
    .CommandTimeout = 15 '超时时间,默认为30秒
    .Open  '源表格在共享盘中, 如果被他人打开, 则ADO连接时会同时本地打开...
  End With


TA的精华主题

TA的得分主题

发表于 2017-11-8 13:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
去掉Mode=Read呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-8 13:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

最开始连接语句中是没有去设Mode的, 也没有把表格打开的问题, 后来突然出现把表格打开了, 然后我加了这个"Mode=Read", 真的就没打开表格了... 好景不长, 今天再用, 又发现它把表格给打开了(状态还是只读的)..., 而我表格并不是只读的...

TA的精华主题

TA的得分主题

发表于 2017-11-8 13:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
建议上传附件看看!

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-8 13:38 | 显示全部楼层

并且, 按理讲ADO只是连接, 并没有打开表格的操作啊...调试也无法发现哪出了问题, cnn.open的同时就把表格给打开了...我是实在找不到原因了....

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-8 13:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

逐行调试时, 在这几句代码就把表格给打开了...., 并且我这几句代码是放开始位置的...

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-8 13:46 | 显示全部楼层
本帖最后由 feng3724 于 2017-11-8 14:13 编辑
jsgj2023 发表于 2017-11-8 13:37
建议上传附件看看!
版主, 浏览了一下, 发现这位兄弟也有这样的问题.
他发现了问题, 是别人打开了ADO连接的共享盘上的文档时, open语句就会打开这份文档.
我的问题也是一样的, 表格放共享盘中(非共享,只是大家有权限打开), 这个是ADO的设置吗? 还是说有规避方法?
不想把原文档再拷贝一份到别的地方...
http://club.excelhome.net/thread-1168008-1-1.html

TA的精华主题

TA的得分主题

发表于 2019-8-22 11:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
feng3724 发表于 2017-11-8 13:46
版主, 浏览了一下, 发现这位兄弟也有这样的问题.
他发现了问题, 是别人打开了ADO连接的共享盘上的文档时,  ...

老兄,这个问题后来找到解决办法了吗?

TA的精华主题

TA的得分主题

发表于 2021-8-26 14:41 | 显示全部楼层
这现在也碰到这个问题了,
Excel工作薄在局域网中,如果已经有其它电脑用户打开这个文件,
这里,如果你在同局域网下的不同电脑,用ADO连接这个工作薄,会被自动打开。

我现在的方法是,关闭ADO连接后,判断是否被打开,如果被打开,则关闭它。


TA的精华主题

TA的得分主题

发表于 2023-1-31 10:00 | 显示全部楼层
HDR=No;IMEX=1 我在连接字符串中添加这个会报错,有什么解决办法吗
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-26 08:16 , Processed in 0.029661 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表