使自定义函数与其源文件保持一致

Keep custom functions aligned with their source files

this link中表示

During development and testing, you can manually clear your computer's cache of registration metadata by deleting the folder <user>\AppData\Local\Microsoft\Office.0\Wef\CustomFunctio‌​ns.

我再做一个测试如下:

  1. 我在工作簿中加载了指向服务器中原始 customfunctions.jsmanifest.xml。关闭工作簿后,自动保存一个文件到...\Wef\CustomFunctio‌​ns\V1.

  2. 我在服务器中手动修改 customfunctions.js,将 Excel.Script.CustomFunctions["CONTOSO"]["ADD42"] 替换为 Excel.Script.CustomFunctions["CONTOSO"]["ADD42NEW"]

  3. 我打开一个新的工作簿,在一个单元格中,输入 =contoso. 后,IntelliSense 显示 contoso.add42 而不是 add42new。输入 =contoso.add42(5;4) 后,单元格显示 #GETTING_DATA 而不是 return 值。这是可以理解的,因为它适用于一个不再存在的函数。

  4. 如果我们单击另一个单元格并输入例如 =2+3,我们会看到工作簿已刷新,并且 #GETTING_DATA 变为 #NAME?。现在 IntelliSense 显示 contoso.add42new 而不是 contoso.add42.

综上所述,我认为可能存在一个错误:当我们打开工作簿时,IntelliSense 应该给出当前 customfunctions.js.

中定义的自定义函数的更新列表

实际上,理想的是工作簿中的自定义函数始终与customfunctions.js中定义的内容保持一致。如果没有这个错误,今天我们仍然需要关闭一个工作簿并重新打开一个来更新。有谁知道是否有一种解决方法可以使打开的工作簿中的自定义函数保持动态更新?是否有刷新触发器允许我们在打开的工作簿更新中从当前 customfunctions.js?

创建自定义函数

感谢提问!正如您所发现的,自定义函数定义目前仅按需更新,而不是在每个文档打开事件上更新。

我们收到了这方面的大量反馈,因此我们正在考虑对注册的工作方式进行一些更改,以便 IntelliSense/autocomplete 中的函数列表在会话开始时得到更新,而不是在中间。

我现在没有详细信息可以分享,但请留意几个月后这里的一些变化。