2012-09-20 16 views
7

En excel 2007, podemos simplemente hacer clic con el botón derecho en la cinta y seleccionar 'Minimizar la cinta' & minimizarla.Excel 2007 Minimiza la cinta de forma programática pero no la barra de menú

He tratado

Application.ExecuteExcel4Macro("show.toolbar(\"ribbon\",false)"); 

que oculta toda la ribbonbut no deseo ocultar la cinta entera.

Incluso he intentado

Application.SendKeys("^{F1}", true); 

pero no es fiable ya que a veces no funciona correctamente.

enter image description here

¿Hay alguna manera de hacerlo usando C# código de VSTO?

He leído mucho acerca de la función toggleribbon() pero no he podido encontrar la manera de usarlo.

EDIT: Hay manera de que realmente pueda encontrar si la cinta ya está minimizada. i utilizado

Office.CommandBars cbs = null; 
    cbs = Application.CommandBars; 
    foreach (Office.CommandBar cb in cbs) 
    { 
     if (cb.Name == "Ribbon") 
     { 

     if (cb.Height > 90) 
     { 
      this.Application.ActiveWindow.Activate(); 
      //to get focus on current workbook so that sendkeys will work 
      Application.SendKeys("^{F1}", true); 
      } 

     } 
    } 
+2

+1 Gran pregunta, si sirve de algo, el equivalente en MS Access es 'DoCmd.ShowToolbar" Ribbon ", acToolbarNo' – JMK

Respuesta

1

SendKeysCTRL + F1 obras, pero parece ser un problema de tiempo con su ejecución. El verdadero problema es que no se sabe cuándo la cinta está realmente cargada en Excel para desencadenar el comportamiento.

Este código parece funcionar de manera confiable para mí, pero realmente depende de qué tan rápido se carguen sus complementos. También puede utilizar Thread.Sleep() si es necesario.

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
    Task.Factory.StartNew(() => { 
     //Thread.Sleep(1000); // optional 
     Application.SendKeys("^{F1}"); 
    }, TaskCreationOptions.AttachedToParent); 
} 

See related MSDN forum post regarding Ribbon load timing.

+1

Puede averiguar si la cinta está minimizada o no usando la propiedad height. Itera en las barras de comandos y comprueba si hay 'name ==" Ribbon "' He agregado un código para verificar si la cinta está minimizada o maximizada. –

Cuestiones relacionadas