[英]Excel macro data refresh and protection
在Excel宏中,我需要取消保護工作表,刷新數據,然后保護工作表。 以下作品:
Dim rs As Worksheet
For Each rs In Worksheets
rs.Unprotect Password:="SomePassword"
Next rs
ActiveWorkbook.RefreshAll
這不是:
Dim rs As Worksheet
For Each rs In Worksheets
rs.Unprotect Password:="SomePassword"
Next rs
ActiveWorkbook.RefreshAll
For Each rs In Worksheets
rs.Protect Password:="SomePassword"
Next rs
產生以下錯誤:
您嘗試更改的單元格或圖表受到保護,因此為只讀。
我嘗試了許多方法來延遲宏的繼續,直到刷新完成,但沒有任何效果。 我在該論壇上查看了方法,但沒有找到有效的方法。 有什么用?
請嘗試以下方法之一:
在ActiveWorkbook.RefreshAll
之后添加DoEvents
。 像這樣:
Dim rs As Worksheet For Each rs In Worksheets rs.Unprotect Password:="SomePassword" Next rs ActiveWorkbook.RefreshAll: DoEvents For Each rs In Worksheets rs.Protect Password:="SomePassword" Next
保護工作簿時,將UserInterfaceOnly
參數設置為true。 就像是:
rs.Protect Password:="SomePassword", UserInterfaceOnly:=True
我在以下子代碼中得到了相同的錯誤消息,我注意到該錯誤消息引用了包含數據透視表的工作表:
Private Sub Refresh()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
wks.Unprotect
Next wks
ThisWorkbook.RefreshAll: DoEvents
For Each wks In ThisWorkbook.Worksheets
wks.Protect UserInterfaceOnly:=True
Next wks
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.