Mik*_*ike 6 python vba pywin32 excel-vba autosize
这可能有点延伸,但是有可能使用pythonwin或任何其他模块可以使用python脚本在MS Excel(或使用VBA的任何其他MS Office产品)中创建VBA.
这个想法来自于蟒蛇openpyxl模块无法进行列自动宽度.我在脚本中创建了一个工作簿,最终将其保存到光盘中.每张纸都有相当多的纸张,有很多列.我开始思考......如果我只是使用python将一个VBA脚本(保存在记事本中的某个地方)导入到excel中的VBA编辑器中,然后使用pythonwin从python运行该脚本.
就像是:
Workbooks.worksheets.Columns("A:Z").EntireColumn.Autofit
Run Code Online (Sandbox Code Playgroud)
在您发表评论之前,是的,我已经看到了很多关于如何解决openpyxl中自动调整列的pythonic示例,但我看到了一些有趣的机会,可以利用从VBA中获得的功能,可能在python中不可用.
无论如何,我在互联网上挖了一下,我没有看到任何表明我可以的东西,所以我想我会问.
干杯,迈克
对的,这是可能的.您可以开始查看如何从该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)
Run Code Online (Sandbox Code Playgroud)
您可以查看可见的自动Excel宏,您将看到VBAMacro上面定义的内容.