C#设置打开的工作簿

我开始用C#创build一个Excel-Add-IN。

我需要做的很简单,我需要设置一个工作簿为一个variables,工作簿已经运行,我试过这个,但没有工作

Excel.Application excel = new Excel.Application(); Excel.Workbook wb = excel.ActiveWorkbook as Excel.Workbook; wb.SaveAs("C:\\Users\\ro_sg\\Desktop\\Pasta1.xlsx"); Excel.Worksheet ws = wb.Worksheets["Plan1"]; Excel.Range range = ws.Range["A1"]; range.Value = "Success"; wb.Save(); 

wbvariables找不到工作簿(得到空),我看不出为什么。

请,如果你有任何人发现错误让我知道。

谢谢!

我相信你的问题是它可能不会从设置工作簿variables的上游find活动的Excel应用程序。 看起来你的代码试图创build一个新的Excel应用程序(没有工作簿),而不是获取已经打开的现有应用程序。

试试这个:

  Excel.Application excel = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); Excel.Workbook wb = (Excel.Workbook)excel.ActiveWorkbook; wb.SaveAs("D:\\WeeeDueceDuece.xlsx"); 

我不知道你是否需要得到一个特定的表,但如果你尝试这样做:
Excel.Worksheet ws = wb.Worksheets [1];
它会得到您的工作簿的第一张

如果您的实际代码没有更多的中间步骤,它将始终失败。 我很惊讶这一行没有错误:

 Excel.Workbook wb = excel.ActiveWorkbook as Excel.Workbook; 

这是因为一个新的Excel实例不一定会创build一个新的工作簿。 您可以使用以下几行来检查:

 Excel.Application application = new Excel.Application(); Excel.Workbooks workbooks = application.Workbooks; Console.WriteLine(workbooks.Count); // "0" 

但是,新的工作簿应创build工作表的默认数量(通常为3,但可编辑)。