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にインポートします( ユーザー定義関数 (UDFs) を参照)。

  2. Alt-F11 を押し、VBAエディターを開きます。そして xlwings_udfs VBAモジュールを右クリックし、 ファイルのエクスポート... を選択します。xlwings_udfs.bas ファイルを適当な場所に保存します。

  3. 他のOfficeアプリ(e.g. Microsoft Access)に切り替え、 Alt-F11 を押してVBAエディターを開きます。VBA Projectで右クリックし、 ファイルのインポート... から先ほどエクスポートしたファイルを選択します。インポート後に、1行目のアプリの名前を今開いているアプリの名前に変更します、 i.e. Microsoft Access または Microsoft Outlook 等。1行目は次のようになります: #Const App = "Microsoft Access"

  4. 次に、スタンドアローンのxlwings VBAモジュール (xlwings.bas)をインポートします。このファイルはxlwingsのインストール先フォルダーにあります。インストール先は次のようにすればわかます:

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

    最後に、ステップ3と同様にxlwings VBAモジュールの1行目にあるアプリの名前を変更します。これでVBAからPython関数を呼び出せるようになりました。

設定

他のOfficeアプリは、Excelのリボン アドインで設定したグローバル設定に従います。また、ディレクトリー設定ファイルも使えます(e.g. ディレクトリー設定ファイルを使用しているAccessまたはWordファイルと同じフォルダーに置きます)。あるいは、設定ファイルへのパスをスタンドアローンVBAモジュールの中(e.g. GetDirectoryConfigFilePath 関数等)にハードコードすることもできます(e.g. Outlookのファイルの概念は他のOfficeアプリとは異なっているため、この方法を推奨します)。注意: ファイル概念の無いOfficeアプリに対しては、 PYTHONPATH にPythonのソース ファイルがあるフォルダーを設定する必要があります。その他の設定についての詳細は、 Config をご覧ください。