当我打开Excel(手动)时,我收到“我的Personal.xls已被”其他用户“使用的警告。这表明有一个Excel进程正在运行。我在任务管理器上确认了这一点 - Excel确实正在运行。
所以我把一个快速子组合在一起尝试关闭它,这个程序在Set x = GetObject(, "Excel.Application")
上引发了429错误。
Sub QuitExcel()
Dim x As Object
Set x = GetObject(, "Excel.Application")
x.Quit
End Sub
问题:为什么GetObject
方法失败?
Excel似乎正在运行,如任务管理器所示,以及从任务栏打开Excel时显示的警报。
从评论中更新
Jean-Francois建议使用路径名,因为警报表明我的Personal.xls有问题,我使用该路径。不过,我不确定这是否有效。当我这样做时,我仍然在任务栏中看到Excel.EXE图像。
Sub GetExcel()
Dim x As Object
On Error Resume Next
Set x = GetObject(, "Excel.Application")
x.Quit
Exit Sub
If Err Then
Set x = GetObject("C:\Users\david_zemens\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.xls")
End If
On Error GoTo 0
x.Parent.Visible = True
x.Parent.Quit
End Sub
答案 0 :(得分:1)
Personal.xls(或Excel 2007+上的Personal.xlsb)不包含工作表,如果没有进入VBA编辑器,可能无法在Excel中看到。如果您在Excel打开时没有任何您希望持续访问的已保存宏,则可以从%appdata%\ Microsoft \ Excel \ XLSTART 文件夹中删除Personal.xls *文件。否则,终止不可见Excel实例的最快捷最简单的方法是使用shell /命令提示符/ RUN命令。
在VBA中:
Shell "taskkill /f /im Excel.exe"
在运行/命令提示符中:
taskkill /f /im Excel.exe
注意:这将在每个运行的Excel实例上强制关闭 - 包括运行宏的实例。正如其他人暗示的那样,另一个Excel实例可能正试图显示您没有看到的通知/提示。