打开时自动保护Excel工作簿:ProtectSharing提示导致代码执行挂起

我devise了以下VBA代码在打开时运行,以检查我的工作簿保护是否处于活动状态,如果不是,则将保护应用于我的工作表和工作簿:

If Not ActiveWorkbook.ProtectWindows Or ActiveWorkbook.ProtectStructure Then For Each WS In ThisWorkbook.Worksheets If WS.ProtectContents = False Then WS.Protect Password:="Password" Next WS ThisWorkbook.ProtectSharing Password:="Password", SharingPassword:="Password" End If 

它运行正常,没有任何打嗝,除了当启用工作簿的保护和共享时,它会popup一条消息,指出文件已经存在,并询问是否要覆盖它。

如果我与提示进行交互,并告诉它覆盖文件,它按预期行事,但我不想与提示交互。

我试图用压制提示

  Application.DisplayAlerts = False 

但是这导致应用程序挂在开放。 我的猜测是提示是隐藏的,不会像保存提示一样自动保存文件。 我如何强制它保存文件并覆盖现有的文件,所以它不会挂在那一点?

事实certificate,我不得不将Application.DisplayAlerts代码放在代码的上下,我把它放在例程的开始,在应该结束之前,我不知道为什么这个工作,而不是。

 If (Not ActiveWorkbook.ProtectWindows) Or (Not ActiveWorkbook.ProtectStructure) Then For Each WS In ThisWorkbook.Worksheets If WS.ProtectContents = False Then WS.Protect Password:="Password" Next WS Application.DisplayAlerts = False ThisWorkbook.ProtectSharing SharingPassword:="Password" Application.DisplayAlerts = True End If