如何通过VBA从javascript计算vbscript表达式

如何通过VBA从javascript计算vbscript表达式,javascript,excel,vba,vbscript,Javascript,Excel,Vba,Vbscript,最新的MS Office更新已禁用我在Excel VBA中用于计算表达式的vbscript。我发现这比过去的VBA“Evaluate”函数要快得多,所以希望避免这样做 Javascript仍然有效,所以我正在尝试迁移到这一点。但是,我们的一些更复杂的表达式,使用幂或平方根,如果不重新编写表达式以使用Math.Pow()等,则无法工作 所以我的问题是,我是否可以运行一个javascript来计算vbscript表达式 我目前正在做的工作示例如下: Sub TestVBScript() Dim ob

最新的MS Office更新已禁用我在Excel VBA中用于计算表达式的vbscript。我发现这比过去的VBA“Evaluate”函数要快得多,所以希望避免这样做

Javascript仍然有效,所以我正在尝试迁移到这一点。但是,我们的一些更复杂的表达式,使用幂或平方根,如果不重新编写表达式以使用Math.Pow()等,则无法工作

所以我的问题是,我是否可以运行一个javascript来计算vbscript表达式

我目前正在做的工作示例如下:

Sub TestVBScript()
Dim objscript As New ScriptControl
Dim var As Variant
Dim str As String
objscript.Language = "vbscript"
str = "2+2"
var = objscript.Eval(str)
MsgBox str & " = " & var
End Sub
我想要的是使用javascript计算vbscript表达式,从而绕过MS Office bug

以下是有关MS Office更新问题的信息,以防有人感兴趣。我认为这对很多人来说可能是个大问题:

谢谢你的帮助

试试这个解决方案:

子测试()
MsgBox评估(“1+2+3^4”)
端接头
函数Eval(作为字符串)
作为对象的静态oDoc
如果奥多克什么都不是
设置oDoc=CreateObject(“htmlfile”)
oDoc.parentWindow.execScript“函数EvalExpr(s):EvalExpr=Eval(s):结束函数”,“vbscript”
如果结束
Eval=oDoc.parentWindow.EvalExpr
端函数

我认为不鼓励以这种方式使用Eval/script控件。没有表现和危险。看看我能不能在上面找到什么……链接中的部分。这一点我不是专家。这正是我所读到的。+1根据QHarr的话,^你应该避免像瘟疫一样的
eval
。然而,还有一个内置的
应用程序.Evaluate()
方法,但我甚至为给你这个建议感到有些遗憾。javascript的第一条规则之一是,无论你想用eval做什么,都可以不用eval来实现,负面影响更少,而我不想从这些评论中拿走任何东西,使用
新的ScriptControl
,然后使用
eval
比只使用
VBA.eval
(或者JS中的
Eval
ScriptControl.Eval
有它自己的作用域。如果我得到一个文本框并将其中的所有内容传递给该函数,我可能仍然能够做坏事,但这会更难。谢谢。Eval(脚本)比application.evaluate快10倍以上,这就是我为什么要这样做的原因。“脚本”始终是一个简单的表达式,如(1+2+3^4),因此我实际上没有运行复杂的脚本,只是将其用作计算表达式的方法。还有其他想法吗?