无法从定义的名称

时间:2017-01-03 00:19:18

标签: excel office-js

Excel 2016(Office 365)32位,16.0.6965.2115,Visual Studio 14.0.25425.01更新3 我很确定下面的陈述曾经有效,但现在它不再起作用了:

var range = ctx.workbook.names.getItem("Countries").getRange();

我收到一条错误消息,指出不支持getRange方法,但应该按照文档here支持它。
我做错了什么?

---编辑:这是我使用---

的代码
function paintRange() {
    Excel.run(function (ctx) {
        var range = ctx.workbook.names.getItem("Countries").getRange();
        range.format.fill = "green";

        return ctx.sync();
    }).catch(function (error) {
        app.showNotification("Error", error);
    })
}

paintRange附加到按钮上。有一个名为Countries的全局范围定义名称。 除了我提到的错误之外,我还没有更多关于错误的细节,我也尝试打开快速监视窗口以获得更多线索。

1 个答案:

答案 0 :(得分:2)

更新:问题已通过对CDN的更新来修复。您现在应该可以使用namedItem.getRange()。感谢您报告此问题,并允许我们对其进行快速转换。

=====

菲利普,看起来你是绝对正确的。这绝对是个错误。让我和正确的人谈谈,尽快修复这个回归。我会看看我们是否可以在未来采取一些措施来避免这种情况。

从即时解决方案的角度来看,有两个选择:

  1. 使用BETA CDN(特别是如果它用于开发中的加载项,而不是生产加载项)。该网址为:https://appsforoffice.microsoft.com/lib/beta/hosted/office.js

  2. 暂时填写无意中删除的getRange功能。在Office.initialize内,包含以下代码:

    if (!Excel.NamedItem.prototype.getRange) {
        Excel.NamedItem.prototype.getRange=function () {
            return new Excel.Range(this.context,
                OfficeExtension.ObjectPathFactory.createMethodObjectPath(
                    this.context, this, "GetRange",
                    OfficeExtension.OperationType.Read, [], false, true, null
                )
            );
        };
    }
    
  3. #2中的解决方法即使在功能恢复后也不会造成伤害,但我会建议在我们解决问题后删除此功能。一旦我们修复了底层错误,我就会更新这个帖子,希望在几周之内完成。时间(作为一个非常粗略的估计,等待任何可能延误它的并发症)。

    感谢您引起我们的注意 - 个别错误以及让这个API回归的基础过程都不被注意。