'Move worksheet within a workbook to the end [duplicate]

With xlwings, I am trying to move a worksheet within a workbook to the end. For example, a workbook contains a collection of the following sheets:
Sheet1, Sheet2, Sheet3

How can I move Sheet1 after Sheet3 in order to get the following order?
Sheet2, Sheet3, Sheet1

If I use ws1.api.Move(Before=ws3.api) with the Before parameter the line works as expected, but it doesn't with the After parameter. See example code:

import xlwings as xw

wb = xw.Book("test.xlsx")

ws1 = wb.sheets['Sheet1']
ws3 = wb.sheets['Sheet3']

ws1.api.Move(After=ws3.api)


Solution 1:[1]

I found the solution myself, this question is already answered here. You have to add None before the After parameter:

import xlwings as xw

wb = xw.Book("test.xlsx")

ws1 = wb.sheets['Sheet1']
ws3 = wb.sheets['Sheet3']

ws1.api.Move(None, After=ws3.api)
# Or: ws1.api.Move(Before=None, After=ws3.api)

Strictly speaking, the question seems to be more related to pywin32 than to xlwings, because apparently .api accesses the underlying pywin32 objects, as described here.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1