Я видел много ответов для 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), нет)
Где я ошибаюсь?