首页 > 解决方案 > 尝试使用从 Windows 服务的 VBA 调用的 PowerPoint 时出错

问题描述

我有一个在 Apache for Windows(作为 Windows 服务运行)上运行的 Web 服务器,它使用 Flask 和 Python win32api 库通过 Interop 库与 PowerPoint 进行交互。当我在与 Flask 捆绑的开发服务器上运行该站点时,一切都很好。程序打开,我可以将演示文稿转换为视频。

当我尝试从作为服务运行的 Web 服务器执行相同的操作时,我从图层中收到Not enough memory resources are available to complete this operation错误消息。COM我正在推送(物理)服务器的资源,并且我的 RAM 在 PowerPoint 打开之前使用了大约 80%,但我既可以自己打开它,也可以如前所述通过开发 Web 服务器运行它,它工作得很好。

我正在使用线程,如果重要的话,PowerPoint 正在从单体应用程序的新线程中打开。

PS 我知道微软不会宽恕这种 PowerPoint 应用程序,但可惜他们没有提供不使用 PowerPoint 将 PowerPoint 转换为视频的方法!

标签: powerpointoffice-interoppywin32

解决方案


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

如果您正在构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。

在Office 服务器端自动化的注意事项文章中阅读有关此内容的更多信息。

您可以考虑使用为服务器端执行而设计的任何第三方组件。此外,请查看 Open XML SDK,请参阅Welcome to the Open XML SDK 2.5 for Office


推荐阅读