Ich arbeite mit einem Produkt basierend auf Excel-Dokument-Level-Anpassung. Der Projekttyp ist "Excel 2013-Vorlage" in Visual Studio.Excel User Defined Function Probleme mit Excel-Vorlage
Kürzlich habe ich eine benutzerdefinierte Funktion entwickelt, die zur Auswertung unserer eigenen Funktion verwendet wird. Ich habe die benutzerdefinierte Funktion basierend auf dem Artikel https://blogs.msdn.microsoft.com/eric_carter/2004/12/01/writing-user-defined-functions-for-excel-in-net/
entwickelt Die benutzerdefinierte Funktion funktioniert gut mit der Excel-Vorlage unseres Produkts, aber es schlägt für einen Testfall fehl.
- Öffnen Sie eine neue Excel-Vorlage des Produkts. [ex: Excel-Vorlage 1]
- Fügen Sie die benutzerdefinierte Funktion zu einer Zelle hinzu. [Wertet das Ergebnis erfolgreich aus]
- Öffnen Sie eine andere Excel-Vorlage des Produkts. [ex: Excel-Vorlage 2]
- Fügen Sie die benutzerdefinierte Funktion zu einer Zelle hinzu. [Wertet das Ergebnis erfolgreich]
- Schließen Sie die in Schritt geöffnet Vorlage 1. [dh: Excel-Vorlage 1)]
- die User Defined Function In einer Zelle anderer template [dh: Excel-Vorlage 2]
Jetzt kann ich bemerken, dass die hinzugefügte Funktion nicht ausgewertet wird und endet mit "#NAME?" - Fehler.
Ich habe die benutzerdefinierte Funktion aus der Excel-Add-in-Liste überprüft. Es ist aktiv. Irgendwie habe ich das Add-In programmgesteuert in ActivateEvent der Arbeitsmappe, aber keine Verwendung neu installiert.
Dieses Problem tritt nur auf, wenn ich die Vorlage schließe, die zuerst geöffnet wurde. Weitere dieses Problem wird nicht für gespeicherte Arbeitsbücher da sein.
Als ich debuggte, fand ich ein Problem. In unserem Produkt haben wir unsere eigenen Befehlsleisten, die dem Excel-Kontextmenü hinzugefügt werden, wenn unsere Anpassung geöffnet wird. Der folgende Beispielcode fügt dem Kontextmenü der Zelle eine Befehlsleistenschaltfläche hinzu.
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);
Wenn ich die User Defined Function Beginn der Arbeit den obigen Code entfernen/kommentieren, auch wenn ich das zum ersten Mal geöffnet Vorlage zu schließen.
Ist es ein bekanntes Problem mit der Excel-Vorlage und benutzerdefinierten Funktion, wenn es mit Befehlsleisten verwendet wird?
Es wäre großartig, wenn jemand das Problem kommentieren und eine Lösung für dieses Problem vorschlagen könnte.
Quelldateien zu beheben das Problem neu erstellen, um https://1drv.ms/u/s!AKQQ5XmOgV6CgQE hochgeladen –
Hat jemand ein Update für dieses Problem? –