Python XlsxWriter VBA 宏


在 Excel 中,一个 macro 是记录的一系列步骤,可以使用快捷键重复任意次数。录制宏时执行的步骤被翻译成编程指令 VBA,它代表 Visual Basic for Applications。 VBA 是 Visual Basic 语言的子集,专门用于自动执行 MS Office 应用程序(如 Word、Excel、PowerPoint 等)中的任务。

MS Excel 的开发人员菜单中提供了录制宏的选项。如果没有看到此菜单,则必须通过转到“文件→选项→自定义”功能区屏幕来激活它。

如下图,点击录制宏按钮,进入“查看→宏→录制宏”,给宏起一个合适的名字,执行想要录制的动作。步骤结束后停止录制。分配所需的快捷方式,以便在按下时可以重复录制的操作。

Record Macro

要查看 VBA 代码,请通过查看→ZMacros→查看宏来编辑宏。从宏名称中选择宏,然后单击编辑。

Macro Name

将显示 VBA 编辑器。删除Excel生成的所有步骤并添加语句以弹出消息框。

Visual Basic Of Applications

确认宏工作正常。按 CTL+Shift+M 并弹出消息框。保存这个文件 .xlsm 扩大。它内部包含 vba项目.bin ,一个二进制 OLE COM 容器。要从 Excel 宏文件中提取它,请使用 vba_extract.py utility.

(xlsxenv) E:\xlsxenv>vba_extract.py test.xlsm
Extracted: vbaProject.bin

例子


这个 vbaProject.bin 文件现在可以使用 add_vba_project() 方法。在此工作表上,在 B3 单元格中放置一个按钮对象,并将其链接到我们已经创建的宏(即, macro1 )

import xlsxwriter

workbook = xlsxwriter.Workbook('testvba.xlsm')
worksheet = workbook.add_worksheet()

worksheet.set_column('A:A', 30)
workbook.add_vba_project('./vbaProject.bin')
worksheet.write('A3', 'Press the button to say Welcome.')
worksheet.insert_button(
    'B3',
    {
        'macro': 'macro1',
        'caption': 'Press Me',
        'width': 80, 'height': 30
    }
)
workbook.close()

输出


执行上述代码时,将创建名为 testvba.xlsm 的启用宏的工作簿。打开它并单击按钮。它将导致消息框弹出,如图所示。

VBA Project