【发布时间】:2019-07-28 08:29:28
【问题描述】:
在 VBA 中,我有一个 JScript 语言 (Javascript ES3) 的全局脚本控制变量。我将 var "ThisWorkbook" 设置为
var ThisWorkbook = GetObject('', 'Excel.Application').Workbooks('" + ThisWorkbook.Name + "')
然后我可以通过说关闭工作簿
ThisWorkbook.Close(false)
用于完成的完整 VBA 代码:
Sub Test
Dim ScriptC as Object
Set ScriptC = CreateObject("ScriptControl"): ScriptC.Language = "JScript"
ScriptC.Eval "var ThisWorkbook = GetObject('', 'Excel.Application').Workbooks('" + ThisWorkbook.Name + "')"
ScriptC.Eval "ThisWorkbook.Close(false)"
End Sub
但是,这会使我的 Excel 和所有打开的工作簿 (Excel 2016) 崩溃 - 避免这种情况的好方法是什么?我必须从 JScript/Javascript 执行此操作,但例如可以通过 WScript 变量执行此操作(只要它是从 JScript 中调用的)。原因是它是由在 JScript 而不是在 VBA 中评估的事件触发的(在这种情况下,VBA 只是包装器)。
我尝试过“ThisWorkbook.Application.Quit”(根据https://docs.microsoft.com/en-us/office/vba/api/excel.application.quit),但这也不起作用。
谢谢!
【问题讨论】:
-
可能是因为您使用了关键字。将
ThisWorkBook更改为任何其他单词MyWorkBook或其他东西。 -
@Mikku - 变量的名称没有区别(我尝试将其设置为 TWB)
-
好的,你还可以做一件事,避免使用括号
ThisWorkBook.Close False
标签: javascript excel vba jscript