最近弄了一个项目遇到了下面一个问题。
先上代码(项目里面写的代码,闲看着麻烦直接跳转到后面的-问题还原)
# dq_ppt_start_silde_index、dq_ppt_end_silde_index 这两个都是数字,代表页码
for dq_data_ppt_silde_index, dq_ppt_silde_index in enumerate(range(dq_ppt_start_silde_index, dq_ppt_end_silde_index)):
dq_data_ppt_silde_index += 1
while True:
try:
dq_data_ppt_slides(dq_data_ppt_silde_index).Copy()
dq_ppt_sildes.Paste(dq_ppt_silde_index)
sleep(1)
break
except Exception:
# E_err_jg 代表错误等待时间
print(f'第{dq_ppt_silde_index}页复制出现问题!{E_err_jg}秒后重试。')
sleep(E_err_jg)
代码解释如下:
该代码使用的ppt对象为:
pywin32导入的ppt对象即
from win32com.client import Dispatch
P_app = Dispatch('Powerpoint.Application')
# dq_ppt_ph、ppt_ph: 两个不同的 PPT文件的绝对路径
dq_data_ppt = P_app.Presentations.Open(dq_ppt_ph)
dq_ppt_obj = P_app.Presentations.Open(ppt_ph)
dq_data_ppt_slides = dq_data_ppt.Slides
dq_ppt_sildes = dq_ppt_obj.Slides
问题详情
在上述代码运行的时候,所使用的 P_app 会在成功复制粘贴 N个后直接崩溃。
到底要怎样才可以复制粘贴幻灯片成功呀
问题展示☟
问题还原
所需代码
# 使用本代码前请先打开两个ppt文件,本程序功能是把第一个PPT的所有幻灯片复制到第二个PPT里面
from win32com.client import Dispatch
P = Dispatch('Powerpoint.Application')
DS = P.Presentations
print(f'当前pptapp共有 {DS.Count} 个打开的PPT文件')
D1 = DS(1)
D2 = DS(2)
print(D1.Name, '|', D2.Name)
D1_sildes, D2_sildes = D1.Slides, D2.Slides
D1_sildes_count, D2_sildes_count = D1_sildes.Count, D2_sildes.Count
for dq_paste_index, dq_copy_index in zip(range(D2_sildes_count + 1, D2_sildes_count + D1_sildes_count + 1),
range(1, D1_sildes_count + 1)):
D1_sildes(dq_copy_index).Copy()
D2_sildes.Paste(dq_paste_index)
print(f'第 {dq_copy_index} 页 ppt 已复制粘贴成功!')
顶一下,在线等