Excel宏数据刷新和保护

m3eecexj  于 2023-04-22  发布在  其他
关注(0)|答案(2)|浏览(164)

在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

生成以下错误:
您试图更改的单元格或图表受保护,因此是只读的。
我尝试了很多方法来延迟宏的继续,直到刷新完成,但没有任何工作。我看了这个论坛上的方法,发现没有工作。什么会工作?

anauzrmj

anauzrmj1#

请尝试以下操作之一:
1.在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

1.保护工作簿时,将UserInterfaceOnly参数设置为true。类似于:

rs.Protect Password:="SomePassword", UserInterfaceOnly:=True
uttx8gqw

uttx8gqw2#

我得到了相同的错误消息与以下子,我注意到,错误消息是指工作表包含透视表:

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

相关问题