xlDialogSaveAs使Excel崩溃

问题描述:

我想创建一个小宏,强制用户在MS Excel 2010中使用SaveAs对话框(“MS Office Professional Plus 2010”以防万一),而不是只保存文件一样的名字。我将这个程序保存在工作簿对象下:xlDialogSaveAs使Excel崩溃

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

我只是想它(的Excel 2013),它为我工作。你有什么版本的Excel?你保存为什么文件类型?你有没有尝试不同的文件名?本工作簿中是否有其他代码? –

+0

嗨迈克尔,很高兴知道至少我的方法并非完全错误......!我正在使用Excel 2010.可能是这样,但那会令人惊讶,因为我在几个旧的论坛条目中找到了该命令。 “另存为”对话框默认为“.xlsm”,并保持原样。我所做的只是改变名字。我尝试了不同的名字,但无济于事。工作簿中的任何地方都没有其他代码。 –

+0

如果您只是使用SaveAs,会不会导致崩溃?无论您尝试将它保存在哪里以及您给它的任何名称,它都会崩溃吗?是否保存文件,然后在实际保存之前崩溃或崩溃? –

尝试,

If Query = vbOk Then 
    Application.Dialogs(xlDialogSaveAs).Show 
End If 
Cancel = True. 

我怀疑有试图在原有的呼叫保存,并试图在你打开新的对话框,保存问题