Я пытаюсь последовательно открыть несколько OLE-объектов Originpro, встроенных в слайд PowerPoint, и автоматически обновить рабочие листы, изначально находящиеся внутри каждого объекта, но я сталкиваюсь с проблема.
Когда открыто несколько объектов OLE, op.find_sheet(функция происхождения) вызывает только первый открытый объект OLE, поэтому я не могу обновить следующий. поэтому я попытался использовать op.exit или doverb(0), чтобы закрыть первый объект OLE, а затем повторно подключить приложение с помощью op.attach(функция происхождения) для обновления следующего объекта OLE, но мне не удалось установить повторное соединение с исходным приложением.
Примерный код выглядит следующим образом:
Код: Выделить всё
import os
import win32com.client
import originpro as op
powerpoint = win32com.client.Dispatch("PowerPoint.Application")
powerpoint.Visible = True
origin = win32com.client.Dispatch("Origin.ApplicationSI")
origin.Visible = True
for slide_index, slide in enumerate(presentation.Slides)
for shape_index, shape in enumerate(slide.Shapes):
ole_name = shape.Name
if "origin" in ole_name.lower():
shape.OLEFormat.DoVerb(1)
wks = op.find_sheet('w', 0)
wks.from_df(data)
shape.OLEFormat.DoVerb(0)
op.detatch()
op.utils.exit()
op.attach()
кроме того, я пробовал использовать time.sleep и gc.collect, но это не сработало».
Подробнее здесь: https://stackoverflow.com/questions/792 ... -originpro
Мобильная версия