VBA密码保护Excel工作簿而不保存

Posted

技术标签:

【中文标题】VBA密码保护Excel工作簿而不保存【英文标题】:VBA Password Protect Excel Workbook without Save 【发布时间】:2014-10-09 09:19:09 【问题描述】:

是否可以在不使用 SaveAs 方法(没有任何方法保存文件)的情况下对 Excel 工作簿进行密码保护以打开?

目前在我们的应用程序中,我们使用 SaveAs 方法在生成工作簿并填充数据后保存和设置密码。此工作簿的生成需要一段时间,因为我们使用了大量数据并且生成的文件非常大 (120MB)。

我们正在寻找一些加速工作簿生成的方法,我们发现 SaveAs 方法需要大约 3 分钟才能完成,因为需要计算大量公式。与用户闲聊后,我们意识到每个人都对工作簿的 UI 进行了一些小改动,所以他们需要再次保存并再等待 3 分钟。

我们已决定禁止 SaveAs 方法,并由用户负责在完成更改后保存工作簿。这就是问题所在,如果没有 SaveAs,我无法找到使用密码保护文件的方法。

我已经尝试过 Workbook.Protect,但它似乎只保护结构和窗口不被更改,而不是文件不被打开:

ActiveWorkbook.Protect Password:=cPwd, Structure:=True, Windows:=False

我还找到了 Workbook.ProtectSharing 方法,但我没有尝试,因为文档说它保存了文件。

那么,有没有什么方法可以设置工作簿密码而不保存用户更改后手动保存时将应用的文件?

【问题讨论】:

你能阻止自动计算,保存然后重新启用自动计算吗?这样工作簿应该保存得更快。 使用Workbook.Password 属性。 谢谢罗里!我完全忘记在文档中检查 Workbook 的属性,因为我只关注函数。我可以确认它正在工作,而无需保存文件。你想写你的评论作为答案,以便我接受吗? 【参考方案1】:

您可以使用Workbook.Password 属性,它是读/写的。下次保存文件时将应用密码。

【讨论】:

以上是关于VBA密码保护Excel工作簿而不保存的主要内容,如果未能解决你的问题,请参考以下文章

使用 XLWINGS 打开工作簿而不使其可见

excel 用vba给某个excel.xls文件添加密码 怎么写啊,不要保护工作簿或者工作表,只是加密码而已

Workbook.SaveAs 使 Excel 与某些工作簿而非其他工作簿一起崩溃

EXCEL的每个单元格实现一次输入后就无法再更改

EXCEL VBA 隐藏了工作表,加密的,如何显示或破解

如何去除Excel的VBA工程密码及工作表保护密码