Python Excel 运行 xlsx 文件的宏
Python Excel Run Macro to xlsx file
如何从我的 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 文件。有什么想法吗?
我想我已经想出了一个替代方案。
首先,我创建了一个带有 VBA 代码的 xlsm 文件,用于格式化文件夹中每个工作簿中的每个工作表。然后在我的 python 脚本中,我将首先创建我想要创建的所有 excel 文件,不带任何格式,然后触发 python 将此 xlsm 文件中的宏调用到 运行 遍历所有工作簿和每张工作表,以我想要的方式格式化每个工作簿,并使用 Excel 的格式而不是 python 的 excel 格式。
如何从我的 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 文件。有什么想法吗?
我想我已经想出了一个替代方案。
首先,我创建了一个带有 VBA 代码的 xlsm 文件,用于格式化文件夹中每个工作簿中的每个工作表。然后在我的 python 脚本中,我将首先创建我想要创建的所有 excel 文件,不带任何格式,然后触发 python 将此 xlsm 文件中的宏调用到 运行 遍历所有工作簿和每张工作表,以我想要的方式格式化每个工作簿,并使用 Excel 的格式而不是 python 的 excel 格式。