2016-06-28 34 views
0

我正在使用基於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模板正常工作,但對於一個測試用例失敗。

  1. 打開產品的新Excel模板。 [例如:Excel模板1]
  2. 將用戶定義函數添加到單元格。 [成功評估結果]
  3. 打開產品的另一個Excel模板。 [例如:Excel模板2]
  4. 將用戶定義函數添加到單元格。 [評估結果成功]
  5. 關閉在步驟1中打開模板[即:Excel模板1)]
  6. 的用戶定義函數添加到其它模板的細胞[即: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模板和用戶定義函數是否已知問題?

如果有人能就這個問題提出意見並提出解決方案,那將會很棒。

+0

源文件來重新創建問題被上傳到https://1drv.ms/u/s!AKQQ5XmOgV6CgQE –

+0

任何人都有這個問題的更新? –

回答

0

即使沒有命令欄,我也可以重新創建此問題。 上述測試案例存在同樣的問題,如果我以編程方式將用戶定義函數設置爲任何Excel單元格。

通過遵循上述測試案例,我創建了兩個可用於重現問題的演示解決方案。 這些演示解決方案是

  1. 通過按下按鈕以編程方式將用戶定義的功能設置爲選定的單元格。
  2. 工作簿模板自定義自定義命令欄

ŸOU可以從https://1drv.ms/u/s!AKQQ5XmOgV6CgQE

下載源文件我已經包括自述分開這些解決方案與指示和步驟重新裏面文件 - 創建問題。

這將是巨大的,如果在這方面的一些專家能給我一個解決方案來解決這個問題

+0

任何人都有關於此問題的更新? –