Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel:通过定义的名称获取单元格值,而不知道工作表_Excel_Pywin32 - Fatal编程技术网

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

Excel:通过定义的名称获取单元格值,而不知道工作表,excel,pywin32,Excel,Pywin32,我正在使用pywin32对包含多张工作表的Excel工作簿进行读写操作。我想通过定义的名称访问单元格值。我可以用 myWorkbook.Sheets(mySheet).Range("myCellName").Value 然而,我并不总是知道名字是在哪张纸上定义的。现在,我通过使用一个范围(sheet0,sheetx)来尝试每个工作表来解决这个问题。 还有一个我认为可以使用的函数,那就是工作簿方法 myWorkbook.Names("myCellName").Value 但它不是返回存储在单元

我正在使用pywin32对包含多张工作表的Excel工作簿进行读写操作。我想通过定义的名称访问单元格值。我可以用

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获得了我想要的结果