python win32com 开启 ppt 发生错误

我是python的新手, 最近在写ppt 转 pptx, 发生了一个奇怪的问题, 我的问题其他人不一定会发生, 但我发生了有可能其他人也会发生, 因此发个文做个记录, 或许是我的电脑系统有问题也说不定
后来参考(Presentations.Open 方法 (PowerPoint)), 也不清楚为什么改成这样就能正常使用
也欢迎熟python的前辈可以指导解答并指正

环境:
win10pro x64 (21H2) + AD环境
python 3.8.10 (64bit)
Office 2007 Standar (32bit)
发生错的程式码是从网路範例参考语法

import osimport sysimport win32comimport win32com.client#readFile = r"D:\prg_python\test\test.ppt"ppt = 0ole = 0ole = win32com.client.Dispatch("PowerPoint.Application")print(ole)ole.DisplayAlerts = 0print(readFile)ppt = ole.Presentations.Open(readFile)ppt.Close()ole.Quit()# 退出#sys.exit(0)

发生的错误讯息

Traceback (most recent call last):  File "D:\prg_python\test.py", line 36, in <module>    ppt = ole.Presentations.Open(readDir)  File "<COMObject <unknown>>", line 2, in Openpywintypes.com_error: (-2147352567, '发生例外状况。', (0, 'Microsoft Office PowerPoint 2007', 'Presentations.Open : Invalid request.  The PowerPoint Frame window does not exist.', '', 0, -2147188160), None)

经过查阅网路, 找到是因为权限的问题, 怪了, 我操作 Excel 没问题, PowerPoint 却有问题, 好吧, 先解决问题再说
解决方式一, 程式修改为, 先呼叫 powerpnt.exe 就能解决问题, 但这不是我想要的

import osimport sysimport win32comimport win32com.client#readFile = r"D:\prg_python\test\test.ppt"ppt = 0ole = 0os.startfile("powerpnt") #因为权限问题, 需要先开启 PowerPoint, 再执行程式ole = win32com.client.Dispatch("PowerPoint.Application")print(ole)ole.DisplayAlerts = 0print(readFile)ppt = ole.Presentations.Open(readFile)ppt.Close()ole.Quit()# 退出#sys.exit(0)

解决方式二, 参考文件(Presentations.Open 方法 (PowerPoint))后改成

import osimport sysimport win32comimport win32com.client#readFile = r"D:\prg_python\test\test.ppt"ppt = 0ole = 0ole = win32com.client.Dispatch("PowerPoint.Application")print(ole)ole.DisplayAlerts = 0print(readFile)#参考文件: https://docs.microsoft.com/zh-tw/office/vba/api/PowerPoint.Presentations.Open#语法改成这样的语法就正常ppt = ole.Presentations.Open(readFile, WithWindow=0)ppt.Close()ole.Quit()# 退出#sys.exit(0)

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章