我想分享一個包含切片器和圖表的 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 上的一項功能(與受保護的視圖分開),但我可能是錯的。