在Excel中关闭工作簿时如何获取保存更改提示的值

时间:2018-07-04 10:39:02

标签: excel vsto

这可能是一个带有简单答案的简单问题,但我找不到。我正在构建带功能区按钮的VSTO加载项,当关闭所有工作簿时,这些功能区按钮将停用。为此,我处理了App_WorkbookBeforeCloseEvent。当我尝试关闭工作簿而不保存更改时,自然会收到保存提示。当我单击“是”或“否”时,关闭工作簿后,功能区按钮将停用,这很好。但是,当我单击“取消”时,工作簿没有关闭(良好),但功能区按钮仍处于停用状态(不良)。我尝试了许多How to effectively use WorkbookBeforeClose event correctly?之类的解决方案,但是我得到了不需要的额外提示。

我曾经尝试检查saved属性,但是无论我单击“否”还是“取消”按钮,其行为都相同。这是我的功能:

private void App_WorkbookBeforeClose(Excel.Workbook Wb, ref bool Cancel)
    {
        if (!Wb.Saved)
            return;

        bool isEnabled = false;
        setRibbonControlState(ref isEnabled);

        for (int i = 0; i < CustomTaskPanes.Count; i++)
            CustomTaskPanes[i].Visible = false;
    }

控制色带状态的功能

private void setRibbonControlState(ref bool isEnabled)
    {
        int workbookCount = Application.Windows.Count;
        if (workbookCount > 1)
            return;

        tdsRepDsbRibbon ribbon = Globals.Ribbons.tdsRepDsbRibbon;
        int tabCount = ribbon.Tabs.Count;

        for (int i = 0; i < tabCount; i++)
        {
            RibbonTab tab = ribbon.Tabs[i];
            int grpCount = tab.Groups.Count;

            for (int j = 0; j < grpCount; j++)
            {
                RibbonGroup grp = tab.Groups[j];
                int itCount = grp.Items.Count;

                for (int k = 0; k < itCount; k++)
                {
                    grp.Items[k].Enabled = isEnabled;
                }
            }
        }
    }

我的问题是在关闭工作簿之前如何获取Excel提示的保存消息的值(YesNoCancel)?

谢谢!

0 个答案:

没有答案