2016-04-15 14 views
0

Ich versuche, zwei Excel-Dateien über win32com zu öffnen und zu versuchen, ein Blatt aus einer Arbeitsmappe in eine andere zu verschieben, wie folgt aus:öffnen zwei Excel-Dateien

ScriptDirectory = os.path.dirname(__file__) # this script dir # path 
xl = Dispatch('Excel.Application') 
wb_Header = xl.Workbooks.Open(ScriptDirectory+'\Report_Header.xlsx') 
ws_Header = wb_Header.Sheets("Header") 
wb_Report = xl.Workbooks.Open(ScriptDirectory+'\Report1.xlsx') 
ws_Header.Move(before=wb_Report.Sheets("Test Cases")) 
wb_Header.Close() 
wb_Report.Close() 
xl.Quit() 

Aber es endet mit einem Fehler:

Traceback (most recent call last): 
File "C:\Workspace\ADTF_BV\Create_reports_v2.py", line 406, in <module> 
    wb_Report = xl.Workbooks.Open(ScriptDirectory+'\Report1.xlsx') 
File "C:\Python27\lib\site-packages\win32com\gen_py\00020813-0000-0000-C000-000000000046x0x1x7\Workbooks.py", line 78, in Open 
, Converter, AddToMru, Local, CorruptLoad) 
pywintypes.com_error: (-2147417851, 'the server threw an exception', None, None)` 

ich dachte, vielleicht kann ich nicht zwei Botschaft öffnen, aber wenn ich zweite Botschaft wie folgt zu erstellen:

ScriptDirectory = os.path.dirname(__file__) # this script dir # path 
xl = Dispatch('Excel.Application') 
wb_Header = xl.Workbooks.Open(ScriptDirectory+'\Report_Header.xlsx') 
ws_Header = wb_Header.Sheets("Header") 
xl2 = Dispatch('Excel.Application') 
wb_Report = xl2.Workbooks.Open(ScriptDirectory+'\Report1.xlsx') 
ws_Header.Move(before=wb_Report.Sheets("Test Cases")) 
wb_Header.Close() 
wb_Report.Close() 
xl.Quit() 

es hilft nicht. Ich arbeite ok, wenn ich nur eine Datei öffne. Es sieht so aus, als könnte es nicht damit umgehen, den zweiten zu öffnen.

Antwort

0

OK, es funktioniert jetzt, wenn ich einen Auftrag von Codezeilen geändert wird, wie folgt aus:

xl = Dispatch('Excel.Application') 
wb_Header = xl.Workbooks.Open(ScriptDirectory+'\Report_Header.xlsx') 
wb_Report = xl.Workbooks.Open(ScriptDirectory+'\Report1.xlsx') 
ws_Header = wb_Header.Sheets("Header") 
ws_Header.Copy(Before=wb_Report.Sheets("Test Cases")) 
+0

Wer weiß, warum kann es in Ordnung, und der Code aus meiner Frage arbeitet, ist falsch? – GohanP

Verwandte Themen