gpt4 book ai didi

excel - 如何自动强制关闭excel,然后重新启动?

转载 作者:行者123 更新时间:2023-12-02 05:09:49 27 4
gpt4 key购买 nike

在执行一些长时间运行的 VBA 代码(每天 24 小时运行)时,Excel 有时会卡住或崩溃,我正在研究以编程方式处理 Excel 重新启动的方法。任何有关最佳方法的建议将不胜感激。

我的一个想法是编写一个 dotnet 应用程序,它可能会被 Windows 日志记录错误事件(例如“事件名称:APPPCRASH”和“故障应用程序 EXCEL.EXE”)触发,但我不知道是否这是可行/明智的方法。

如果这恰好是一种明智的方法,我会设想该应用程序可能执行以下任务;

1) 自动关闭/取消任何 Windows 错误弹出框,例如“您想发送有关该问题的更多信息吗?”、“Microsoft Excel 已停止工作”或“Microsoft Excel 正在尝试恢复您的信息”。

2) 如果 excel 仍然打开(例如挂起),则强制关闭 excel,并终止任何 excel.exe 进程

3)重新启动Excel

是否可以在 dotnet 中编写这样的应用程序?我应该寻找哪些引用/标签来查找更多信息?

谢谢,于格

最佳答案

经过一番挖掘,我拼凑出了以下解决方案。下面的 vbs 代码将强制任务终止所有未完成的 excel.exe 进程,然后打开指定的 excel 文件(可以通过 worksheet_open 事件自动重新启动 vba 代码)。

1) 关闭 Windows 错误报告:开始,搜索“问题报告和解决方案”,更改设置,高级设置,关闭问题报告

2) 禁用 Excel 自动恢复:在相关的 WB 中,单击;文件、选项、保存、禁用仅适用于此 WB 的文件恢复

3) 在 Windows 事件查看器、应用程序日志下,突出显示错误(Excel 应用程序故障),右键单击“创建基本任务”,运行应用程序/脚本,然后输入在 4) 中选择的文件名称。

4) 将以下代码粘贴到文本文件中并另存为 vbScript 文件 (.vbs)

Option Explicit

KillProcesses
ExcelRestart

Sub ExcelRestart()
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("C:\...\test.xlsx")
xlApp.visible = True
xlBook.activate
Set xlBook = Nothing
Set xlApp = Nothing
End sub

Sub KillProcesses
On error resume next
Dim objWMIService, WshShell
Dim proc, procList
Dim strComputer, strCommand
strCommand = "taskkill /F /IM excel.exe"
strComputer = "."
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:"& "{impersonationLevel=impersonate}!\\"& strComputer & "\root\cimv2")
Set procList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'excel.exe'")
For Each proc In procList
WshShell.run strCommand, 0, TRUE
Next

End sub

关于excel - 如何自动强制关闭excel,然后重新启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18504067/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com