我正在使用基於Excel文檔級別自定義的產品。項目類型是Visual Studio中的「Excel 2013模板」。Excel用戶定義的函數問題與Excel模板
最近我開發了一個用戶定義函數,它將用於評估我們自己的功能。我已經根據文章https://blogs.msdn.microsoft.com/eric_carter/2004/12/01/writing-user-defined-functions-for-excel-in-net/
開發了用戶定義函數。用戶定義函數對我們的產品的Excel模板正常工作,但對於一個測試用例失敗。
- 打開產品的新Excel模板。 [例如:Excel模板1]
- 將用戶定義函數添加到單元格。 [成功評估結果]
- 打開產品的另一個Excel模板。 [例如:Excel模板2]
- 將用戶定義函數添加到單元格。 [評估結果成功]
- 關閉在步驟1中打開模板[即:Excel模板1)]
- 的用戶定義函數添加到其它模板的細胞[即:Excel模板2]
現在我可以注意到添加的函數將不會被評估,並以「#NAME?」錯誤結束。
我已經從Excel的加載項列表中檢查了用戶定義函數。它很活躍。 任何方式我已經在工作簿的ActivateEvent中以編程方式重新安裝加載項,但沒有用。
只有關閉首先打開的模板時,纔會出現此問題。 進一步的問題將不存在保存工作簿。
當我調試時,我發現一個問題。 在我們的產品中,當我們的定製打開時,我們有自己的一組命令條被添加到Excel的上下文菜單中。 以下示例代碼將在單元格的上下文菜單中添加一個命令欄按鈕。
try
{
commandBars = (Office.CommandBars)Application.GetType().InvokeMember("CommandBars", BindingFlags.GetProperty, null, Application, new object[] { });
commandBarSheetMenu = commandBars["Cell"];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
commandBarButtonTest = (Office.CommandBarButton)commandBarSheetMenu.Controls.Add(1, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
commandBarButtonTest.BeginGroup = true;
commandBarButtonTest.Caption = "Test Me";
commandBarButtonTest.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(commandBarButtonSheetCopy_Click);
當我刪除/註釋上述代碼時,即使我關閉了第一個打開的模板,用戶定義函數也開始工作。
與命令欄一起使用時,Excel模板和用戶定義函數是否已知問題?
如果有人能就這個問題提出意見並提出解決方案,那將會很棒。
源文件來重新創建問題被上傳到https://1drv.ms/u/s!AKQQ5XmOgV6CgQE –
任何人都有這個問題的更新? –