这可能有点延伸,但是有可能使用pythonwin或任何其他模块使用python脚本在MS Excel(或使用VBA的任何其他MS Office产品)中创建VBA。
这个想法来自于pythons openpyxl模块无法进行列自动宽度。我在脚本中创建了一个工作簿,最终将其保存到光盘中。每张纸都有相当多的纸张,有很多列。我开始思考......如果我只是使用python将一个VBA脚本(保存在记事本或其他东西中)导入到excel中的VBA编辑器中,然后使用pythonwin从python运行该脚本。
类似的东西:
Workbooks.worksheets.Columns("A:Z").EntireColumn.Autofit
在您发表评论之前,是的,我已经看到了很多关于如何在openpyxl中解决自动调整列的pythonic示例,但是我看到了一些有趣的机会可以利用从VBA获得的功能,可能在python中不可用
无论如何,我在互联网上挖了一下,我没有看到任何表明我可以的东西,所以我想我会问。
干杯, 麦克
答案 0 :(得分:5)
是的,有可能。您可以开始查看如何在that Microsoft KB上从VB生成VBA宏。
下面的Python代码说明了如何做到这一点;它是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)
您可以查看可见的自动Excel宏,您将看到上面定义的VBAMacro
。