如何仅在 Excel VBA 中保护特定工作簿

How to protect a specific workbook only in Excel VBA

保护特定 Excel 工作簿的最佳方法是什么?

我有一个继承脚本,末尾包含以下公共行:

ActiveSheet.Protect "my-password"
ActiveWorkbook.Protect "my-password"

但是,我注意到由于脚本可能需要几分钟才能完成,运行 用户通常会在解决问题时切换到一个新的不相关的工作簿 - 无论他们正在处理什么。然后,在宏完成后,不相关的工作簿将继承密码保护 - 因为用户正在使用的任何其他 Excel 文件现在都是 "Active"(大概?这是我对问题的解读)。

以上脚本在一个工作簿中,可以重命名为用户选择的任何名称,并保存在任意数量的目录中。当其他工作簿正在使用时,如何确保只有原始 excel 文件被宏 locked/unlocked ?

我相信有很多方法可以做到这一点,但哪种方法最万无一失?

注意:使用 Office 365

感谢 Dean 在评论中的回答:

在代码的早期(如果合适,在 Worksheet_Change 中)输入以下内容以将您的 sheet 定义为一个对象(在我的例子中命名为 default_ws):

Set default_ws = ActiveSheet

当您准备好锁定 sheet 或工作簿时,您可以使用:

default_ws.Protect "password-here" 'protect your sheet
ThisWorkbook.Protect "password-here" 'protect your workbook

另请注意:

如果需要,您还可以将工作簿定义为一个对象,如下所示:

Set default_wb = ActiveWorkbook