VSTO ThisWorkbook Property

时间:2016-11-18 15:13:16

标签: excel vsto

我目前正在使用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);
    }

我想知道的是如何将工作簿设置为特定的工作簿,无论它是否处于活动状态。

1 个答案:

答案 0 :(得分:-1)

正如您在问题中提到的,ActiveWorkbook为您提供了当前处于活动状态的工作簿。鉴于名称,没有任何意外的。

如果要向特定工作簿添加工作表,显然应该使用固定工作簿参考。有几个选项可以使用固定的工作簿参考。如果您知道名称,最简单的方法是使用其名称来获取该特定工作簿。

有很多方法可以引用工作簿,只需要Google一点,你可以得到这样的例子:

http://www.techrepublic.com/blog/10-things/10-ways-to-reference-excel-workbooks-and-sheets-using-vba/(它是VBA,但是如果您无法将其移植到C#,请根据您的需求提出新问题)