ブックの参照#

PythonからExcel#

xw.Book を使えば、最も簡単にブックに接続できます: xw.Book は接続先のブックを開いているかどうかを全てのExcelインスタンスに対して確認し、もし複数のExcelインスタンスが接続先のブックを同時に開いていればエラーを返します。アクティブなExcelインスタンスのブックに接続するには、 xw.books を使います(コメント部分は特定のインスタンスを参照する方法):

>>> app = xw.App()  # or something like xw.apps[10559] for existing apps, get the available PIDs via xw.apps.keys()
>>> app.books['Book1']

注意: App はコンテキスト マネージャーで使用するようにしてください。これにより、確実かつ適切にExcelインスタンスを閉じてクリーンアップできます。

with xw.App() as app:
    book = app.books['Book1']

xw.Book

xw.books

新規ブック

xw.Book()

xw.books.add()

保存されていないブック

xw.Book('Book1')

xw.books['Book1']

(完全な)名前でブックを指定

xw.Book(r'C:/path/to/file.xlsx')

xw.books.open(r'C:/path/to/file.xlsx')

注釈

Windowsでファイル パスを指定するには、文字列の先頭に r を付加したraw文字列か、二重バックスラッシュを使用( C:\\path\\to\\file.xlsx)するようにしてください。

ExcelからPython (RunPython)#

To reference the calling book when using RunPython in VBA, use xw.Book.caller(), see "RunPython" でPythonを呼び出す. Check out the section about デバッグ to see how you can call a script from both sides, Python and Excel, without the need to constantly change between xw.Book.caller() and one of the methods explained above.

ユーザー定義関数(User Defined Functions, UDFs)#

RunPython とは異なり、UDFの場合は xw.Book.caller() は必要ではありません。詳細は ユーザー定義関数 (UDFs) をご覧ください。通常は、UDFを呼び出しているrangeオブジェクトを表す引数 caller を使用することになるでしょう。