Excel:确定是否使用Save或SaveAs

我正在使用下面的链接加载项的代码的版本,以检查我是否有我试图保存的任何文件的文件名中有“模板”; 不过,如果点击“另存为”,我不希望有消息框出现。 有没有办法确定正在执行什么types的保存? 谢谢您的帮助!

链接: http : //www.excelforum.com/excel-prog…ew-addin.html

我已经更新了部分类模块,如下所示:

Private Sub xlApp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim UserInput As String If LCase(ActiveWorkbook.Name) Like "*template*" Then UserInput = MsgBox("Are you sure you want to over-write the Template?", vbYesNo) If UserInput <> vbYes Then Cancel = True End If End If End Sub 

如果代码以与Excel的Workbook_BeforeSave事件类似的方式运行,则如果用户正在执行另存为(即,如果正在调用“另存为用户界面”,则包含首次保存工作簿时, SaveAsUI的值将为True ),如果他们只是做一个正常的保存,则为False

使用YowE3K的观点,你可以缩短代码

 If Not SaveAsUI Then Exit Sub If LCase$(ActiveWorkbook.Name) Like "*template*" Then _ Cancel = (MsgBox("Are you sure you want to over-write the Template?", vbYesNo) = vbNo) 

HI我使用了与YowE3K使用SaveAsUI相同的方法。 此外,请确保将模板存储为* .xltx或* xltm(对于启用macros),以便任何人以常规方式打开它时,它将创build未保存的文档,而不是实际打开模板文件,并通过保存模板文件变化。