1

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

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

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

myWorkbook.Names("myCellName").Value

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

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

有没有更优雅的方法可以直接访问已定义名称的值 - 单元格而不知道它在哪个工作表上?

4

2 回答 2

1

你可以得到价值

MyWorkbook.Names("myCellName").RefersToRange

fwiw 你可以得到名字表

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

于 2012-11-28T10:57:01.083 回答
0

如果定义的名称包含范围引用,则 brettdj 的方法效果很好,但如果定义的名称包含公式,则可能会失败。更通用的方法是使用 Evaluate
Application.evaluate("myCellName")

[myCellName]
(假设您可以从 pywin32 执行这些操作)

于 2012-11-28T11:59:04.690 回答