用Javascript编写Excel宏

12

我希望使用JavaScript宏来操作Excel电子表格,而不是使用默认的VBA。我可以使用以下VBA代码来执行JavaScript代码。

'javascript to execute
Dim b As String
b = "function meaningOfLife(a,b) {return 42;}"

'VBA tool to run it
Dim o As New ScriptControl
o.Language = "JScript"
o.AddCode b
MsgBox o.Run("meaningOfLife", 0, 1)

这使我能够执行任意的Javascript代码,但是我无法在Javascript环境中访问Excel电子表格。有没有办法可以在Javascript内部设置和获取活动工作表中的工作表值?


你能否将Excel对象传递给JavaScript,而不是0和1? - Archimedes Trajano
1
@ArchimedesTrajano,看看ExcelDNA是如何做的,然后将其改编为JS而不是C#。 - Matthew Molloy
为什么你想要这样做呢?VBA环境对于Excel开发来说要好得多。如果只是关于{}和End If的问题,那么你会发现End If实际上更好用... - Tuntable
@Tuntable 我同意,当时我有一些想要执行的 js。总的来说,使用 VBA 更好。 - Matthew Molloy
3个回答

20

对于使用Excel 2016或更高版本的用户,有一个Excel插件称为Funfun可以在Excel中直接编写和运行JavaScript代码。当然,您的JavaScript代码也可以访问电子表格中存储的数据。以下是它在Excel 2016中的外观截图。

图片描述

在界面的中心部分,您可以编写JavaScript、CSS和HTML代码。这基本上像内置在Excel中的游乐场一样。但是Funfun还有一个在线编辑器,您可以在其中测试您的代码。您可以在下面的图片中看到它。我还发布了第一张图片中示例的链接,因此您可以尝试操作。

https://www.funfun.io/1/#/edit/5a4e0d461010eb73fe125c4e

图片描述

Funfun在线编辑器的特殊之处在于,它包含一个像Excel一样的“电子表格”。虽然您无法在此处进行任何格式设置,但可以将数据复制到单元格中并直接测试代码。

要使用存储在电子表格中的数据,您只需要在Funfun的short.io文件中编写一些配置,告诉JavaScript包含您的数据的哪个区域。例如,在我发布的示例中,您只需要编写以下内容:

{
    "data": "=A2:B9"
}

在 JavaScript 代码中,使用名为$internal的对象来读取数据。因此,要读取存储在 A2:B9 中的数据,您需要编写:

var data = $internal.data;

完成了。如果您想了解更多信息,可以前往Funfun文档

如果您对在线编辑器中实现的结果满意,可以使用上面的URL轻松将结果加载到Excel中。当然,首先需要从“插入 - 我的插件”中添加Funfun插件。下面是一些屏幕截图,展示了您如何执行此操作。

输入图片描述

输入图片描述

声明:我是Funfun的开发者


5

这要看你想要进行何种类型的“Excel编程”。

如果你想要操作Excel 文件,可以通过COM自动化甚至是ODBC在Windows脚本环境下运行JavaScript来实现一定程度的操作。

但是如果你想在活动的Excel会话中运行代码并执行访客可见的操作,则选项较少。

参见我几年前发布的这个问题,当时我有一些想要在Excel中运行的JavaScript,并且没有预算转换为VBA:

如何在Excel宏中使用JavaScript?


0
玉石可能是最好的用于操作数据的Excel插件。 JADE FunFun可能是最好的用于分析的插件。 FunFun

Jade Excel JavaScript


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接