Код: Выделить всё
def collect_to_one():
"""Function copies to one file"""
sgmts = segmentation(start_page)
for book in range(len(sgmts)):
wb = excel.Workbooks.Add()
for file in range(len(sgmts[book])):
print(sgmts[book][file])
w = excel.Workbooks.Open(os.path.join(os.getcwd(), sgmts[book][file]))
w.Sheets(1).Copy(After=wb.Worksheets(file + 1))
wb.ActiveSheet.Name = sgmts[book][file]
w.Save()
wb.SaveAs(os.path.join(os.getcwd(), '_'.join(('Сводный', sgmts[book][-1]))))
Код: Выделить всё
def enum(start_page):
wb = excel.Workbooks.Open(os.path.join(os.getcwd(), "Сводный_09-04-01 +.xlsx"))
for i in range(2, len(files) + 2):
ws_list = wb.Worksheets(i)
ws_list.Application.PrintCommunication = False
ws_list.DisplayPageBreaks = True
print(ws_list.PageSetup.Pages.Count)
ws_list.PageSetup.FirstPageNumber = start_page
start_page += ws_list.PageSetup.Pages.Count
ws_list.Application.PrintCommunication = True
wb.SaveAs(os.path.join(os.getcwd(), "Сводный_09-04-01 +.xlsx"))
0 (на самом деле файл содержит 4 страницы)
0 ( на самом деле файл содержит 4 страницы)
0 (на самом деле файл содержит 5 страниц)
0 (на самом деле файл содержит 35 страниц)
0 (фактически файл содержит 7 страниц)
2 (фактически файл содержит 2 страницы)
Но если Я открываю файл сводки и меняю местами 2 листа, а затем возвращаю исходное расположение листов, функция перечисляет правильно. Конечно, я могу сделать то же самое, добавив две строки кода:
Код: Выделить всё
wb.Sheets(2).Move(Before=wb.Sheets(4))
wb.Sheets(2).Move(Before=wb.Sheets(4))
Подробнее здесь: https://stackoverflow.com/questions/626 ... ncorrectly