Perl Excel OLE-> GetActiveObject随机被永久地卡住了

时间:2016-11-24 06:46:02

标签: excel perl win32ole

我使用perl处理批处理运行中的excel文件,该运行使用这种代码为每个文件运行宏:

print strftime("[%H:%M] ", localtime(time)), "Handling file $path\n";

my $Excel = Win32::OLE->GetActiveObject('Excel.Application') 
         || Win32::OLE->new('Excel.Application', 'Quit');

print strftime("[%H:%M] ", localtime(time)), "OLE Created\n";

有时在成功运行几千次之后,这个过程会在两个打印语句之间停滞不前,即使在几个小时之后也不会发生任何事情。查看任务管理器时,Excel进程正在运行,如果我将其终止,则该进程将再次继续。

宏以excel方式结束Application.Quit

有没有办法为此设置某种超时,甚至更好,以某种方式解决这个问题?我可以修理'这通过启动一个最终将杀死excel进程的线程,并且在正常情况下在发生杀戮之前停止线程,但我希望有一个更优雅的解决方案。

0 个答案:

没有答案