Excel:通过定义的名称获取单元格值,而不知道工作表
我正在使用pywin32对包含多张工作表的Excel工作簿进行读写操作。我想通过定义的名称访问单元格值。我可以用Excel:通过定义的名称获取单元格值,而不知道工作表,excel,pywin32,Excel,Pywin32,我正在使用pywin32对包含多张工作表的Excel工作簿进行读写操作。我想通过定义的名称访问单元格值。我可以用 myWorkbook.Sheets(mySheet).Range("myCellName").Value 然而,我并不总是知道名字是在哪张纸上定义的。现在,我通过使用一个范围(sheet0,sheetx)来尝试每个工作表来解决这个问题。 还有一个我认为可以使用的函数,那就是工作簿方法 myWorkbook.Names("myCellName").Value 但它不是返回存储在单元
myWorkbook.Sheets(mySheet).Range("myCellName").Value
然而,我并不总是知道名字是在哪张纸上定义的。现在,我通过使用一个范围(sheet0,sheetx)来尝试每个工作表来解决这个问题。
还有一个我认为可以使用的函数,那就是工作簿方法
myWorkbook.Names("myCellName").Value
但它不是返回存储在单元格“myCellName”中的值,而是返回单元格的工作表和单元格引用,例如
u"='mySheet2'!$D$37"
有没有一种更优雅的方法可以直接访问已定义名称单元格的值,而不知道它在哪个表上 您可以使用
MyWorkbook.name(“myCellName”).referestorange
fwiw你可以用
my工作簿.Names(“myCellName”).refrestorange.Parent.Name
您可以使用
MyWorkbook.name(“myCellName”).referestorange
fwiw你可以用
MyWorkbook.Names(“myCellName”).refrestorange.Parent.Name
brettdj的方法在定义的名称包含范围引用时运行良好,但在定义的名称包含公式时可能会失败。一种更通用的方法是使用Evaluate应用程序。Evaluate(“myCellName”)
或
[myCellName]
(假设您可以从pywin32执行这些操作)brettdj的方法在定义的名称包含范围引用时运行良好,但在定义的名称包含公式时可能失败。更通用的方法是使用Evaluate
应用程序。Evaluate(“myCellName”)
或
[myCellName]
(假设您可以从pywin32执行这些操作)非常正确。尽管问题确实指定了用于保存单元格值的名称。错误处理(如果可能的话,在
pywin32
中)可能更适合确定名称是否实际引用了单元格。非常正确。尽管问题确实指定了名称用于保存单元格值。错误处理(如果可能的话,在pywin32
中,可能更适合确定名称是否实际上是指单元格。太好了,我使用MyWorkbook.names(“myCellName”).RefersToRange.Valuegreat获得了我想要的结果。我使用MyWorkbook.names(“myCellName”).RefersToRange.Value获得了我想要的结果