xlwings with other Office Apps¶
xlwings can also be used to call Python functions from VBA within Office apps other than Excel (like Outlook, Access etc.).
Note
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.
How To¶
As usual, write your Python function and import it into Excel (see User Defined Functions (UDFs)).
Press
Alt-F11
to get into the VBA editor, then right-click on thexlwings_udfs
VBA module and selectExport File...
. Save thexlwings_udfs.bas
file somewhere.Switch into the other Office app, e.g. Microsoft Access and click again
Alt-F11
to get into the VBA editor. Right-click on the VBA Project andImport File...
, then select the file that you exported in the previous step. Once imported, replace the app name in the first line to the one that you are using, i.e.Microsoft Access
orMicrosoft Outlook
etc. so that the first line then reads:#Const App = "Microsoft Access"
Now import the standalone xlwings VBA module (
xlwings.bas
). You can find it in your xlwings installation folder. To know where that is, do:>>> import xlwings as xw >>> xlwings.__path__
And finally do the same as in the previous step and replace the App name in the first line with the name of the corresponding app that you are using. You are now able to call the Python function from VBA.
Config¶
The other Office apps will use the same global config file as you are editing via the Excel ribbon add-in. When it makes sense,
you’ll be able to use the directory config file (e.g. you can put it next to your Access or Word file) or you can hardcode
the path to the config file in the VBA standalone module, e.g. in the function GetDirectoryConfigFilePath
(e.g. suggested when using Outlook that doesn’t really have the same concept of files like the other Office apps).
NOTE: For Office apps without file concept, you need to make sure that the PYTHONPATH
points to the directory with the
Python source file.
For details on the different config options, see Config.