1

我使用 perl 和 Win32::OLE 来自动化一些 Excel 任务。由于 Excel 文件太大,因此该过程需要相当长的时间才能完成......但是在一夜之间离开后,我相信它会因为“超时”问题而卡住。如果我减小文件大小,那就没问题了。

无论如何增加超时?

我的部分代码:

#   Open the rules file
my $xlBook = $xlApp->Workbooks->Open("$file");
my $xlSheet = $xlBook->Worksheets(1);

#Replace FALSE -> 0
$xlSheet->Cells->Replace ({ What => "FALSE", Replacement => "0" });
#Replace TRUE -> 1
$xlSheet->Cells->Replace ({ What => "TRUE", Replacement => "1" });
4

1 回答 1

1

更改自动化超时的方法是调用CoRegisterMessageFilter来注册您的IMessageFilter实现以处理 COM 调用,例如调用 OLEUIBusy 以显示服务器繁忙对话框

我不认为 Win32::OLE 实现了这一点,您可以尝试将 CoRegisterMessageFilter 代码包装在进程内 COM 服务器中并在服务器中注册消息过滤器。

于 2012-06-16T23:19:26.240 回答