python打开excel执行vba代码_python可以添加,运行和删除VBA宏以实现excel而无需中间保存步骤吗?...
我有一個長期運行的python管道,它生成一個pandas數據幀。簡而言之,我想:在excel中顯示pandas數據幀
添加并運行VBA宏
刪除VBA宏并將(新格式化的)輸出保存為 .xslx
挑戰在于,如果沒有中間的save-as xlsm-file步驟,我就無法弄清楚如何做到這一點,這在將VBA宏添加到.xlsx文件時顯然是必需的。由于這是低效的,我想擺脫這個中間步驟。
這是代碼:
1.在excel中顯示pandas數據幀:with pd.ExcelWriter('output.xlsx') as writer:
df_results.to_excel(writer, index = False, sheet_name = "Sheet1")
#...see below
2A。添加宏并分配.xlsm-filename,以便writer可以保存宏#... see above
writer.book.filename = 'output.xlsm' # Add .xlsm filename
writer.book.add_vba_project('VBA_script.bin') # This adds my macro
writer.save() # How to get rid of this step?
2B。運行宏xl = win32com.client.Dispatch("Excel.Application") # Set up excel
xl.Workbooks.Open(Filename = 'output.xlsm') # Open .xlsm file from step 2A
xl.Application.Run("Module1.Main") # Run VBA_macro.bin
3.刪除宏并保存到.xlsxwb = xl.ActiveWorkbook
xl.DisplayAlerts = False
wb.DoNotPromptForConvert = True
wb.CheckCompatibility = False
wb.SaveAs('final_outfile.xlsx', FileFormat=51, ConflictResolution=2) # Macro disapears here
xl.Application.Quit()
del xl
xl = None
是否可以在沒有中間.xlsm步驟和更短代碼的情況下執行此操作?
如何在excel上下文中添加,運行和刪除VBA宏,而無需使用python進行中間保存步驟?
編輯:似乎答案是“ 不”。- 人們建議使用第二個永久性.xlsm容器來容納VBA宏 - 如果您不同意,請隨意回答
總結
以上是生活随笔為你收集整理的python打开excel执行vba代码_python可以添加,运行和删除VBA宏以实现excel而无需中间保存步骤吗?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3入门与进阶笔记_16_变量
- 下一篇: effective c++_【阅读笔记】