我試圖將一個Excel工作表從工作簿A移動到Python 2.7的工作簿B,但我不斷收到錯誤。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的評論。我需要移動的工作表被命名爲Charts not Sheet1。
這可能不是問題的原因,但無論如何都應該被改變:\是一個轉義字符。使用原始字符串或正斜槓,例如:'wbG = excel.Workbooks.Open(r'C:\ Full Path \ WorkbookB.xlsx')'或'wbG = excel.Workbooks.Open('C:/ Full Path /WorkbookB.xlsx')' – bernie 2014-11-14 17:45:18
您也可以使用'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 2014-11-14 17:59:57
嗨伯尼。感謝您提供這些建議。我做了你所建議的調整。不幸的是我仍然收到錯誤。 – Stephanie 2014-11-14 18:33:08