【问题标题】:How to reload Excel custom functions?如何重新加载 Excel 自定义函数?
【发布时间】:2018-05-03 17:49:03
【问题描述】:

我已经成功部署了Excel-Custom-Functions示例,可以使用新的JS函数了。

更改customfunctions.js 中的代码/定义后,我重新启动了我的网络服务器,启动了 Excel,再次从 Office 加载项页面插入了自定义函数,但仍然获得了原始函数。

如果我在不重新插入示例的情况下启动 Excel,这些功能仍然是已知的!?

如何强制 Excel 删除此类加载项并从头开始重新加载?

示例: 该示例包含几个自定义函数及其对应的注册:

Excel.Script.CustomFunctions["CONTOSO"]["ADD42"] = {
...
Excel.Script.CustomFunctions["CONTOSO"]["GETTEMPERATURE"] = {
...

重命名一个函数,并完全删除另一个函数:

Excel.Script.CustomFunctions["CONTOSO"]["ADD42RENAMED"] = {
...
/* Excel.Script.CustomFunctions["CONTOSO"]["GETTEMPERATURE"] = {
...

Excel 之后仍会显示旧的元数据。

【问题讨论】:

  • 请提供您目前获得的代码,并说明您到目前为止所做的尝试。

标签: excel office-js custom-functions-excel


【解决方案1】:

Excel 会为每个加载项缓存以前注册的函数。缓存的原因是,即使在加载项加载之前,用户也可以查看和触发函数(导致加载项自动加载)。

当您运行以下代码时,缓存中所有以前注册的函数都将被删除并立即替换为您指定的新函数:

Excel.run(function (context) {        
    context.workbook.customFunctions.addAll();
    return context.sync().then(function(){});
}).catch(function(error){});

编辑:如果您在调用上述代码后仍然看到您认为不应该注册的函数,则可能有两种可能性:

  1. “不正确”的函数实际上是由不同的插件注册的(可能是您之前进行的测试)。
  2. Excel.run 调用失败(您可以检查error 参数以查看这是否是您的问题)

手动清除计算机的注册缓存可能很有用:删除文件夹 AppData\Local\Microsoft\Office\16.0\Wef\CustomFunctions

-Michael,插件产品经理

【讨论】:

  • 您提出的代码 sn-p 已经是示例的一部分。看起来这不可靠。还是在特定的 Excel 版本中修复了此行为?我使用的是 1711 版(内部版本 8711.2037),32 位。
  • 我在回答中添加了一些附加信息
  • @MichaelSaunders 这仍然有效吗?我使用 ExcelApi 1.1 找不到这个 api
猜你喜欢
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多