VSTO ThisWorkbook属性

我正在开发一个使用Visual Studio Tools for Office,VSTO的MSExcel插件。 无论如何,我几乎完成了,直到我发现并遇到了一个问题。

目前我的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); } 

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

正如你在你的问题中提到的,ActiveWorkbook为你提供了当前已经激活的工作簿。 鉴于名字,没有什么意外的。

如果要将工作表添加到特定工作簿,您显然应该使用固定的工作簿参考。 有几个选项可以使用固定的工作簿参考。 如果你知道这个名字,最简单的就是使用它的名字来获得特定的工作簿。

有很多方法可以参考工作簿,只是Google有点像你这样的例子:

http://www.techrepublic.com/blog/10-things/10-ways-to-reference-excel-workbooks-and-sheets-using-vba/ (它是VBA,但如果你有麻烦移植到C#问一个专门针对您的需求的新问题)