Excel Application.Quit不会终止EXECL.EXE进程

时间:2016-09-07 19:01:06

标签: excel vbscript

我已经使用Excel的Quit命令识别出一些奇怪的行为,我无法找到解释或解决方案。

下面的VBScript脚本会复制该问题。这就是它的作用......

  1. 创建新的Excel实例
  2. 打开并关闭一定数量的工作簿(由WorkbooksToCreate控制)
  3. 尝试Quit Excel
  4. 然后通过将Visible状态更改为True
  5. 来证明Excel是否真的退出了

    我收集的是,只有Quit设置为0或1时才会成功WorkbooksToCreate。如果设置为2或更高,Excel将无法正常退出。

    'Switch this between 1 and 2 to see the difference
    '(1 = quit correctly, 2 = quit only changes the .visible to false)
    Const WorkbooksToCreate = 2
    
    'Create new Excel Instance
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
    
    'Add, and then close workbooks
    For w = 1 to WorkbooksToCreate
        Set WB = xlApp.Workbooks.Add
        WB.Close False
    Next
    
    'Attempt to Quit Excel
    xlApp.Quit
    
    'Test it really did quit
    xlApp.Visible = True
    
    Set xlApp = Nothing
    

    我在Windows 7上使用Excel 2010。

    我已经尝试了很多变化,但无法确定问题所在。我能说的最好的是,在这种情况下,所有xlApp.Quit都相当于xlApp.Visible = False

    有兴趣看看你们是否有更好的运气,或者是否有人注意到与Excel类似的行为?

    由于

1 个答案:

答案 0 :(得分:1)

+1 @omegastripes和@Mikegrann用于识别这种情况不会发生在每台机器上。

我进一步调查并发现发现该问题是我自己的工作笔记本电脑特有的。该问题无法在其他计算机上复制。

但我已经成功追踪并修复了错误。它是由一个名为CiscoClickToCall.Connect的特定COM加载项引起的。卸载后,脚本开始按预期运行,并成功退出。

我可能不必从Windows完全卸载它;只需从Excel中删除加载项就足够了,但它是一个我没有任何用处的应用程序,所以我就把它删除了。

据我所知,所有加载项的目的都是向单元格的右键单击添加上下文菜单命令。

感谢大家的帮助