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

时间:2015-02-27 23:37:08

标签: excel vba excel-vba

我正在尝试使用密码代码保存工作簿(.xlsx),因此当用户尝试打开它时会提示输入密码。或者,否则将显示文件受保护的警报。

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

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

2 个答案:

答案 0 :(得分:1)

查看Workbook.SaveAs方法的VBA文档([https://msdn.microsoft.com/en-us/library/office/ff841185.aspx])。

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

答案 1 :(得分:0)

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

我环顾四周,发现了一些相同/相似的问题。 例如。 How to protect Excel workbook using VBA? 然后会显示答案,弹出密码框。

我试过并发现使用 AllowFiltering 会触发密码框。我仍然在寻找这种行为的原因。

如果有人可以找到链接/发布提示 - 非常欢迎有关此主题的任何信息!

最后,根据问题/评论,这段代码对我有用。

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