Как вы копируете листы с DispatchEx
? Я не могу скопировать одну рабочую таблицу из одной рабочей книги в другую рабочую таблицу из другой рабочей книги. Я использую DispatchEx
, чтобы открыть их в двух отдельных экземплярах. Строка: ws1.Copy(Before=wb2.Worksheets(1))
выдает ошибку. Эта же строка работает для отправки, но мне нужно открыть файлы отдельно в Excel.
import time, os.path, os
from win32com.client import DispatchEx
path1 = 'C:\\example1.xlsx'
path2 = 'C:\\example2.xlsx'
xla = DispatchEx("Excel.Application")
xla.DisplayAlerts = False
xla.Visible = True
xl = DispatchEx("Excel.Application")
xl.DisplayAlerts = False
xl.Visible = True
curTime = os.path.getmtime('C:\\example1.xlsx')
while True:
modTime = os.path.getmtime('C:\\example1.xlsx')
if(modTime > curTime):
wb1= xla.Workbooks.Open(Filename=path1)
wb2= xl.Workbooks.Open(Filename=path2)
ws1 = wb1.Worksheets(1)
ws2 = xl.ActiveSheet
ws1.Copy(Before=wb2.Worksheets(1)) # problem code here. Works in
# dispatch
Вот то, что ниже инструкции 'ws1.Copy (Before = wb2.Worksheets (1))'. Единственная разница в том, что я использую Dispatch, чтобы открыть две книги за один раз. Делая это таким образом, я могу скопировать ws1 в wb2. Но мастер-файл закрыт, он выдаст msg «файл, доступный для редактирования», хотя я указываю wb1.close ().
wb1.Close() #close wb1 but still get msg
#xla.Quit() #Quit() is the only way I can
#close out wb1 completely and
#not receive the 'file now
#available for edit' msg.
#But it close both books.
xla = Dispatch("Excel.Application") #starts up wb1 again if file
#is modified (path 1)
xla.DisplayAlerts = False
xla.Visible = True
Это трассировка, которую я получаю: игнорировать строку 35, так как некоторые закомментированные строки не были вставлены сюда.
Traceback (most recent call last):
File "C:/Python34/updateExcel2Dispatch.py", line 35, in <module>
ws1.Copy(Before=wb2.Worksheets(1))
File "<COMObject <unknown>>", line 3, in Copy
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Office Excel', 'Copy method of Worksheet class failed', 'C:\\Program
Files (x86)\\Microsoft Office\\Office12\\1033\\XLMAIN11.CHM', 0, -2146827284), None)"