Automation Excel从Python获取Range.Address上的“TypeError:'unicode'对象不可调用”

时间:2011-05-20 13:46:35

标签: python excel com

根据标题,当我在Python 2.6中运行以下代码时,我在线上得到以下错误:

  

print range.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

1 个答案:

答案 0 :(得分:4)

Range.Address参数化属性。它像属性一样访问时提供一个值,但也可以像带参数的方法一样调用。 PyWin32不直接支持参数化属性。它通过为每个支持参数的属性提供GetXXXXX方法来解决这个问题。使用:

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

可以使用或不使用关键字。

使用:

range.GetAddress()
range.Address

阅读该物业。