Python win32com конвертировать из xlsx / xls в xlsm? - PullRequest
0 голосов
/ 17 марта 2020

Я видел много ответов для win32com о том, как конвертировать из xlsm в xlsx или xls, но я пытаюсь сделать прямо противоположное. Я попытался имитировать c код, используемый для преобразования xlsm в xlsx, но я получаю сообщение об ошибке. Код, который я использую:

import win32com.client as win32
from win32com import client
from shutil import copyfile

xlApp = client.gencache.EnsureDispatch('Excel.Application')

if file_original[-1] == "x" or file_original[-1] == "s": # If it is xlsx or xls
    file_temp = copyfile(file_orig, str(main_folder) + "\\mainfile_duplicated_nomacro.xlsx")
    books_temp = xlApp.Workbooks.Open(str(main_folder) + "\\mainfile_duplicated_nomacro.xlsx")
    books_temp.SaveAs(Filename = "\\mainfile_duplicated.xlsm" , FileFormat = 52)
    books_temp.Close(True)
elif anl_orig[-1] == "m": # If it is xlsm
    file_dup = copyfile(file_orig, str(main_folder) + "\\mainfile_duplicated.xlsm")

Когда я сохраняю books_temp, я использую FileFormat = 52, что я получил от здесь . Я получаю сообщение об ошибке:

com_error: (-2147352567, «Произошло исключение.», (0, «Microsoft Excel», «Microsoft Excel не может получить доступ к файлу» C: \ EDF0B000 '. Существует несколько возможных причин: \ n \ n • Имя файла или путь не существует. \ N • Файл используется другой программой. \ N • Книга, которую вы пытаетесь сохранить, имеет то же имя, что и в настоящее время открытая рабочая тетрадь. ", 'xlmain11.chm', 0, -2146827284), нет)

Где я ошибаюсь?

...