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做这些)