我使用 Windows 任务计划程序在 MS Excel 崩溃时重新启动它,通过运行 vbs 脚本的事件触发器(https://stackoverflow.com/questions/18504067/how-to-automate-the-forced-closure-of-excel-followed-by-a-restart/18654283#18654283)。
当触发事件发生时,excel 和我长时间运行的宏都可以成功重新启动。但是,我遇到的问题是 excel 在后台启动。
当我远程登录到机器(作为管理员)时,excel gui 不见了。在任务管理器下可以看到 excel.exe 正在运行(我的宏也是如此,因为报告文件仍在继续写入)。
如果我手动运行 vbs 脚本(即登录后双击),那么 excel 就会在前台启动。
我已将任务计划程序设置为以管理员身份运行任务,并且无论用户是否登录都会运行。是否还有其他我应该注意的设置与从计划任务在前台启动 Excel 有关?
我正在使用 Windows Server 2008R2 和 Excel 2010。
谢谢,Yug
补充:要清楚,行为上的区别似乎在于脚本是由任务管理器运行还是手动运行(我是否远程登录并不重要。当任务管理器运行脚本时,它会以隐藏状态启动 Excel)。
答案1
当 Excel 从任务计划程序运行时,它始终隐藏为一个进程,因为它是从服务中运行的,而当您手动运行它时,它就不会被隐藏。
我以前遇到过类似的问题,我解决这个问题的方法是创建一个批处理文件。我让任务计划程序运行批处理文件,然后让批处理文件运行 Excel/脚本/宏。这样 Excel 就可以像您手动打开一样打开。
如果您不熟悉批处理文件,只需谷歌搜索“.bat 批处理如何创建”,就会有大量相关信息供您参考。
相比之下,使用您的“问题”是自动生成报告并让其在后台运行而不是自行显示的好方法,这在其他情况下会很有帮助。
希望这可以帮助!
答案2
在 Excel VBA 中,在长时间运行的宏的开头插入此命令:
应用程序.可见=True
这会使 Excel 工作簿可见。如果 Excel 已经可见,则不会受到影响。
答案3
我发现任务的运行方式存在很大差异。
- 什么时候无论用户是否登录都运行被选择时,任务在后台运行。
- 什么时候仅在用户登录时运行被选择时,任务在前台运行。
我知道这限制了进程,但也许这个选项错过预定的启动时间后尽快运行任务可以解决局限性。