文件从macros文件保存为.xlsx扩展名,但保存后失去保护

我试图用密码保存工作簿(.xlsx),所以当用户尝试打开它时会提示input密码。 否则,将显示警报文件受到保护。

用户将能够看到所有数据,但不能更新/插入/删除。

Sub Macro2() Sheets("Sheet1").Select Sheets("Sheet1").Copy ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ChDir "C:\Users\shane\Desktop" ActiveWorkbook.SaveAs Filename:="C:\Users\shane\Desktop\password.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWindow.Close End Sub 

查看Workbook.SaveAs方法的VBA文档([ https://msdn.microsoft.com/zh-cn/library/office/ff841185.aspx%5D )。

该方法的第三个可选参数是Password

虽然你刚才问我对这个话题做了一些研究。 我可以确认,使用ActiveSheet.Protect "yourPassword"将保护您的单元格(除非设置了locking属性), 不会提示用户input密码的input框

我环顾四周,发现同一主题有一些相关/类似的问题。 例如。 如何使用VBA保护Excel工作簿? 并在那里显示的答案,popup密码框。

我试了一下,发现使用AllowFiltering会触发密码框。 我仍在四处寻找这种行为的原因。

如果任何人都可以find链接/发布提示 – 任何有关这个话题的信息是非常欢迎的!


最后,这个代码根据问题/评论为我工作。

 Sub ProtectCells() Sheets("Sheet1").Select Sheets("Sheet1").Copy ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ChDir "C:\Users\shane\Desktop" ' WORKS ActiveSheet.Protect Password:="111", AllowFiltering:=True ' will NOT WORK!! (won't prompt a password box) 'ActiveSheet.Protect Password:="111", AllowSorting:=True ActiveWorkbook.SaveAs Filename:="C:\Users\shane\Desktop\password.xlsx", FileFormat:=xlOpenXMLWorkbook, Password:="222", CreateBackup:=False ActiveWindow.Close End Sub