Excel:确定是否使用Save或SaveAs

时间:2016-09-20 20:26:18

标签: excel excel-vba vba

我正在使用以下链接中的加载项代码版本来检查我是否在我要保存的任何文件的文件名中都有“模板”;但是,如果单击“另存为”,我不希望出现消息框。有没有办法确定正在执行哪种类型的保存?谢谢你的帮助!

链接:http://www.excelforum.com/excel-prog...e-w-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 

3 个答案:

答案 0 :(得分:3)

如果代码的操作方式与Excel的Workbook_BeforeSave事件类似,则SaveAsUI的值将为True,如果用户正在执行另存为(即如果正在调用SaveAs用户界面,因此包括第一次保存工作簿),如果他们正在执行正常保存,则False

答案 1 :(得分:0)

使用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)

答案 2 :(得分:0)

HI我使用与YOWE3K建议的方法使用SaveAsUI。 另外,请确保将模板存储为* .xltx或* xltm(启用宏),这样当任何人以通常的方式打开它时,它将创建一个未保存的文档,而不是实际打开模板文件并允许它们通过保存它们来搞乱它们变化。