【问题标题】:xlDialogSaveAs makes Excel crashxlDialogSaveAs 使 Excel 崩溃
【发布时间】:2016-12-29 01:35:40
【问题描述】:

我想创建一个小宏,强制用户在 MS Excel 2010 中使用“另存为”对话框(“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 对话框正确默认为它)。

有没有人可以帮助我?

【问题讨论】:

  • 我刚试过(Excel 2013),它对我有用。你有什么版本的 Excel?您保存为什么文件类型?您是否尝试过不同的文件名?这个工作簿中还有其他代码吗?
  • 嗨迈克尔,很高兴知道至少我的方法并没有完全错误......!我正在使用 Excel 2010。可能是这样,但这会令人惊讶,因为我在一些旧论坛条目中找到了该命令。 SaveAs 对话框默认为“.xlsm”,我保持不变。我所做的只是更改名称。我尝试了不同的名称,但无济于事。工作簿中没有其他代码。
  • 如果只使用另存为,excel 会崩溃吗?无论您尝试在哪里保存它以及您给它起什么名字,它都会崩溃吗?它是否会保存文件,然后在实际保存之前崩溃或崩溃?
  • 所以你想把你的文件保存到一个不带代码的 .xlsx 吗?
  • @MichaelRusso,您的更改解决了我的问题!我按照建议更改了 If-Then 构造,它停止了崩溃!非常感谢!

标签: vba excel


【解决方案1】:

试试,

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

我怀疑尝试保存原始通话并尝试保存在您打开的新对话框中时出现问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 2018-02-23
    相关资源
    最近更新 更多