使用Javascript的Excel宏

Mat*_*loy 6 javascript excel vba excel-vba

我希望在Javascript中使用宏而不是默认的VBA来操纵excel电子表格.我可以使用以下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)
Run Code Online (Sandbox Code Playgroud)

这使我能够执行任意javascript,但是我无法从javascript环境中访问excel电子表格.有什么办法可以在javascript中设置并获取活动工作表中的工作表值吗?

Chu*_*Qin 7

对于使用Excel 2016或更高版本的用户,加载项存储中有一个名为Funfun的Excel加载项,实际上允许您直接在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"
}
Run Code Online (Sandbox Code Playgroud)

在JavaScript代码中,一个名为$ internal的对象用于读取数据.因此,为了读取存储在A2:B9中的数据,您需要编写

var data = $internal.data;
Run Code Online (Sandbox Code Playgroud)

它完成了.如果您想了解更多信息,可以访问Funfu n 的文档.

如果您对在线编辑器中获得的结果感到满意,可以使用上面的URL轻松地将结果加载到Excel中.首先,您需要从插入 - 我的加载项插入 Funfun加载项.以下是一些截图,展示了如何做到这一点.

在此输入图像描述

在此输入图像描述

披露:我是Funfun的开发者


ric*_*ent 5

这取决于您想要进行哪种“Excel 编程”。

如果您想要操作 Excel文件,您可以使用在 Windows 脚本环境下运行的 JavaScript,通过 COM 自动化,甚至在某种程度上 ODBC 来实现。

但是,如果您想让代码在活动的 Excel 会话中运行,执行访问者将看到的操作,那么您的选择就更少了。

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

如何在 Excel 宏中使用 JavaScript?


小智 5

当然,现在在Excel 2013中,您拥有JavaScript API(http://zoom.it/UAzs#full),并且可以使用任务窗格和内容APPS与电子表格进行交互.