python xlwings 調用vba以及使用windowapi調用vba腳本
使用win32com調用vba腳本程序如下:
import win32com.client
filepathb = r"C:\Users\user\Desktop\Excel VBA快速工具\拆分本工作簿\拆分本工作簿.xlsm"
xls = win32com.client.Dispatch("Excel.Application")
xls.Workbooks.Open(filepathb)
xls.Application.Run("拆分本工作簿")
xls.Application.Quit()
但是需要持續寫入數據的時候使用win32com有不是特別方便。
使用xlwings庫調用vba腳本
而且在一個持續寫入excel文本中,偏向會去使用xlwings庫調用相關的庫
而且xlwings於pywin32庫的結合也是較好的。調用不同層級的api如sheet、workbook、application上的。
問題時,在利用api調用vba腳本的時候需要激活在宏所在的工作簿。
import xlwings as xw filepath=r"C:\Users\user\Desktop\Excel VBA快速工具\拆分本工作簿\拆分本工作簿.xlsm" app = xw.App(visible=True, add_book=False) wb = app.books.open(filepath) wb.activate() #工作簿需要被激活后才能調用vba腳本。
wb.api.Application.Run("拆分本工作簿") wb.save() wb.close() app.quit() app.kill()