Excel:通过定义的名称获取单元格值,而不知道表单
我正在使用pywin32读取和写入多个工作表的Excel工作簿。 我想通过他们定义的名字来访问单元格的值。 我可以使用
myWorkbook.Sheets(mySheet).Range("myCellName").Value
然而,我并不总是知道什么名单被定义的表。 现在,我通过使用范围(sheet0,sheetx)来尝试每个工作表。 还有另一个function,我想我可以使用,这是一个工作簿的方法
myWorkbook.Names("myCellName").Value
但是不是返回存储在单元格“myCellName”中的值,而是返回单元格的表格和单元格引用,比方说
u"='mySheet2'!$D$37"
有没有更好的方法来直接访问定义的名称 – 单元格的值而不知道它在哪个表上?
你可以得到的价值
MyWorkbook.Names("myCellName").RefersToRange
而且,你可以得到名单
MyWorkbook.Names("myCellName").RefersToRange.Parent.Name
如果Defined Name包含范围引用,则brettdj的方法可以正常工作,但如果Defined Name包含公式,则可能会失败。 更一般的方法是使用评估
Application.evaluate("myCellName")
要么
[myCellName]
(假设你可以从pywin32做这些)