允许选择但不允许编辑受保护的 Excel 工作表中的图表和切片器

允许选择但不允许编辑受保护的 Excel 工作表中的图表和切片器

我想共享一个包含切片器和图表的 excel 文件。我希望用户能够使用切片器进行筛选,然后选择并复制图表。但我想保护工作表并防止对图表和切片器进行任何编辑。
据我所知,选项是锁定图表和切片器,在这种情况下,当工作表受到保护时,它们不可编辑,但切片器会冻结,图表无法复制(PrintScreen 不是一种选项)。或者,解锁它们,在这种情况下它们变得可用但可编辑。
有办法解决这个问题吗?

答案1

您有两个选择。一种方法是使用启用 VBA 的工作表并使用 VBA 添加您自己的逻辑,但这要求您的工作表启用宏,xlsm并且最终用户必须在您的工作簿中启用宏 - 但这样您可以最​​好地控制允许用户的操作。第二种方法是xlsx不使用 VBA - 但您不能在那里拒绝用户执行某些操作,例如删除切片器或更改图表名称。

1)你可以这样做正如这里推荐的

Private Sub Chart1_Click()     
    ActiveSheet.ChartObjects(1).CopyPicture
    MsgBox ("Chart copied to clipboard.  You can now paste this into another application.")        
End Sub

这意味着您需要将工作簿转换为 xlsm,即带有宏的工作簿。然后添加一个宏来处理图表单击时的剪贴板操作。

2)我认为更好的方法是将受保护的工作表上的图表元素保持解锁状态,然后使用宏修改其属性

Sub macro()
ActiveChart.ProtectData = True
ActiveChart.ProtectFormatting = True
ActiveChart.ProtectSelection = False
End Sub

或者针对工作表上的所有图表:

For Each i In ActiveSheet.ChartObjects
    i.Chart.ProtectSelection = False
    i.Chart.ProtectData = True
    i.Chart.ProtectFormatting = True 
Next i

这样,您在创建工作簿时使用宏,但工作簿本身不包含 VBA。

如果为图表创建单独的工作表,则可以使用密码单独保护它:

Sub macro()
Dim newChart As Chart

Range("C9:C11").Select
Set newChart = ActiveChart

With newChart
.Protect Password:="pwd", DrawingObjects:=True, Contents:=True
.ProtectData = True
.ProtectFormatting = True
.ProtectSelection = False
.ChartObjects(1).Chart.ProtectSelection = False

   'setting other properties
End With

End Sub

至于切片器,您需要将其保持解锁状态,并在锁定工作表时检查“使用数据透视表报告”。

答案2

编辑是指仅仅编辑底层数据还是编辑图表本身的样式?

如果您只想锁定数据,则可以将数据放在受保护的工作表上(您还可以允许使用数据透视表、选择、排序等),并将图表放在另一张工作表上。

这里他们建议使用一个点击即可复制图表的宏,如果包含图表的工作表也受到保护,您可以使用它。

答案3

尝试启用只读模式。我相信这是 Excel 上的一项功能(与受保护的视图不同),但我可能错了。

相关内容