Excel:通过定义的名称获取单元格值,无需知道工作表

时间:2012-11-28 10:20:58

标签: excel pywin32

我正在使用pywin32来读取和写入具有多个工作表的Excel工作簿。我想通过其定义的名称访问单元格值。我可以用

myWorkbook.Sheets(mySheet).Range("myCellName").Value

但是,我并不总是知道名称定义在哪个工作表上。现在,我通过使用范围(sheet0,sheetx)来尝试每个工作表来解决这个问题。 我认为可以使用另一个函数,即工作簿方法

myWorkbook.Names("myCellName").Value

但不是返回存储在单元格“myCellName”中的值,而是返回单元格的工作表和单元格引用,比如说

u"='mySheet2'!$D$37"

是否有一种更优雅的方式来直接访问已定义名称的值 - 单元格而不知道它在哪个表单上?

2 个答案:

答案 0 :(得分:1)

您可以使用

获取值

MyWorkbook.Names("myCellName").RefersToRange

然后你可以用

获得名单

MyWorkbook.Names("myCellName").RefersToRange.Parent.Name

答案 1 :(得分:0)

如果定义的名称包含范围引用,那么

brettdj的方法很有效,但如果定义的名称包含公式,则可能会失败。更通用的方法是使用评估
Application.evaluate("myCellName")
或者[myCellName]
(假设您可以从pywin32执行这些操作)