#用python在excel中写入宏并运行
#作者:冯德平(山野雪人)
import win32com.client as win32

xl = win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
xlbook = xl.Workbooks.Add("aaaa")
#不写后缀名,则打开文件aaaa.xlsx,也可以写后缀名,如:abc.xlsm
#以上的语句复制文件aaaa.xlsx,并重命名为:aaaa1(注意:没有后缀名)
#如果不写文件名,则重新创建一个excel文件:
#xlbook = xl.Workbooks.Add()
xlmodule = xlbook.VBProject.VBComponents.Add(1)

xlmodule.Name = '我的模块'     #创建模块
#在模块中写入宏:
code = '''sub MyVBA()
    sheets(1).select
    range("A1")=55
end sub'''
xlmodule.CodeModule.AddFromString(code)
#运行宏:
xlbook.Application.Run('我的模块.MyVBA')

'''
运行后,你会看到加和一个名为“我的模块”的模块,模块中写入了一个宏,同时这个宏
也运行了,在A1单元格写入了55 。
如果发生错误:
pywintypes.com_error: (-2147352567, '发生意外。',
(0, 'Microsoft Excel','不信任到 Visual Basic Project
的程序连接\n', 'xlmain11.chm', 0, -2146827284),None)
错误原因:
Excel对于宏执行的安全级别设置的太高了,把它降低,则就不会出现这样的错误了。
具体解决过程如下:
打开Excel\文件\选项\信任中心\信任中心设置\宏设置\除了启用所有宏选中外,
还要将“信任对于Visiual Basic 工程对象模型的访问”选中,按确定即可。

'''