我一直使用
Range.Comment
和 Range.SpecialCells
来检索 Excel 工作表中的评论,但它似乎不再起作用了。Range.Comment
所以我设置了一个可重现的案例来检查它是否有效:
按照 Microsoft 演练 说明使用 XML 功能区创建新的 VSTO 加载项
(我使用了 .NET Framework 4.7.2 和 4.8)
用这段代码替换
tabs
的MyRibbon.xml
元素:
<tabs>
<tab id="MyAddinTab" label="MyAddin">
<group id="Stuff" label="Content">
<button id="MyButton" label="Do stuff" onAction="DoStuff" size="large" imageMso="FileServerMenu"/>
</group>
</tab>
</tabs>
在
MyRibbon.cs
回调部分添加如下代码:
public void DoStuff(Office.IRibbonControl control)
{
Worksheet worksheet = (Worksheet)Globals.ThisAddIn.Application.ActiveSheet;
Range range = worksheet.get_Range("A1", Type.Missing);
Comment comment = range.Comment;
int debugBreakpoint = 0; // Put a breakpoint here
}
在
MyRibbon.cs
声明处设置断点
按F5启动加载项,打开一个新的工作簿
右键单击单元格 A1 并添加评论
在功能区中找到加载项,单击按钮
当你检查
int
变量时,它是comment
,尽管里面有注释。null
的函数现在没有被测试和工作过。Range.SpecialCells
行,不会检索任何内容。
所以我的问题是:有什么改变吗?
互联网上到处都是帖子说这是在单元格中检索评论的正确方法,是否有某种更新?
互联网上到处都是帖子说这是在单元格中检索评论的正确方法,是否有某种更新?
即使这是添加评论的正确方法,您也会在功能区回调中获得
Range.Comment
属性值,这可能会导致不可预知的结果:
ActiveSheet
这可能导致用于在代码中添加注释的错误工作表。活动工作表不一定是导致调用回调的工作表。
IRibbonControl.Context 属性表示包含触发回调过程的功能区用户界面的活动窗口。如果您尝试使用作为参数传递给功能区回调的对象的此属性,您将始终处理正确的 Excel 工作表。