javascript - 从 VBA/JScript 关闭 Excel 工作簿而不使 Excel 崩溃
问题描述
在 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),但这也不起作用。
谢谢!
解决方案
此错误仅在从即时窗口运行命令时发生 - 如果从子程序中运行它不会崩溃。
在意识到这一点之前,我已经测试了很多次。非题,见谅。
推荐阅读
- wordpress - Wordpress - 使用过滤器更改路径
- java - 通用对象的 Mapstruct
- haskell - 为什么字符没有类似于数字的`Char a => a`(`Num a => a`)?
- bash - 如何使用函数返回的数值?
- javascript - 在导航栏中单击时如何更改背景内容?
- javascript - Drawing tiles on canvas has blurry gaps
- amazon-web-services - 是否可以将 S3 接入点用作静态网站?
- typescript - Why wrapping a generic function and awaiting it returns different type opposed to returning the value directly?
- c# - C# - 创建包含破折号的对象的问题
- c++ - 定义变量的C++函数返回问题