这确实很奇怪,因为它实际上取决于您对“应用程序脚本”的含义以及“专有”的含义。在 VBA 的情况下,实际上有一系列的 DLL 在访问 office 的基础上。事实上,这些 DLL 有一整套 .NET 包装器,因此目前几乎所有的 VBA 自动化都可以通过 .NET 完成。现在,鉴于 .NET 包装器可以通过 PowerShell、IronRuby、IronPython 甚至 IronJS 等其他语言访问,您可以使用最现代的脚本语言编写 MS Office 应用程序。在 SketchUp 的情况下,有一个 SDK,它实际上是一个 C API(SketchUp SDK)。他们自豪地宣传“你可以在 UI 中做的任何事情都可以用 Ruby 做”。他们很可能使用包裹在 C API 周围的 Ruby,所以如果您想使用 C API,您可以直接下拉到它或包裹其他东西。然而,潜在的问题有点复杂。大多数现代“网络应用程序”都有某种形式的 API,但它们总是会受到制造它们的提供者的限制。对于 Web 应用程序,大多数 API 实际上只是 Web 服务调用,基本上可以以您选择的任何语言进行自动化。但是在“已安装的应用程序”的前面,您通常会受到应用程序作者的摆布。
我们在我的工作中使用了一个名为 PIProcessBook 的应用程序,其中 PI 是我们用来存储历史 SCADA 数据的系统。在 PIProcessBook 中,有很多 VBA 底层运行的流程,它允许自动化很多东西。我会说在那种情况下,VBA 不是专有的。