我想创建一个小宏,强制用户在MS Excel 2010中使用SaveAs对话框(“MS Office Professional Plus 2010”以防万一),而不是仅使用相同的名称保存文件。我在工作簿对象下保存了此过程:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not SaveAsUI Then
msg = "Use the 'Save As' dialog to save a new version of the file"
Style = vbOKCancel
Query = MsgBox(msg, Style)
If Query = vbOK Then
Application.Dialogs(xlDialogSaveAs).Show
ElseIf Query = vbCancel Then
Cancel = True
End If
End If
End Sub
一切正常:我按“Ctrl-S”并得到提示。我单击“确定”并使用“另存为”对话框以不同的名称保存文件。但是只要我点击对话框中的“保存”按钮,Excel就会崩溃。
我可能以错误的方式使用xlDialogSaveAs命令,但我无法弄清楚为什么这不起作用。调试器中没有错误消息。工作簿中的其他任何位置都没有其他VBA代码。我试图将工作簿保存为.xlsm文件(SaveAs对话框正确默认为它)。
有没有人可以帮助我?
答案 0 :(得分:1)
尝试,
If Query = vbOk Then
Application.Dialogs(xlDialogSaveAs).Show
End If
Cancel = True.
我怀疑尝试保存原始通话并尝试保存在您打开的新对话框中时出现问题