我是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)