【发布时间】: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 构造,它停止了崩溃!非常感谢!