2012-09-20 10 views
7

In Excel 2007, è sufficiente fare clic con il pulsante destro del mouse sulla barra multifunzione e selezionare Riduci a icona la barra multifunzione &.Excel 2007 Riduci a livello di codice la barra multifunzione ma non la barra dei menu

ho cercato

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

che nasconde l'intera ribbonbut Non voglio nascondere tutto il nastro.

Ho anche provato

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

ma non è affidabile in quanto a volte non funziona correttamente.

enter image description here

Esiste un modo per farlo utilizzando C# codice di VSTO?

Ho letto molto sulla funzione toggleribbon() ma non ho trovato il modo di usarlo.

MODIFICA: C'è un modo in cui è possibile trovare effettivamente se il nastro è già ridotto a icona. i utilizzata

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 Grande domanda, se è di aiuto l'equivalente in MS Access è 'DoCmd.ShowToolbar" Ribbon ", acToolbarNo' – JMK

risposta

1

SendKeysCTRL + F1 opere, ma sembra essere un problema di temporizzazione con la sua esecuzione. Il vero problema è che non si sa quando la barra multifunzione viene effettivamente caricata in Excel per attivare il comportamento.

Questo codice sembrava funzionare in modo affidabile per me, ma in realtà dipende dalla velocità con cui vengono caricati i componenti aggiuntivi. È anche possibile utilizzare Thread.Sleep() se necessario.

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

Puoi scoprire se il nastro è ridotto a icona o non usare la proprietà height. Iterate su commandbars e controllate 'name ==" Ribbon "' Ho aggiunto un codice per verificare se il ribbon è minimizzato o ingrandito. –

Problemi correlati