0

所以出于某种目的,我需要在 excel 的最后一列中插入注释。

由于我不希望用户能够看到我插入的评论,因此我尝试隐藏该列。

不知何故,它给了我一个错误“无法将对象移出工作表”

常量.cs

HIDDEN_DATA_COL =  16384; // Which is last column in excel 2007

MyUtil.cs

Excel.Range range = ws.get_Range(ws.Cells[1, Constants.HIDDEN_DATA_COL], ws.Cells[1, Constants.HIDDEN_DATA_COL]);
 range.AddComment(result);
 range.Comment.Shape.Width = 50;
 range.Comment.Shape.Height = 50;
 range.EntireColumn.Hidden = true;

我也做了一些试验:

  • 删除 range.EntireColumn.Hidden ,代码就可以了。
  • 将 HIDDEN_DATA_COL 更改为小于 10 的数字也会使运行时错误消失。

关于如何解决它的任何想法?

4

3 回答 3

2

在工作表的最后一列中“隐藏”注释可能不是解决原始问题的最佳方法

您在代码中遇到了无法将对象移出工作表错误的问题,但即使您设法做到了,您的用户在尝试隐藏或插入任何列时也会遇到它。

以下是 Microsoft 处理此问题的建议:http: //support.microsoft.com/kb/211769


由于这可能是XY 问题的情况,我将建议一些解决方法。

实际上,在您的情况下,您可能会将您的评论隐藏在其他地方,例如在任何隐藏的单元格中,如果您希望用户看不到它,只需保护您的工作表不被隐藏单元格。

如果您不想保护,您可以将您的评论存储在另一个工作表中,并使用 VBA 将其xlVeryHidden property隐藏(用户无法在没有 VBA 的情况下取消隐藏工作表)。

于 2012-05-10T07:31:05.340 回答
1

通过首先选择评论列修复。

 range.AddComment(result);
 range.Comment.Shape.Width = 50;
 range.Comment.Shape.Height = 50;
 range.Columns.Cells.Select();
 range.Columns.EntireColumn.Select();
 range.Columns.EntireColumn.Hidden = true;
于 2012-05-10T09:46:12.310 回答
0

问题不仅在于隐藏列,还在于减小列的宽度,出现相同的错误。修复=获取评论信息,将其发布/粘贴到不同的单元格中以保存。然后删除评论,调整列并为您之前所在的单元格再次创建评论。对所需工作表上的每个评论执行此操作。希望这会有所帮助,享受。大EEE :)

于 2017-10-19T19:31:33.157 回答