1 回答

TA貢獻1846條經驗 獲得超7個贊
因為.xlsxto.xlsm是根本不同類型的二進制文件,所以不能簡單地使用行復制和重命名:
shutil.copy("normal_excel_file.xlsx", "(1)normal_excel_file.xlsx")
os.rename("(1)normal_excel_file.xlsx", "macros_excel_file.xlsm")
(奇怪的是,您的教程鏈接沒有顯示 Pandas 生成的.xlsx文件.xlsm在后續附加的宏步驟中是如何變成的。)
相反,使用 Excel 編寫器對象來遷移宏并另存為.xlsm. 此外,在編寫器對象上使用上下文with管理器在處理后有效地關閉 i/o 對象。
# creating the dataframe
path = "C:\Users\John\Desktop\Python_scripts\Running VBA Macro"
filename = "normal_excel_file.xlsx"
filename_macro = "macros_excel_file.xlsm"
df = pd.read_excel(filename, index_col=0)
with pd.ExcelWriter(filename, engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='data', index=False)
workbook = writer.book
workbook.filename = filename_macro
workbook.add_vba_project('vbaProject.bin')
writer.save()
# RUN MACRO
if os.path.exists(os.path.join(path, filename_macro)):
wb = xl.Workbooks.Open(Filename = filename_macro, ReadOnly=1)
xl.Application.Run("ThisWorkbook.Macro1")
xl.Application.Quit()
添加回答
舉報