2017-04-03 105 views
0

我有一個簡單的Excel工作表,它需要更新工作表中的命名範圍。由於openpyxl不直接做到這一點,我需要刪除舊的範圍,然後創建一個新的範圍(基於舊的範圍):嘗試使用openpyxl刪除named_range時出現「沒有全局定義的名稱」

rng = wb.get_named_range('range') 
wb.remove_named_range(rng) 
wb.create_named_range('range', ws0, '$A$21:$A$' + str(highRow+1)) 

已經有在名爲「範圍內的工作簿中的範圍「,我試圖將範圍應用到ws0的工作表,而highRow只是ws0的最大行。

當我運行此我得到wb.remove_named_range(RNG)以下錯誤:

KeyError: "No globally defined name \nParameters:\ncustomMenu=None, workbookParameter=None, shortcutKey=None, description=None, vbProcedure=None, xlm=None, publishToServer=None, hidden=None, name='range', localSheetId=None, attr_text='Ranges!$A$21:$A$22', functionGroupId=None, function=None, statusBar=None, help=None, comment=None"

我不是引用命名範圍是否正確?

回答

0

您需要通過它的名字刪除範圍:

del wb.defined_names['range']

+0

,完美的工作。現在我不確定'remove_named_range'的用途,但是謝謝! –

+0

這是遺留代碼,會在某個時候消失。最初的實現將所有定義的名稱視爲單元格範圍,但事實並非如此,它也不是Pythonic。 –

相關問題