Python XlsxWriter - VBA 宏


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

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

如下图所示,进入“查看→宏→录制宏”,单击录制宏按钮,为宏指定合适的名称并执行要录制的所需操作。步骤完成后停止录制。分配所需的快捷方式,以便按下时可以重复录制的操作。

录制宏

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

宏名称

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

应用程序的 Visual Basic

确认宏完美运行。按CTL+Shift+M,弹出消息框。使用.xlsm扩展名保存此文件。它内部包含vbaproject.bin,一个二进制 OLE COM 容器。要从 Excel 宏文件中提取它,请使用vba_extract.py实用程序。

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

例子

现在可以使用add_vba_project()方法将此 vbaProject.bin 文件添加到 XlsxWriter 工作簿中。在此工作表上,将按钮对象放置在 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项目