那些Excel中的脚本:自定义函数(3)

这一篇,继续探讨一下自定义函数,我们将自己开发一个Add-in,并且实现自定义函数。你可以跟着这篇官方文档(https://learn.microsoft.com/en-us/office/dev/add-ins/excel/custom-functions-overview)的说明进行操作,也可以跟着我下面的截图进行练习。.

那些Excel中的脚本:自定义函数(3)

选择 Excel Custom Functions using a Shared Runtime, 回车

那些Excel中的脚本:自定义函数(3)

选择Typescript,然后回车,再次回车,等待直到看到下面的界面

那些Excel中的脚本:自定义函数(3)

按照提示运行两行命令(cd "My Office Add-in" ,然后 npm start),这个会自动打开Excel进行调试, 然后在下面的单元格分别输入如下的公式。

那些Excel中的脚本:自定义函数(3)

这些函数跟内置函数基本一样工作,当然如果你细心的话,你会发现,它们会在一开始显示 “#BUSY!” 的字样,这是因为这些代码毕竟不是内置的,他们需要通过Excel来调用Add-in中定义的Javascript函数来得到结果。

那些Excel中的脚本:自定义函数(3)

更加有意思的是,第二行和第三行其实会每隔一秒就会刷新一下。这个功能还是很强大的,如果我们要做一个定时刷新的报表,这个功能很有用。我后续将单独用一篇文章来介绍细节。

下面我们回到上面这个自动生成的项目,通过VS Code看一下它的代码,已经相关的清单文件(manifest)。

你可以在manifest.xml文件中找到如下定义

<AllFormFactors>  <ExtensionPoint xsi:type="CustomFunctions">    <Script>      <SourceLocation resid="Functions.Script.Url"/></Script>    <Page>      <SourceLocation resid="Functions.Page.Url"/>    </Page>    <Metadata>      <SourceLocation resid="Functions.Metadata.Url"/>    </Metadata>    <Namespace resid="Functions.Namespace"/>  </ExtensionPoint></AllFormFactors>

以及具体的地址

  <bt:Urls>    <bt:Url id="Functions.Script.Url" DefaultValue="https://localhost:3000/dist/functions.js"/>    <bt:Url id="Functions.Metadata.Url" DefaultValue="https://localhost:3000/dist/functions.json"/>    <bt:Url id="Functions.Page.Url" DefaultValue="https://localhost:3000/taskpane.html"/>    <bt:Url id="GetStarted.LearnMoreUrl" DefaultValue="https://go.microsoft.com/fwlink/?LinkId=276812"/>    <bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000/taskpane.html"/>  </bt:Urls>

这些函数的代码具体在src目录中的functions.ts文件中。

那些Excel中的脚本:自定义函数(3)

请注意,正如你所看到的这样,这个Add-in中其实既有任务面板功能(TaskPane),也有自定义函数功能(Custom Functions),所以你并不需要专门为他们单独建立项目。

如果你没有做到Add-in开发,可能一下子无法理解这些。这种情况下,你应该先从Script Lab开始,另外,我将视情况录制相关课程(但目前没有具体时间计划)。