【问题标题】:How to protect an Excel worksheet/workbook from a macro of another workbook如何保护 Excel 工作表/工作簿免受另一个工作簿的宏的影响
【发布时间】:2017-10-18 07:51:19
【问题描述】:

我正在使用 Excel 2010,并且我有一个包含必须保护的工作表的工作簿,但我仍然想从 VBA 宏中更改锁定的单元格。我发现这很容易通过运行来实现

myWorksheet.Protect UserInterfaceOnly:=True

但是,如果用户在同一个 Excel 应用程序中打开另一个工作簿,他们可能会意外运行另一个宏,这可能会弄乱我的工作表。

是否有像 UserInterfaceOnly 这样的选项来保护其他工作簿的宏?

否则仅暂时使用UserInterfaceOnly 并在我的任何宏的末尾再次完全保护是否安全,或者由于并发性这会很危险?

【问题讨论】:

  • 好问题。如果在受保护的工作簿之后打开另一个工作簿,则它将成为活动工作簿。如果第一个受保护的工作簿以某种方式再次变为活动状态,那么是的,第二个工作簿的代码可能会使用 VBA 代码更改受保护的工作簿。我能想到的唯一另一种方法是使用正常保护并在需要进行更改时简单地取消保护每个工作表并在之后立即保护它。您可以使用 Sheet1.Unprotect Password:="Special" 来增强安全性 - 输入您的代码 - Sheet1.Protect Password:="Special"

标签: vba excel


【解决方案1】:

最安全的做法是在代码结束时保护工作表,将 UI-only 设置为 false。

【讨论】:

  • 所以保证当我的宏在运行并且 UI_only 为真时,另一个宏不能干扰?如果在 UI-only 返回 false 之前执行以某种方式中止怎么办?
  • 不,我没有这么说。只要 UI only 为真,任何宏都可以对文件进行更改。但是宏不能同时运行,所以除非另一个工作簿包含宏利用 Excel 应用程序事件,否则应该没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 2013-10-23
相关资源
最近更新 更多