在Python中获取Worksheet COMObject

时间:2017-07-17 16:24:50

标签: python excel vba win32com

我一直在尝试使用python内部的win32com为动态创建的excel表添加按钮。我面临的主要问题是我无法获得可以应用Worksheet方法的Worksheet COMObject。到目前为止,我有以下代码:

from win32com.client import DispatchEx, Dispatch
excel = Dispatch('Excel.Application')
wb = excel.Workbooks.Open('some/path/')
ws = wb.Worksheets.Add()
print(ws)
ws.Buttons.Add(786, 323.25, 109.5, 29.25)

这给出了以下一个输出和一个错误:

<COMObject Add>
AttributeError: 'function' object has no attribute 'Add'

我期待'ws'成为一个工作表COMObject,我可以使用上面的代码直接添加按钮。请向我解释我在这里做错了什么,以及获取上述代码片段将起作用的Worksheet对象的方法。谢谢。

1 个答案:

答案 0 :(得分:0)

ws.Buttons是一个在调用时返回COMObject的方法。所以你需要在它之后直接添加括号。

from win32com.client import DispatchEx, Dispatch
excel = Dispatch('Excel.Application')
wb = excel.Workbooks.Open('some/path/')
ws = wb.Worksheets.Add()

# Show the difference between `ws.Buttons` and `ws.Buttons()`
print(type(ws.Buttons))
print(type(ws.Buttons()))

# Add button to worksheet
ws.Buttons().Add(786, 323.25, 109.5, 29.25)