创建一个新文件并删除密码保护

时间:2018-07-16 11:17:33

标签: excel excel-vba

我使用以下VBA在桌面上保存新文件:

Sub Files()
ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\testfile.xlsm"
Workbooks.Open "C:\Users\" & Environ("Username") & "\Desktop\" & "testfile.xlsm", UpdateLinks:=False
MsgBox ("File saved successfully on desktop.")
ThisWorkbook.Close SaveChanges = False
End Sub

到目前为止,所有这些都工作正常。


我的原始文件有密码保护。应该在使用上述VBA创建的新文件中删除此保护。

为取消保护文件,我具有以下VBA:

Sub Unprotection()
Dim b As Worksheet
For Each b In Worksheets
b.Unprotect Password:="abc"
Next b
End Sub

但是,我不知道如何在创建新文件的过程中输入此代码。我尝试使用以下代码,但它仅在原始文件中运行,而不在我创建的新文件中运行。

Sub Files()
ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\testfile.xlsm"
Workbooks.Open "C:\Users\" & Environ("Username") & "\Desktop\" & "testfile.xlsm", UpdateLinks:=False
Call Unprotection
MsgBox ("File saved successfully on desktop.")
ThisWorkbook.Close SaveChanges = False
End Sub

您知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:2)

如果您不想取消保护原始工作簿,则可以将新工作簿作为参数传递给“取消保护”:

dot -K fdp -T png cc_svek.dot

答案 1 :(得分:0)

最快的解决方法是将“不受保护”移到例程的开始。 您无需重新保护,因为在不保存更改的情况下关闭了呼叫工作簿。

Sub Files()
Call Unprotection ' unprotect calling workbook sheets
ActiveWorkbook.SaveCopyAs "C:\Users\" & Environ("Username") & "\Desktop\testfile.xlsm" ' save a copy with non-protected sheets
Workbooks.Open "C:\Users\" & Environ("Username") & "\Desktop\" & "testfile.xlsm", UpdateLinks:=False ' open the new non-protected book
MsgBox ("File saved successfully on desktop.") ' Message
ThisWorkbook.Close SaveChanges = False ' Close the calling workbook without saving the unprotected sheets
End Sub