none
Custom Task Pane bleibt unsichtbar in Excel 2013 RRS feed

  • Frage

  • Hallo zusammen,

    ich habe das Problem, dass ein mittels Visual Studio 2013 für Excel 2013 erstelltes Add-In einfach in Excel nicht sichtbar ist. Beim Debuggen wird mir allerdings für das entsprechende CustumTaskPane.Visible "true" angezeigt.

    Aus der Ribbon.cs:

    [ComVisible(true)]
    public class Ribbon1 : Office.IRibbonExtensibility
    {
        private Office.IRibbonUI ribbon;
    
        public Ribbon1(){}
            
        public bool IsSnippetsPressed(IRibbonControl control)
        {
            if (control.Id.Equals("toggleButton99"))
                return Globals.ThisAddIn.CustomTaskPanes[0].Visible;
            else return false;
        }
    
        public void SnippetsToggle(IRibbonControl control, bool value)
        {
            if (control.Id.Equals("toggleButton99"))
                Globals.ThisAddIn.CustomTaskPanes[0].Visible = value;
        }
    
        public void AendereButton(string ButtonID)
        {
            this.ribbon.InvalidateControl(ButtonID);
        }
    
        public void ToggleButtonOnAction(IRibbonControl control, bool pressed)
        {            
            if (control.Id.Equals("toggleButton99"))
                Globals.ThisAddIn.CustomTaskPanes[0].Visible = pressed;         
        }
    
        public System.Drawing.Bitmap holeImage(IRibbonControl control)
        {
            System.Drawing.Bitmap result = null;
            if (control.Id.Equals("toggleButton99"))
                result = ExcelAddIn.Properties.Resources.market;
            return result;
        }
    
        public string GetCustomUI(string ribbonID)
        {
            return GetResourceText("ExcelAddIn.Ribbon1.xml");
        }
    
        public void Ribbon_Load(Office.IRibbonUI ribbonUI)
        {
            this.ribbon = ribbonUI;
        }
    
        private static string GetResourceText(string resourceName)
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            string[] resourceNames = asm.GetManifestResourceNames();
            for (int i = 0; i < resourceNames.Length; ++i)
            {
                if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0)
                {
                    using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i])))
                    {
                        if (resourceReader != null)
                        {
                            return resourceReader.ReadToEnd();
                        }
                    }
                }
            }
            return null;
         }
    }
    

    aus der ThisAddin.cs

    Microsoft.Office.Tools.CustomTaskPane myPane = null;
    Ribbon1 rib = null;
    
        protected override Office.IRibbonExtensibility CreateRibbonExtensibilityObject()
        {    
            rib = new Ribbon1();
            return rib;
        }
    
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            UserControl1 cont = new UserControl1();           
            myPane = this.CustomTaskPanes.Add(cont, "xx");
            myPane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight;
            myPane.VisibleChanged += new EventHandler(myPane_VisibleChanged);
            myPane.Visible = true;
            myPane.Width = 400;
        }
    
        private void myPane_VisibleChanged(object sender, EventArgs e)
        {
            if (sender == myPane)
                rib.AendereButton("toggleButton99");
         }

    und die Ribbon.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
      <ribbon startFromScratch="false">
        <tabs>
          <tab id="xxx"  label="xxx" visible="true">
            <group id="MyGroup12"
                   label="Untersuchen">          
              <toggleButton id="toggleButton99" size="large" getImage="holeImage" label="Recherche"  onAction="ToggleButtonOnAction" getPressed="IsSnippetsPressed"  visible="true" />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>

    Wenn ich das Projekt in VS 2013 kompiliere und ausführe, startet Excel, dabei flackert kurz der Startbildschirm, es erscheint für den Bruchteil einer Sekunde das Taskpane (aber nicht rechts am Rand, sondern mittig) und verschwindet wieder. Dann kann ich den Button aus dem Ribbon so oft drücken wie ich will, das Taskpane bleibt unsichtbar. Allerdings wechselt der Button wie gewünscht mit dem Klicken. Hat jemand einen Tipp?

    Danke vorab.


    • Bearbeitet Ronald Siegel Sonntag, 23. März 2014 08:09 Fehler im Code, ändert aber nichts am Verhalten des Addins
    Samstag, 22. März 2014 23:08

Antworten

Alle Antworten