Python Xlsxwriter 简明教程

Python XlsxWriter - VBA Macro

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

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

如下图所示,通过转到“视图→宏→录制宏”单击录制宏按钮,为宏提供一个合适的名称并执行要记录的所需操作。在步骤结束之后,停止录制。分配一个所需的快捷键,以便可以重复录制的操作并按下该快捷键。

record macro

若要查看 VBA 代码,可以通过转到“视图→宏→查看宏”来编辑宏。从宏名称中选择宏并单击“编辑”。

macro name

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

visual basic of applications

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

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

Example

现在可以使用 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()

Output

当执行以上代码时,将创建名为 testvba.xlsm 的已启用宏的工作簿。打开它,然后单击按钮。它将导致弹出框按如所示。

vba project