我使用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进程的线程,并且在正常情况下在发生杀戮之前停止线程,但我希望有一个更优雅的解决方案。