Python Excel将宏运行到xlsx文件

时间:2015-02-27 14:20:03

标签: python excel excel-vba win32com xlsxwriter vba

如何从我的xslm文件中获取宏并将其应用于我的xlsx文件?

import cx_Oracle  
import xlsxwriter  
import win32com.client

SQL = "Select * FROM TABLE"  
cursor1 = con.cursor()  
cursor1.execute(SQL)  
workbook = xlsxwriter.Workbook('OUTPUT.xlsx')  
worksheet = workbook.add_worksheet('Summary - Attendee')  
worksheet.set_tab_color('red')  

for i, row in enumerate(cursor1):  
    for j, col in enumerate(row):  
        worksheet.write(i+1,j,col)  

excel = win32com.client.Dispatch('Excel.Application')  
excel.Visible = 1  
excel.Workbooks.Open(Filename="Path\Macro.xlsm")  
excel.Application.Run("Format")  
excel.Workbooks(1).Close(SaveChanges=1)  
excel.Application.Quit()  
excel = 0  

workbook.close()

Macro.xlsm VBA code:  
Sub Format()  
    Sheet1.Select  
    Cells.Select  
    Cells.EntireColumn.Autofit  
End Sub  

这两项工作都可以,但作为单独的流程和文件。我想从xlsm调用宏并将其应用到我的xlsx文件中以格式化我的xlsx文件。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我想我已经找到了替代方案 首先,我使用VBA代码创建了一个xlsm文件,以格式化文件夹中每个工作簿中的每个工作表。然后在我的python脚本中,我将首先创建我想要创建的所有excel文件而不进行任何格式化,然后触发python以调用此xlsm文件中的宏来运行所有工作簿和每个工作表以格式化每个文件以我想要的方式,使用Excel的格式而不是python的excel格式。