【问题标题】:Excel: get cell value by defined name w/o knowing the sheetExcel:在不知道工作表的情况下通过定义的名称获取单元格值
【发布时间】:2012-11-28 19:59:04
【问题描述】:

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

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

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

myWorkbook.Names("myCellName").Value

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

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

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

【问题讨论】:

    标签: excel pywin32


    【解决方案1】:

    你可以得到价值

    MyWorkbook.Names("myCellName").RefersToRange

    然后你可以得到名字表

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

    【讨论】:

    • 太好了,我得到了我想要的结果:MyWorkbook.Names("myCellName").RefersToRange.Value
    【解决方案2】:

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

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

    【讨论】:

    • 非常正确。尽管问题确实指定了名称用于保存单元格值。错误处理(如果可能,pywin32 可能更适合确定名称是否实际上指的是单元格。
    猜你喜欢
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2020-06-14
    • 2020-09-18
    相关资源
    最近更新 更多