Vbscript 关闭打开的Excel实例
有人能告诉我以下简单的VBScript是否正确吗? 它应该在其他进程运行(并保持Excel打开)后关闭Excel,但它不起作用Vbscript 关闭打开的Excel实例,vbscript,excel.application,Vbscript,Excel.application,有人能告诉我以下简单的VBScript是否正确吗? 它应该在其他进程运行(并保持Excel打开)后关闭Excel,但它不起作用 Set MyApp = CreateObject("Excel.Application") MyApp.Quit 请试试这个 ThisWorkbook.Saved = True Application.Quit 请试试这个 ThisWorkbook.Saved = True Application.Quit 创建一个COM对象,因此 Set MyApp = Cre
Set MyApp = CreateObject("Excel.Application")
MyApp.Quit
请试试这个
ThisWorkbook.Saved = True
Application.Quit
请试试这个
ThisWorkbook.Saved = True
Application.Quit
创建一个COM对象,因此
Set MyApp = CreateObject("Excel.Application")
启动新的Excel进程。用于“检索具有指定ProgID的现有对象”。有关理论和实践,请参见。创建一个COM对象,因此
Set MyApp = CreateObject("Excel.Application")
启动新的Excel进程。用于“检索具有指定ProgID的现有对象”。有关理论和实践,请参见。
CreateObject
创建新对象。如果我正确理解您的问题,您希望附加到已经运行(孤立)的Excel进程以终止它们。您可以使用GetObject
:
On Error Resume Next
Do
Set xl = GetObject(, "Excel.Application")
status = Err.Number
If status = 0 Then
For Each wb in xl.Workbooks
wb.Close False 'discard changes in open workbooks
Next
xl.Quit
ElseIf status <> 429 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit 1
End If
Until status = 429
On Error Goto 0
CreateObject
创建一个新对象。如果我正确理解您的问题,您希望附加到已经运行(孤立)的Excel进程以终止它们。您可以使用GetObject
:
On Error Resume Next
Do
Set xl = GetObject(, "Excel.Application")
status = Err.Number
If status = 0 Then
For Each wb in xl.Workbooks
wb.Close False 'discard changes in open workbooks
Next
xl.Quit
ElseIf status <> 429 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit 1
End If
Until status = 429
On Error Goto 0
不起作用?您是否收到错误或它没有按预期运行?只是没有做任何事情。。。。没有显示错误。所以您双击了
.VBS
文件?出于故障排除的目的,我通常将以下代码放在外部:MsgBox“Start”
然后MsgBox“Complete”
,这至少告诉我脚本已运行。如果在设置Myapp
之后还添加MsgBox Myapp.Name
,它也会告诉您一些事情。但真正的问题是,您使用的是CreateObject
,它只是实例化一个新的excel。添加此页面的底部,您将发现一些代码的示例,这些代码在每个进程中进行迭代并显示出来。您应该能够修改脚本以仅查找Excel进程,并添加更多代码以获取和关闭它们(或杀死它们)。但是,您应该真正找到留下孤立excel进程的错误代码,并修复它,感谢您的回复。我有一个运行VBScript的批处理文件,但它在关闭该文件后不会关闭Excel。不工作?您是否收到错误或它没有按预期运行?只是没有做任何事情。。。。没有显示错误。所以您双击了.VBS
文件?出于故障排除的目的,我通常将以下代码放在外部:MsgBox“Start”
然后MsgBox“Complete”
,这至少告诉我脚本已运行。如果在设置Myapp
之后还添加MsgBox Myapp.Name
,它也会告诉您一些事情。但真正的问题是,您使用的是CreateObject
,它只是实例化一个新的excel。添加此页面的底部,您将发现一些代码的示例,这些代码在每个进程中进行迭代并显示出来。您应该能够修改脚本以仅查找Excel进程,并添加更多代码以获取和关闭它们(或杀死它们)。但是,您应该真正找到留下孤立excel进程的错误代码,并修复它,感谢您的回复。我有一个运行VBScript的批处理文件,但它在关闭该文件后不会关闭Excel。