C# 如何将新创建的Excel工作簿作为活动工作簿打开

C# 如何将新创建的Excel工作簿作为活动工作簿打开,c#,excel,vsto,excel-automation,C#,Excel,Vsto,Excel Automation,我在Excel中开发了一个加载项。此加载项有一个包含按钮的功能区。单击此按钮时,我将根据基于用户凭据从数据库检索的xml字符串创建一个新的工作手册和工作表。 我可以将工作簿与工作表一起创建,但是,此工作手册不会显示为用户的主要工作手册 我想说的是:当加载项单击excel工作手册时,生成的工作手册将变为活动的,旧的excel工作手册将可视化,因此用户的注意力现在集中在创建的工作表上,而不必搜索创建的工作手册 以下是我使用的代码,但它似乎不起作用: Ps:Iam使用Excel 2013和VS 201

我在Excel中开发了一个加载项。此加载项有一个包含按钮的功能区。单击此按钮时,我将根据基于用户凭据从数据库检索的xml字符串创建一个新的工作手册和工作表。 我可以将工作簿与工作表一起创建,但是,此工作手册不会显示为用户的主要工作手册

我想说的是:当加载项单击excel工作手册时,生成的工作手册将变为活动的,旧的excel工作手册将可视化,因此用户的注意力现在集中在创建的工作表上,而不必搜索创建的工作手册

以下是我使用的代码,但它似乎不起作用: Ps:Iam使用Excel 2013和VS 2013以及C

var excel = Globals.ThisAddIn.Application; 
Microsoft.Office.Interop.Excel.Workbook newWorkBook = null; 
newWorkBook = Globals.ThisAddIn.Application.Workbooks.Add(); 
#region BringGeneratedWorkBookToFront 
string newWorkBookName = newWorkBook.Name; 
foreach (Workbook wb in excel.Workbooks){ 
   if (wb.Name == newWorkBookName) { 
      wb.Activate(); 
      break; 
   } 
}
#endregion 

以下是您的简化代码:


在您的代码中,您正在遍历所有工作簿并激活每个工作簿。您应该发布创建工作簿和单击事件句柄的代码HI,Iam基于名称检查工作簿,并且只有在名称匹配时,我才执行激活。以下代码为:var excel=Globals.ThisAddIn.Application;Microsoft.Office.Interop.Excel.Workbook newWorkBook=null;新建工作簿=Globals.ThisAddIn.Application.Workbooks.Add;区域将GeneratedWorkBookToFront字符串newWorkBookName=newWorkBook.Name;excel.Workbooks{如果wb.Name==newWorkBookName{wb.Activate;break;}}endregionHi中的每个工作簿wb,使用此代码不会将新创建的excel放在前面。调用addin的excel工作手册仍在关注中,我想实现的是新创建的excel工作手册focus@Anand,您使用的是应用程序级加载项还是文档级加载项?另外,如何将工作簿可见性设置为true,如:newWorkBook.Windows[1]。Visible=true;
Excel.Workbook newWorkBook =Globals.ThisAddIn.Application.Workbooks.Add();
newWorkBook.Activate();