代码之家  ›  专栏  ›  技术社区  ›  Plip

使用vsto读取Excel中的ActiveCell内容

  •  2
  • Plip  · 技术社区  · 15 年前

    我正试图从Excel外接程序中读取ActiveCell,但进展不大。有什么想法吗?

    Excel.Window W = this.Application.ActiveWindow as Excel.Window;
    Excel.Range R = W.ActiveCell as Excel.Range;
    MessageBox.Show(R.Value2.ToString());
    

    在最后一行引发的异常是:

    无法获取字段或调用方法 在类型的实例上 'Microsoft.Office.Interop.Excel.Range' 因为它是远程服务器的代理 对象。

    我试过了。价值,它说:

    属性、索引器或事件“value”为 语言不支持;请尝试 直接调用访问器方法 'microsoft.office.interop.excel.range.get_value(object)' 或 'microsoft.office.interop.excel.range.set_value(对象, 对象)

    在尝试get_value()时,我再次得到初始异常。

    无法获取字段或调用方法 在类型的实例上 'Microsoft.Office.Interop.Excel.Range' 因为它是远程服务器的代理 对象。

    有什么想法吗?

    干杯,

    Phil。

    3 回复  |  直到 14 年前
        1
  •  5
  •   holytshirt    15 年前

    r.text.toString();将从单元格中获取文本

        2
  •  1
  •   mas_oz2k1    15 年前

    不要使用ActiveWindow。修改代码如下 excel.range r=this.application.activecell为excel.range; 如果(r!=空) messagebox.show(r.value2);

    注意:如果用户未在活动工作表中选择单元格,则ActiveCell可以为空。

        3
  •  0
  •   Stuart Davies    15 年前

    这有什么用吗? http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/f21c7cf4-fbfd-4496-a593-781eb751d580

    它建议出于调试目的关闭代理,暗示您看到的错误消息可能掩盖了较低级别的COM错误。

    推荐文章