将数据连接更改为只读

时间:2016-03-16 18:26:45

标签: excel vba data-connections

我有一个"摘要"带有枢轴和数据连接的Excel工作簿,以及其他数据"的工作簿。

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

    Provider = Microsoft.ACE.OLEDB.12.0; User ID = Admin; Data Source = C:\ Test \ Test.xlsm; Mode = Share Deny Write; Extended Properties =" HDR = YES;&#34 ;; Jet OLEDB:System database ="&#34 ;; Jet OLEDB:Registry Path ="&#34 ;; 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 ="&#34 ;; Jet OLEDB:Create System Database = False; Jet OLEDB:Encrypt Database = False ; Jet OLEDB:不要复制Compact上的Locale = False; Jet OLEDB:紧凑没有复制修复= False; Jet OLEDB:SFP = False; Jet OLEDB:支持复杂数据= False; Jet OLEDB:绕过UserInfo验证= False ; Jet OLEDB:有限DB缓存= False; Jet OLEDB:绕过ChoiceField验证= False

    1. 当我刷新连接并且用户进入数据工作簿时,excel说它只读并由#34;另一个用户使用"。
    2. 我正在使用VBA ActiveWorkbook.Connections("Test.xlsm").Refresh刷新。

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

1 个答案:

答案 0 :(得分:1)

好的,我找到了一个解决方案,希望将来可以帮助其他人。

  1. 我先处理第二个问题!

    Dim conn As Variant
    
    For Each conn In ActiveWorkbook.Connections
        conn.OLEDBConnection.MaintainConnection = False
     Next conn
    
  2. 因此在excel 2013中,我发现默认情况下,维护连接属性设置为true。刷新数据连接后,将其设置为false。工作一个款待,现在用户可以在刷新后进入源数据,完全没有问题。

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