2012-08-30 154 views
1

我在VSTO的功能區中有一個自定義選項卡。第一次打開Excel表時,默認選項卡是「Home」。我希望我的自定義選項卡在打開我的Excel表單時作爲默認打開。請告訴我如何完成此操作。自定義選項卡默認

+1

請檢查以下答案:http://stackoverflow.com/a/9167092/114519,適用於Office 2010。 – Mathias

回答

0

您必須使用計時器來完成此任務,因爲功能區異步加載並且沒有StartupTab屬性。

如果您使用的是Excel 2007,則必須通過功能區的IAccessible屬性訪問功能區,這在我對問題Select VSTO Custom Ribbon in Excel的回答中描述。

System.Timers.Timer tmr { get; set; } 

private void Ribbon1_Load(object sender, RibbonUIEventArgs e) 
{ 
    tmr = new System.Timers.Timer(500) 
    { 
     Enabled = true 
    }; 
    tmr.Elapsed += new System.Timers.ElapsedEventHandler(RibbonActivateTimer); 
} 

private void RibbonActivateTimer(object source, System.Timers.ElapsedEventArgs e) 
{ 
    var tab = this.Tabs.SingleOrDefault(c => ((RibbonTab)c).Label == "YourStartupTab"); 
    if (tab != null) // check to see if ribbon tab contains the ribbon deal 
    { 
     if (double.Parse(Globals.ThisWorkbook.Application.Version) >= 14) //14 = xl2010 
     { 
      this.RibbonUI.ActivateTab(tab.ControlId.CustomId); 
      DeRegisterTimer(); 
     } 
    } 
} 

private void DeRegisterTimer() 
{ 
    tmr.Dispose(); 
} 
1

我有同樣的問題,看到這一直沒有答案。我使用VSTO在Excel 2013年這很容易通過在自定義功能區類的Load事件處理程序添加類似下面的代碼(Microsoft.Office.Tools.Ribbon.RibbonBase的子類)來完成:

private void YourCustomRibbon_Load(object sender, RibbonUIEventArgs e) 
{ 
    RibbonUI.ActivateTab("yourCustomTabName"); 
} 

「yourCustomTabName」是自定義RibbonTab對象的ControlId。可以在RibbonTab設計器中打開功能區選項卡時在ControlId屬性中找到它 - 只需在(名稱)屬性下。