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 来编辑宏。
将显示 VBA 编辑器。 删除所有Excel生成的步骤,增加弹出消息框的语句。
确认宏可以完美运行。 按 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 的启用宏的工作簿。 打开它并单击按钮。 它将导致弹出消息框,如图所示。