如何在 C# 中从 Excel 单元格中检索注释对象

问题描述 投票:0回答:1

我一直使用

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
行,不会检索任何内容。

所以我的问题是:有什么改变吗?
互联网上到处都是帖子说这是在单元格中检索评论的正确方法,是否有某种更新?

c# excel vsto office-addins ribbonx
1个回答
0
投票

互联网上到处都是帖子说这是在单元格中检索评论的正确方法,是否有某种更新?

即使这是添加评论的正确方法,您也会在功能区回调中获得

Range.Comment
属性值,这可能会导致不可预知的结果:

ActiveSheet

这可能导致用于在代码中添加注释的错误工作表。活动工作表不一定是导致调用回调的工作表。

IRibbonControl.Context 属性表示包含触发回调过程的功能区用户界面的活动窗口。如果您尝试使用作为参数传递给功能区回调的对象的此属性,您将始终处理正确的 Excel 工作表。

© www.soinside.com 2019 - 2024. All rights reserved.