如何仅在 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
保护特定 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