Excel 2016在保存错误时触发撤消?

Off*_*Dev 13 c# vb.net excel vba excel-vba

Excel 2016似乎在保存时触发以编程方式添加的撤消级别,这在早期版本的Excel(2013,2010和2007)中不会发生.若要重现此明显错误,请打开一个新工作簿并将其另存为启用宏的工作簿(.xlsm文件).将以下代码粘贴到ThisWorkbook模块中:

Option Explicit
Public WithEvents App As Application
Private Sub Workbook_Open()
    Set App = Application
End Sub
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.OnUndo "foo", "modTest.Undo"
End Sub
Run Code Online (Sandbox Code Playgroud)

然后,插入一个名为的新模块modTest并粘贴以下代码:

Public Sub Undo()
    MsgBox "This is the Excel 2016 bug."
End Sub
Run Code Online (Sandbox Code Playgroud)

最后,保存工作簿并重新打开它.在任何单元格中输入任何值以触发Application.SheetChange事件.保存工作簿(由于某种原因,您可能需要执行此操作两次),并且modTest将显示消息.

任何人都可以解释这里可能会发生什么,和/或如何解决这个问题?如果这确实是一个错误,向Microsoft报告的最佳方式是什么?

这段代码是VBA,但由于这个问题影响用VB.NET和C#编写的VSTO加载项,我也包括这些标签.

Off*_*Dev 1

我们通过测试以及与 MS 软件工程师和支持人员的直接沟通确认,该错误已在 2016 年 7 月下旬/8 月初发布的 Office 版本中得到修复。