javascript - 带有 Javascript 的 Excel 宏

标签 javascript vba excel

我希望使用 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)

这使我能够执行任意 javascript,但是我无法从 javascript 环境中访问 excel 电子表格。有什么方法可以在 javascript 中设置和获取事件工作表中的工作表值?

最佳答案

对于使用 Excel 2016 或更高版本的用户,有一个名为 Funfun 的 Excel 插件在实际上允许您直接在 Excel 中编写和运行 JavaScript 代码的加载项商店中。当然,您的 JavaScript 代码也可以访问存储在电子表格中的数据。这是它在 Excel 中的截图 2016.

enter image description here

在界面中间有一个区域,您可以在其中编写 JavaScript、CSS 和 HTML 代码。它非常像 Excel 内置的 Playground 。但 Funfun 也有一个在线编辑器,您可以在其中测试您的代码。你可以在下面的图片中看到它。我还在第一张图片中发布了示例的链接,这样你就可以玩了。

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

enter image description here

Funfun 在线编辑器的特别之处在于它包含一个类似于 Excel 的“电子表格”。虽然您实际上不能在此处进行任何格式化,但您可以将数据复制到单元格中并直接测试您的代码。

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

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

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

var data = $internal.data;

完成了。你可以去 documentation of Funfu n 如果您想了解更多。

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

enter image description here

enter image description here

披露:我是 Funfun 的开发者

关于javascript - 带有 Javascript 的 Excel 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20171885/

相关文章:

javascript - 输入元素上的 onClick 与 onFocus

javascript - 在 Javascript 中将函数数组映射到数组

vba - 计算Word文档中的表格数量

excel - 如何计算一个单元格中特定单词的总数并使用 VBA 对其他单元格做同样的事情?

python - 用 pandas 在 excel 中给单元格着色

javascript - 页脚后面的 Bootstrap Accordion 下拉菜单

javascript - 仅针对 jquery ui slider 的特定值做一些非凡的事情

vba - 宏 : copy paste cell if condition met

vba - 复制和粘贴无意中触发 Worksheet_Change sub

excel - Excel 数据透视表中的最大值总和