实例化新的Excel过程时出错

这个问题是关于我最近的问题在最大数量的Excel进程? ,但是具有不同的行为。

简而言之:有一个COM +组件在启动时会打开一些excel进程。 句柄被添加到列表中,所以它们不会超出范围或收集垃圾。

如果我在本地运行这个组件(Windows 7 64位,12 Gb的内存),它开始罚款,并打开30个Excel进程没有问题。

如果我在(虚拟)服务器上运行这个组件(windows server 2003 R2 SP2 64位,4 Gb),那么前21个excel进程是正确启动的,但是其余的9个进程没有被创build; 并在事件日志中看到9次以下错误:

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005. 

所以创build最后的9个excel进程导致了exception,似乎达到了21个excel进程的限制。

如果我在另一台服务器(Windows Server 2003 SP 2,1 Gb RAM)上尝试它,则会创build22个excel进程,另外还有8个失败且具有相同的exception。

我想知道是什么导致Excel进程创build在这些服务器上失败?

编辑:我可以打开30 Excel的实例没有问题,如果我手动打开他们使用开始菜单。

有任何想法吗?

谢谢,L

从技术上说,你在做什么,根本不支持: http : //support.microsoft.com/kb/257757

Microsoft目前不推荐并不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会出现不稳定的行为和/或在此环境中运行Office时发生死锁。

也就是说,由于服务器之间有些微的不一致,我相信你遇到了某种资源冲突/限制,而不是特定于excel的东西。 由于服务器上的内存量有限,可能会导致内存不足或分段。