Я пытаюсь переместить один рабочий лист excel из книги A в книгу B с помощью python 2.7, но я все время получаю сообщение об ошибке. СценарийPython 2.7 - win32com.client - перемещение листа из одной книги в другую
Python:
import win32com.client
excel=win32com.client.Dispatch('Excel.Application')
excel.Visible=False
wbP=excel.Workbooks.Open('C:\Full Path\WorkbookA.xlsx')
wbG=excel.Workbooks.Open('C:\Full Path\WorkbookB.xlsx')
wbG.Worksheets("Sheet1").Select
wbG.Worksheets("Sheet1").Move(before=wbP.Worksheets("Annual"))
wbP.SaveAs('C:\Full Path\WorkbookA.xlsx')
excel.Application.Quit()
Ошибка я получаю:
Traceback (most recent call last):
File "C:\Full Path\test.py", line 10, in <module>
wbG.Worksheets("Sheet1").Select
File "C:\Python27\lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x8\Sheets.py", line 120, in __call__
ret = self._oleobj_.InvokeTypes(0, LCID, 2, (9, 0), ((12, 1),),Index
com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147352565), None)
Спасибо!
Просмотреть комментарии от bernie. Рабочий лист, который мне нужен был, был назван «Чарты без листа1».
Это не может быть причиной проблемы, но они должны быть изменены в любом случае : \ является escape-символом. Либо используйте необработанные строки, либо прямые косые черты, например: 'wbG = excel.Workbooks.Open (r'C: \ Full Path \ WorkbookB.xlsx ')' или 'wbG = excel.Workbooks.Open (' C:/Full Path /WorkbookB.xlsx ') ' – bernie
Также вы можете использовать' win32com.client.DispatchEx' для создания нового экземпляра Excel, чтобы избежать вмешательства в какие-либо открытые экземпляры Excel. Если вы используете 'DispatchEx', вы можете сбросить настройки' .Visible' на 'False'. Дальнейшее чтение о 'DispatchEx': http://timgolden.me.uk/python/win32_how_do_i/start-a-new-com-instance.html – bernie
Привет, Берни. Спасибо за эти рекомендации. Я сделал корректировки, которые вы предложили. К сожалению, я все еще получаю ошибку. – Stephanie