我正在尝试使用密码代码保存工作簿(.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
答案 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