从Python自动化Excel时在Range.Address上出现"TypeError: 'unicode'对象不可调用"错误
根据标题,当我在 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' object is not callable
有什么想法吗?
谢谢。
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 个回答
4
Range.Address
是一个 带参数的属性。当你像访问属性一样去获取它的值时,它会返回一个值,但你也可以像调用方法一样,带上参数去使用它。PyWin32 这个库不直接支持带参数的属性。为了绕过这个限制,它为每个支持参数的属性提供了一个 GetXXXXX 方法。你可以这样使用:
range.GetAddress(RowAbsolute=False,ColumnAbsolute=False)
这个方法可以带关键词使用,也可以不带关键词。
你可以选择以下两种方式:
range.GetAddress()
range.Address
来读取这个属性的值。