Автоматизация Excel из Python, получая «TypeError: объект unicode не вызывается» на Range.Address

1

В соответствии с заголовком, когда я запускаю код ниже в Python 2.6, я получаю следующую ошибку в строке:

диапазон печати .Address(RowAbsolute = False, ColumnAbsolute = False) "

Я знаю, что означает ошибка, но страница MSDN (http://msdn.microsoft.com/en-us/library/aa174749 (v = office.11).aspx) сказал, что это действительно и есть пример. Я пробовал это в EXCEL VBA, и он работает.

TypeError: объект 'unicode' не является вызываемый

Любые идеи?

Спасибо.

Doanld

import win32com.client

xlApp =  win32com.client.DispatchEx('Excel.Application')
xlApp.Visible = True

objWkb = xlApp.Workbooks.Add()
objSht = objWkb.Worksheets(1)
objSht.Cells(2,2).Value = '1'
objSht.Cells(2,3).Value = '2'

range = objSht.Cells(2,4)
range.Value = '=%s+%s' % (objSht.Cells(2,2).Address, objSht.Cells(2,3).Address)
range.AddComment('Test Comment')

print range.Address
print range.Address(RowAbsolute=False, ColumnAbsolute=False)

objWkb.Close(SaveChanges=False) #to avoid prompt

xlApp.Quit()
xlApp.Visible = 0 #must make Visible=0 before del self.excelapp or EXCEL.EXE remains in memory.
del xlApp
Теги:
excel
com

1 ответ

4
Лучший ответ

Range.Address является параметризованным свойством. Он предоставляет значение при доступе как свойство, но может быть вызвано как метод с параметрами. PyWin32 не поддерживает параметризованные свойства напрямую. Он работает вокруг этого, предоставляя метод GetXXXXX для каждого свойства, поддерживающего параметры. Использование:

range.GetAddress(RowAbsolute=False,ColumnAbsolute=False)

Он может использоваться с ключевыми словами или без них.

Используйте либо:

range.GetAddress()
range.Address

Чтобы прочитать свойство.

  • 0
    +1. Отлично. Я смущен тем, насколько совершенно неправильным был мой ответ.
  • 0
    Это полезный ответ, большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню