2012-11-28 57 views
1

我正在使用pywin32讀取和寫入具有多個工作表的Excel工作簿。我想通過他們定義的名稱來訪問單元格值。我可以使用Excel:通過定義的名稱獲取單元格值,但不知道表單

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

但是,我並不總是知道該表的名稱是如何定義的。現在,我通過使用範圍(sheet0,sheetx)來嘗試每個工作表。 有想到可以使用其他功能,也就是工作簿方法

myWorkbook.Names("myCellName").Value 

但而不是返回存儲在所述細胞「myCellName」的值返回單元的片和單元格引用,說

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

是否有更優雅的方式直接訪問已定義的名稱 - 單元格的值而不知道它在哪個表上?

回答

1

您可以

MyWorkbook.Names("myCellName").RefersToRange

獲得的價值和FWIW你可以用

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

+0

很大,我得到了我想要使用的結果: MyWorkbook.Names(「myCellName」)RefersToRange.Value – amelie

0

brettdj的方法獲取名稱片效果很好,如果定義的名稱包含了一系列參考,但如果「定義的名稱」包含公式,則可能會失敗。一個更普遍的方法是使用評估
Application.evaluate("myCellName")

[myCellName]
(假設你可以從pywin32做這些)

+0

確實如此。雖然問題確實指定了名稱用於保存單元格值。錯誤處理(如果可能'pywin32'可能更適合確定名稱是否實際上是指單元格。 – brettdj

相關問題