xlwings与其他Office应用

除了Excel,从Office的其他应用(如Outlook, Access等)中,也可以在VBA中通过xlwings调用Python函数。

注解

This is an experimental feature and may be removed in the future. Currently, this functionality is only available on Windows for UDFs. The RunPython functionality is currently not supported.

如何使用

  1. 通常,先写好Python函数并导入到Excel中(参考 User Defined Functions (UDFs))。

  2. Alt-F11 组合键进入VBA编辑器,在VBA模块 xlwings_udfs 上点击右键,并选择 Export File(导出文件)... 。把 xlwings_udfs.bas 文件存到某个位置。

  3. 切换到其他的Office应用,比如微软的Access,并再通过 Alt-F11 组合键进入VBA编辑器。 在VBA Project区域点击右键、选择 Import File(导入文件)..., 然后选择上面步骤中导出的文件。 导入之后,在代码的第一行中把原代码的 Microsoft Excel 替换成现在的应用名称,如 Microsoft AccessMicrosoft Outlook 。替换好之后,代码的第一行显示为: #Const App = "Microsoft Access"

  4. 现在导入独立的xlwings VBA模块(xlwings.bas)。这个模块中xlwings安装目录下。可以通过下列命令找出这个目录:

    >>> import xlwings as xw
    >>> xlwings.__path__
    

    最后和上面步骤一样,把代码第一行的应用名称修改为正在使用的应用名称。 现在就可以从VBA中调用(导入的)Python函数了。

配置

其他Office应用同样使用Excel功能区加载项设置过的全局配置。如果需要,你可以用目录级的配置文件(例如,可以放在Access或Word文件的相同目录里),也可以把路径直接写入VBA独立模块的配置文件中(例如,建议在使用Outlook这样做,因为它不像其他office应用,它的文件概念和其他应用不一样)。注意: 对于没有文件概念的Office应用,需要确认 PYTHONPATH 指向包含Pyhon源文件的目录。关于不同配置的细节,参考 Config