【问题标题】:Change Data Connection to Read Only将数据连接更改为只读
【发布时间】:2016-07-02 19:48:04
【问题描述】:

我有一个“摘要”Excel 工作簿,其中包含与其他“数据”工作簿的数据透视和数据连接。

  1. 当刷新连接并且用户在数据工作簿中时,刷新失败,说它是只读的。 (然后它会尝试打开数据工作簿。)有没有办法解决这个问题?例如。读取数据而不是需要写入权限?数据字符串属性如下。

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

  1. 当我刷新连接并且用户进入数据工作簿时,excel 说它是只读的,并且由“另一个用户”使用。

我正在使用 VBA ActiveWorkbook.Connections("Test.xlsm").Refresh 刷新。

VBA 中有没有办法告诉 Excel 放弃访问权限,以便数据工作簿变得免费。我能想到的唯一解决方案是关闭工作簿并再次打开。

【问题讨论】:

    标签: excel vba data-connections


    【解决方案1】:

    好的,我找到了一个解决方案,希望它会在未来对其他人有所帮助。

    1. 我先解决第二个问题!

      Dim conn As Variant
      
      For Each conn In ActiveWorkbook.Connections
          conn.OLEDBConnection.MaintainConnection = False
       Next conn
      

    所以在 excel 2013 中,我发现维护连接属性默认设置为 true。在我刷新数据连接后,这会将其设置为 false。工作得很好,现在用户可以在我刷新后毫无问题地进入源数据。

    1. 对于第一个问题,经过大量搜索 + 尝试设置连接字符串 Mode=Read/Readonly=False 等。(我无法开始工作)我决定在刷新连接时处理只读问题。基本上我有一些代码来检查源文件中是否有用户。如果他们以只读方式打开源文件,请刷新连接(和枢轴)然后关闭文件。如果没有用户打开文件,则只需刷新连接。如果有人需要代码,请发表评论,我可以发布

    非常感谢!

    【讨论】:

    • 是的,请向我们提供执行此操作的代码,@Baseline9!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多