Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 10, 2012 02:20:51

vkopey
От:
Зарегистрирован: 2010-09-26
Сообщения: 116
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблема с win32com.client

Если обрабативаются события Excel, выдает ошибку здесь:
workSheet.Range(“A2”).Value = “=A1+1” #pythoncom error: Python error invoking COM method.
workSheet.Range(“A3”).Formula = “=A1+1” #pythoncom error: Python error invoking COM method.

# -*- coding: CP1251 -*-
import win32com.client, time, pythoncom
class Events():
    pass
excelApp = win32com.client.DispatchWithEvents("Excel.Application", Events)
excelApp.Visible = 1
workBook=excelApp.Workbooks.Add()
workSheet=excelApp.ActiveWorkbook.ActiveSheet
workSheet = win32com.client.DispatchWithEvents(workSheet, Events)
workSheet.Range("A2").Value = "=A1+1" #pythoncom error: Python error invoking COM method.
workSheet.Range("A3").Formula = "=A1+1" #pythoncom error: Python error invoking COM method.        
time.sleep(5)
workBook.Close(False)
excelApp.Quit()
excelApp=workBook=workSheet=None
pythoncom.CoUninitialize()
Интересно, что если работаем с Excel без обработки событий, то ошибки нет:
# -*- coding: CP1251 -*-
import win32com.client, time, pythoncom
excelApp = win32com.client.Dispatch("Excel.Application")
excelApp.Visible = 1
workBook=excelApp.Workbooks.Add()
workSheet=excelApp.ActiveWorkbook.ActiveSheet
workSheet.Range("A2").Value = "=A1+1" #pythoncom error: Python error invoking COM method.
workSheet.Range("A3").Formula = "=A1+1" #pythoncom error: Python error invoking COM method.        
time.sleep(5)
workBook.Close(False)
excelApp.Quit()
excelApp=workBook=workSheet=None
pythoncom.CoUninitialize()
Что-то не то с объектом workSheet, потому как вывод на второй лист работает нормально:
workBook.Worksheets(2).Range(“A2”).Value = “=A1+1”
workBook.Worksheets(2).Range(“A3”).Formula = “=A1+1”



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version