如何强制SaveAs而不是Save

Ale*_*gro 5 excel vba excel-vba

我想阻止用户使用与打开时相同的名称保存工作簿,并提供SaveAs选项.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If ThisWorkbook.Name = "abc" Then
Cancel = True
SaveAsUI = True
End If
Run Code Online (Sandbox Code Playgroud)

也试过了

 If ThisWorkbook.Name = "abc" Then SaveAsUI = True
Run Code Online (Sandbox Code Playgroud)

此代码不起作用.SaveAs对话框不会出现.

接下来试试

If ThisWorkbook.Name = "abc" Then ThisWorkbook.ReadOnly = True
'Error - can't assign to read only property.
Run Code Online (Sandbox Code Playgroud)

bre*_*tdj 5

如果你只想测试一个特定的文件名 - 比如说abc.xlsm下面的代码将停止Save(但是传递SaveAs)然后将ReadOnly属性设置为False,因此Save在此会话中不能再次使用此文件

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not SaveAsUI Then
    If ThisWorkbook.Name = "abc.xlsm" Then
        Cancel = True
        ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
    End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud)