¿Usar Python para escribir guiones VBA?

Esto puede ser un poco exagerado, pero existe la posibilidad de que se pueda usar un script de Python para crear VBA en MS Excel (o cualquier otro producto de MS Office que use VBA) usando pythonwin o cualquier otro módulo.

De donde surgió esta idea fue la incapacidad de los módulos openpyxl de los pitones para realizar el ingreso automático de columnas. El script que tengo crea un libro de trabajo en la memoria y, finalmente, lo guarda en el disco. Hay unas cuantas hojas y dentro de cada hoja, hay unas cuantas columnas. Me puse a pensar … ¿qué pasa si solo uso python para importar un script VBA (guardado en algún lugar en el bloc de notas o algo así) en el editor de VBA en excel y luego ejecuto ese script desde python usando pythonwin?

Algo como:

Workbooks.worksheets.Columns("A:Z").EntireColumn.Autofit 

Antes de comentar, sí, he visto muchos ejemplos en Pythonic sobre cómo solucionar los ajustes automáticos de las columnas en openpyxl, pero veo algunas oportunidades interesantes que se pueden obtener al utilizar la funcionalidad que obtiene de VBA que puede no estar disponible en Python.

De todos modos, busqué un poco en internet y no vi nada que indicara que puedo, así que pensé en preguntar.

Saludos, Mike

Sí, es posible. Puede comenzar a ver cómo puede generar una macro de VBA desde VB en ese Microsoft KB .

El siguiente código de Python ilustra cómo puedes hacer lo mismo; es un puerto básico de la primera mitad del código de ejemplo de KB:

 import win32com.client as win32 import comtypes, comtypes.client xl = win32.gencache.EnsureDispatch('Excel.Application') xl.Visible = True ss = xl.Workbooks.Add() sh = ss.ActiveSheet xlmodule = ss.VBProject.VBComponents.Add(1) # vbext_ct_StdModule sCode = '''sub VBAMacro() msgbox "VBA Macro called" end sub''' xlmodule.CodeModule.AddFromString(sCode) 

Puede ver las macros de Excel automatizadas visibles y verá el VBAMacro definido anteriormente.