在VSTO中获取以前标记的Excel单元格的范围

时间:2018-01-25 09:37:16

标签: c# excel vsto excel-addins

我正在C#中为Excel 2013/2016编写VSTO加载项。

加载项需要以某种方式在Excel工作表中标记特定单元格。 (此标记需要在工作簿关闭后继续存在。)然后,加载项需要在此特定单元格中插入数据。因此,我需要得到这个单元格的位置/范围。

标记细胞的最佳方法是什么?如何获得标记细胞的位置?

是否有比搜索每个单元格更好的解决方案,例如"&?%insertHere" ?

2 个答案:

答案 0 :(得分:2)

您可以在单元格中插入注释。然后循环每张纸的使用范围以寻找评论。

at:ifPresent:ifAbsent:

答案 1 :(得分:2)

标记单元格的一种方法是命名它:

// Name a cell (here: the active cell in the active Excel sheet)
Excel.Range cell = Globals.ThisAddIn.Application.ActiveCell;
cell.Name = "MyMarkedCell";

// Get a cell by its name
Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet;
Excel.Range cell = sheet.get_Range("MyMarkedCell");
// Careful: get_Range throws an Exception, when there is no cell with the given name. 

优点:

  • 对细胞的价值/含量没有影响,因此不是 见于(印刷)文件
  • 可以在Excel应用程序和代码中完成
  • 轻松添加或编辑命名单元格
  • 保存在工作簿文件中并继续关闭
  • 访问命名单元格很快,因为应用程序不会迭代 所有单元格

缺点:

  • 只能使用特定名称命名一个单元格。如果指定了此名称 对于另一个单元格,旧的单元格未命名。所以用户可以很容易 破坏整个程序。