Is there a way to change the scope of a named range from workbook to worksheet using Python?

Question:

I created a named ranges on my Excel sheet using the function define_name()

 with pd.ExcelWriter(excel_broker, engine='xlsxwriter') as writer:
        # Get xlsxwriter objects
        workbook = writer.book
        header = workbook.add_format({'bold':True, 'border' : 1 })
        format_float = workbook.add_format({'num_format': '# ###'})

        takerMaker_client.to_excel(writer, sheet_name="Maker Taker", index_label = ["", "", ""], 
                                                        startrow=5)
        worksheet = writer.sheets['Maker Taker']
        worksheet.set_column('D:E', 20, format_float)
        workbook.define_name('Client', '=OFFSET('Maker Taker'!$D$7,,,COUNTA('Maker Taker'!$D$7:$D$1048576),)')

but when I try to create a chart on PowerPoint using the named range ‘Client’, I notice that it is linked to the name of my Excel File and not the name of my Excel sheet.

='ExcelFile_Name.xlsx'!Client

Is there a way to set the scope of my named range from ‘Workbook’ to ‘Worksheet’ on Python to get:

='Maker Taker'!Client

I tried the function worksheet.define_name instead of workbook.define_name but this function doesn’t eist and there is no scope parameter in the function define_name

Asked By: Rania

||

Answers:

The problem is that writer.book does represent the whole file, but its actual type and associated methods can depend on the underlying engine. As you are using workbook.define_name which looks like the xlswriter method, I shall assume that your Pandas instance uses the xlswriter engine.

In that case, the xlswriter documentation says:

It is also possible to define a local/worksheet name by prefixing it with the sheet name using the syntax 'sheetname!definedname'

So you should use:

workbook.define_name("'Maker Taker'!Client",
    "=OFFSET('Maker Taker'!$D$7,,,COUNTA('Maker Taker'!$D$7:$D$1048576),)")

Beware: untested…

Answered By: Serge Ballesta
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.