允許在受保護的 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 上的一項功能(與受保護的視圖分開),但我可能是錯的。

相關內容