我目前正在使用Visual Studio Tools for Office,VSTO为MSExcel开发一个Addin。无论如何,我差不多完成它,直到我找到并遇到问题。
目前我的C#代码使用ActiveWorkbook属性。但我发现当另一个Excel实例打开并且该特定实例获得焦点时,我的代码将在该活动工作簿上运行。
请参阅下面的代码:
public void AddWorkSheet(string wsName, Excel.XlSheetVisibility visibility)
{
Excel.Workbook currentWorkBook =Globals.ThisAddIn.Application.ActiveWorkbook;
if (!IsSheetExists(wsName, currentWorkBook))
{
Excel.Worksheet newWorkSheet;
newWorkSheet = currentWorkBook.Sheets.Add();
newWorkSheet.Visible = visibility;
newWorkSheet.Name = wsName;
Marshal.ReleaseComObject(newWorkSheet);
}
Marshal.ReleaseComObject(currentWorkBook);
}
我想知道的是如何将工作簿设置为特定的工作簿,无论它是否处于活动状态。
答案 0 :(得分:-1)
正如您在问题中提到的,ActiveWorkbook为您提供了当前处于活动状态的工作簿。鉴于名称,没有任何意外的。
如果要向特定工作簿添加工作表,显然应该使用固定工作簿参考。有几个选项可以使用固定的工作簿参考。如果您知道名称,最简单的方法是使用其名称来获取该特定工作簿。
有很多方法可以引用工作簿,只需要Google一点,你可以得到这样的例子:
http://www.techrepublic.com/blog/10-things/10-ways-to-reference-excel-workbooks-and-sheets-using-vba/(它是VBA,但是如果您无法将其移植到C#,请根据您的需求提出新问题)