我希望使用 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.
在界面中间有一个区域,您可以在其中编写 JavaScript、CSS 和 HTML 代码。它非常像 Excel 内置的 Playground 。但 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;
完成了。你可以去 documentation of Funfu n 如果您想了解更多。
如果您对在在线编辑器中获得的结果感到满意,您可以使用上面的 URL 轻松地将结果加载到 Excel 中。当然,您首先需要从插入 - 我的加载项 中插入 Funfun 加载项。以下是一些屏幕截图,展示了如何执行此操作。
披露:我是 Funfun 的开发者
关于javascript - 带有 Javascript 的 Excel 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20171885/