Python XlsxWriter - VBA 宏

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

录制宏的选项位于 MS Excel 的"开发人员"菜单中。 如果看不到此菜单,则必须通过转到"文件→选项→自定义"功能区屏幕来激活它。

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

录制宏

要查看 VBA 代码,请通过 View→ZMacros→View Macros. 从宏名称中选择宏并单击 Edit 来编辑宏。

Macro Name

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

Visual Basic 应用程序

确认宏可以完美运行。 按 CTRL+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 Project