将数据连接更改为只读
Change Data Connection to Read Only
我有一个 "summary" Excel 工作簿,其中包含与其他 "data" 工作簿的数据透视表和数据连接。
- 当刷新连接并且用户在数据工作簿中时,刷新失败说它是只读的。 (然后它尝试打开数据工作簿。)有没有办法解决这个问题?例如。读取数据而不需要写入权限?下面的数据字符串属性。
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Test\Test.xlsm;Mode=Share Deny Write;Extended Properties="HDR=YES;";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False
- 当我刷新连接并且用户进入数据工作簿时,excel 说它只读并由 "Another user" 使用。
我正在使用 VBA ActiveWorkbook.Connections("Test.xlsm").Refresh
刷新。
VBA 中是否有方法告诉 Excel 放弃访问权限,以便数据工作簿变得免费。我能想到的唯一解决办法就是关闭工作簿,然后再打开。
好的,我找到了解决方案,希望它能在将来帮助其他人。
我先解决第二个问题!
Dim conn As Variant
For Each conn In ActiveWorkbook.Connections
conn.OLEDBConnection.MaintainConnection = False
Next conn
所以在 excel 2013 年,我发现维护连接 属性 默认设置为 true。在我刷新数据连接后,这会将其设置为 false。效果很好,现在用户可以在我刷新后毫无问题地进入源数据。
- 对于第一个问题,经过大量搜索+尝试设置连接字符串 Mode=Read/Readonly=False 等(我无法开始工作)我决定处理只读问题刷新连接。基本上我得到了一些代码来检查源文件中是否有用户。如果他们以只读方式打开源文件,请刷新连接(和枢轴),然后关闭文件。如果没有用户打开该文件,则只需刷新连接即可。如果有人需要代码请评论,我可以 post
非常感谢!
我有一个 "summary" Excel 工作簿,其中包含与其他 "data" 工作簿的数据透视表和数据连接。
- 当刷新连接并且用户在数据工作簿中时,刷新失败说它是只读的。 (然后它尝试打开数据工作簿。)有没有办法解决这个问题?例如。读取数据而不需要写入权限?下面的数据字符串属性。
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Test\Test.xlsm;Mode=Share Deny Write;Extended Properties="HDR=YES;";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False
- 当我刷新连接并且用户进入数据工作簿时,excel 说它只读并由 "Another user" 使用。
我正在使用 VBA ActiveWorkbook.Connections("Test.xlsm").Refresh
刷新。
VBA 中是否有方法告诉 Excel 放弃访问权限,以便数据工作簿变得免费。我能想到的唯一解决办法就是关闭工作簿,然后再打开。
好的,我找到了解决方案,希望它能在将来帮助其他人。
我先解决第二个问题!
Dim conn As Variant For Each conn In ActiveWorkbook.Connections conn.OLEDBConnection.MaintainConnection = False Next conn
所以在 excel 2013 年,我发现维护连接 属性 默认设置为 true。在我刷新数据连接后,这会将其设置为 false。效果很好,现在用户可以在我刷新后毫无问题地进入源数据。
- 对于第一个问题,经过大量搜索+尝试设置连接字符串 Mode=Read/Readonly=False 等(我无法开始工作)我决定处理只读问题刷新连接。基本上我得到了一些代码来检查源文件中是否有用户。如果他们以只读方式打开源文件,请刷新连接(和枢轴),然后关闭文件。如果没有用户打开该文件,则只需刷新连接即可。如果有人需要代码请评论,我可以 post
非常感谢!