【问题标题】:Protect Excel Worksheet For Read Only But Enable External Data Refresh保护 Excel 工作表只读但启用外部数据刷新
【发布时间】:2013-12-19 10:03:24
【问题描述】:

我有一个 Excel 2010 工作簿。一个工作表从外部数据连接(SQL 查询)导入数据。我还在工作表中添加了其他列,以对数据执行计算并对其进行一些调整。该工作表构成了其他工作表中使用的原始数据的主干。

我想保护工作表以使其只读(允许排序、过滤、数据透视表使用)。我知道如何使用保护工作表功能来做到这一点。但是当工作表受到保护时,我不能使用刷新按钮来刷新源中的数据,我希望用户能够做到这一点。我打算将连接属性配置为在打开时自动刷新并允许手动刷新。

有没有人找到一种优雅的方式来启用保护工作表功能并启用外部数据刷新,而无需用户自己更改单元格值?

【问题讨论】:

    标签: excel excel-2010 protection worksheet


    【解决方案1】:

    一个简单的方法是添加一个自定义按钮并编写一个宏。当用户按下工具栏自定义按钮时,其后面的宏将取消保护工作表并刷新外部数据然后保护工作表(显然将screenupdate设置为false)

    【讨论】:

      【解决方案2】:

      根据 Pankaj 的建议,我做了以下事情(虽然我认为它不是很优雅,但仍然认为必须有更好的方法)。

      我为工作簿创建了一个新宏。

      Sub RefreshData()
      '
      ' RefreshData Macro
      '
      Application.ScreenUpdating = False
      Sheets("sheetname").Unprotect Password:="password"
      ActiveWorkbook.Connections("connection name").Refresh
      Sheets("sheetname").Protect _
      Password:="password", _
      UserInterfaceOnly:=True, _
      AllowFiltering:=True, _
      AllowSorting:=True, _
      AllowUsingPivotTables:=True
      End Sub
      

      然后我在 VBA 项目中打开 ThisWorkbook 并编辑了 Workbook Open 例程。

      Private Sub Workbook_Open()
      RefreshData
      End Sub
      

      有关保护选项的更多信息可以在这里找到:http://datapigtechnologies.com/blog/index.php/worksheet-protection-best-practice/

      有效;每次打开工作簿并刷新数据时,工作表都会被锁定。 UserInterfaceOnly 属性对刷新数据的命令没有影响(尽管它应该对其他宏事件产生影响)。您仍然需要专门解锁电子表格,执行数据刷新,然后再次锁定工作表。

      我在其他工作表之一上添加了一个表单按钮,并将其链接到我的 RefreshData 宏,以便可以手动刷新数据,而工作表应该被锁定。

      我在连接属性中做的另一件事是删除背景刷新的勾号。

      【讨论】:

        【解决方案3】:

        我建议将外部查询添加到另一个工作表上,不受保护,但你会隐藏。 受保护工作表上的数据只是指未受保护工作表。

        【讨论】:

          【解决方案4】:

          我将数据连接添加到一些未受保护的工作表,然后隐藏工作表。 不幸的是,即使工作簿的结构受到保护,连接也无法正常工作。

          我不敢相信我可能需要在不受保护的情况下发布我的代码,必须有一个工业级的解决方案来解决这个问题

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-05-04
            • 1970-01-01
            • 2016-01-11
            • 2016-11-30
            • 2017-04-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多