OneDriveおよびSharePoint#

v0.27.4以降、xlwingsは、ローカルと同期するOneDrive、OneDrive for Business、SharePoint上のファイルと連携できます。いくつかの機能はすぐに使えますが、 xlwings.conf ファイル ( User Config 参照) またはワークブックの xlwings.conf シート ( Workbook Config 参照) での設定が必要な機能もあります。

注釈

このドキュメントは、ローカルフォルダーと同期するOneDriveとSharePointのファイルを対象としています。つまり、ExcelファイルとPythonファイルの両方が、ファイルエクスプローラー/ファインダーで緑色のチェックマークがついた状態でなければなりません---雲アイコンは使えません。なお、Web上のExcelでxlwingsを動作させるためのドキュメントは xlwings Server: VBA, Office Scripts, Google Apps Script を参照してください。

問題が発生した場合の簡単な回避策は以下:

  • ADD_WORKBOOK_TO_PYTHONPATH の設定(リボン上のチェックボックスか xlwings.conf シートの設定)を無効にする

  • Pythonソース ファイルのディレクトリを PYTHONPATH に追加する---ここでもリボンか xlwings.conf シートで設定します。

PROバージョンであれば、これらの問題を回避するために、代わりにコードを埋め込むことも可能です。

もう少し柔軟性を持たせたい場合は、以下の解決策に従ってください。

OneDrive(個人用)#

WindowsとmacOSでは、デフォルトの設定がそのまま機能します。エラーメッセージが表示された場合は、OneDriveのローカル ルート ディレクトリへの正しいパスを指定して、次の設定を追加してください。可能であれば、 (例に示すように)環境変数を使用して、設定が同じの異なるユーザー間で設定が機能するようにします:

  • Windows (Example):

    ONEDRIVE_CONSUMER_WIN

    %USERPROFILE%\OneDrive

  • macOS (Example):

    ONEDRIVE_CONSUMER_MAC

    $HOME/OneDrive

OneDrive for Business#

  • Windows: デフォルトの設定で動作します。エラーメッセージが表示された場合は、OneDrive for Businessのローカル ルート ディレクトリへの正しいパスを指定して、次の設定を追加してください。可能であれば、 (例に示すように)環境変数を使用して、設定が同じの異なるユーザー間で設定が機能するようにします:

    ONEDRIVE_COMMERCIAL_WIN

    %USERPROFILE%\OneDrive - My Company LLC

  • macOS: macOSでは 常に 、OneDrive for Businessのローカル ルート ディレクトリへの正しいパスを指定して、次の設定を追加してください。可能であれば、 (例に示すように)環境変数を使用して、設定が同じの異なるユーザー間で設定が機能するようにします:

    ONEDRIVE_COMMERCIAL_MAC

    $HOME/OneDrive - My Company LLC

SharePoint(オンラインおよびオンプレミス)#

Windowsでは、 ときどき SharePointのローカル ルート フォルダの位置を、OneDriveの環境変数から取得できます。しかし、ほとんどの場合は以下の設定を行う必要があります(macOSでは必須です):

  • Windows:

    SHAREPOINT_WIN

    %USERPROFILE%\My Company LLC

  • macOS:

    SHAREPOINT_MAC

    $HOME/My Company LLC

実装の詳細と制限事項#

xlwingsの機能の多くは、ワークブックの FullName プロパティ(VBA/COM経由)に依存しており、このプロパティはファイルのローカル パスを返します。ただし、ファイルが、 自動保存が有効化された OneDrive、OneDrive for Business、またはSharePointに保存されている場合には、代わりにURLが返されます。

OneDriveとOneDrive for BusinessのURLは、対応するローカル ファイルにかなり簡単に変換できます。ただし、ローカル ドライブのルート ディレクトリを知る必要がありますが、Windowsでは、通常、OneDriveの環境変数から取得できます。macOSではこれらが存在しないため、OneDriveのルート ディレクトリを取得する必要があります。Windowsでは、SharePointのルートディレクトリも環境変数から得られることがありますが、保証されているわけではありません。macOSの場合は、常に取得する必要があります。

SharePointでは残念ながら、ローカルにドライブを好きなようにマッピングできるため、これらのファイルのローカルパスを確実に取得する方法はありません。Windowsでは、xlwingsはまずレジストリをチェックして、マッピングを確認します。これがうまくいかない場合、xlwingsはデフォルト設定でローカルパスがマッピングされているかどうかをチェックし、ファイルが見つからない場合は、SharePoint上の既存のすべてのローカル ファイルをチェックします。もし、同じ名前のファイルが見つかれば、それを使用します。しかし、同じ名前のものが複数見つかった場合は、エラー メッセージが表示されます。この場合、ローカルと同期するすべてのSharePointファイルで一意なファイル名に変更するか、 SHAREPOINT_WIN/MAC の設定を変更してルート フォルダーだけでなく、追加のフォルダーを含むようにします。例として、ローカルのSharePointに以下のようなファイル構造があるとします:

My Company LLC/
└── sitename1/
    └── myfile.xlsx
└── sitename2 - Documents/
    └── myfile.xlsx

この場合、いずれかのファイル名を変更するか、ルートフォルダよりも下位のパス(できれば xlwings.conf シートで)を追加することで解決します:

SHAREPOINT_WIN

%USERPROFILE%/My Company LLC/sitename2 - Documents