我是python的新手, 最近在寫ppt 轉 pptx, 發生了一個奇怪的問題, 我的問題其他人不一定會發生, 但我發生了有可能其他人也會發生, 因此發個文做個記錄, 或許是我的電腦系統有問題也說不定
後來參考(Presentations.Open 方法 (PowerPoint)), 也不清楚為什麼改成這樣就能正常使用
也歡迎熟python的前輩可以指導解答並指正
環境:
win10pro x64 (21H2) + AD環境
python 3.8.10 (64bit)
Office 2007 Standar (32bit)
發生錯的程式碼是從網路範例參考語法
import os
import sys
import win32com
import win32com.client
#
readFile = r"D:\prg_python\test\test.ppt"
ppt = 0
ole = 0
ole = win32com.client.Dispatch("PowerPoint.Application")
print(ole)
ole.DisplayAlerts = 0
print(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 Open
pywintypes.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 os
import sys
import win32com
import win32com.client
#
readFile = r"D:\prg_python\test\test.ppt"
ppt = 0
ole = 0
os.startfile("powerpnt") #因為權限問題, 需要先開啟 PowerPoint, 再執行程式
ole = win32com.client.Dispatch("PowerPoint.Application")
print(ole)
ole.DisplayAlerts = 0
print(readFile)
ppt = ole.Presentations.Open(readFile)
ppt.Close()
ole.Quit()# 退出
#
sys.exit(0)
解決方式二, 參考文件(Presentations.Open 方法 (PowerPoint))後改成
import os
import sys
import win32com
import win32com.client
#
readFile = r"D:\prg_python\test\test.ppt"
ppt = 0
ole = 0
ole = win32com.client.Dispatch("PowerPoint.Application")
print(ole)
ole.DisplayAlerts = 0
print(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)