C# 设置打开的工作簿

C# set opened workbook

我开始使用 C# 创建 Excel-Add-IN。

我需要做的很简单,我需要将一个工作簿设置为一个变量,工作簿已经是运行,我试过了但是没有成功

        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();

wb 变量找不到工作簿(为空),我不明白为什么。

如果您发现错误,请告诉我。

谢谢!

我不知道你是否需要得到一个特定的 Sheet 但如果你试试这个:
Excel.Worksheet ws = wb.Worksheets[1];
它将获得您工作簿的第一个 Sheet

我认为您的问题是在您设置工作簿变量时可能无法在上游找到活动的 Excel 应用程序。您的代码似乎正在尝试创建一个新的 excel 应用程序(没有工作簿),而不是获取打开的现有应用程序。

试一试:

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

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

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

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

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

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