Excel宏数据刷新与保护

标签 excel protection vba

在 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

产生以下错误:

The cell or chart you are trying to change is protected and therefore read-only.



我尝试了许多方法来延迟宏的继续,直到刷新完成,但没有任何效果。我查看了这个论坛上的方法,但没有发现任何工作。什么会起作用?

最佳答案

尝试以下方法之一:

  • 添加 DoEventsActiveWorkbook.RefreshAll 之后.像这样:
    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
    
  • 关于Excel宏数据刷新与保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686573/

    相关文章:

    java - 我们可以阻止Excel工作表的某个单元格进行删除操作吗?

    android - 受密码保护的android应用。重置密码功能?

    vba - 引用并打开外部 xlsm 库时强制退出

    正则表达式 Microsoft Word 不破坏文档格式

    c++ - 由 C 编译为 DLL 的随机函数无法正常工作

    php - 将excel文件导入数据库时​​超时

    vba - VBA 下标超出范围

    html - 如何防止下图所示网站上的垃圾邮件

    Excel 360 VBA 更改数据透视表过滤器

    ios - 保护 iPhone 数据的常见做法是什么