ブックの参照

アクティブシートであれば、bookオブジェクトを使わずにデータの読み込み/書き込みができます:

>>> import xlwings as xw
>>> xw.Range('A1').value = 'something'

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']

Note that you usually should use App as a context manager as this will make sure that the Excel instance is closed and cleaned up again properly:

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)

VBA上で RunPython を使用する場合、呼び出し元のブックを参照するには xw.Book.caller() を使用します。詳細は "RunPython" でPythonを呼び出す をご覧ください。 デバッグ のセクションを読めば、PythonのスクリプトファイルとExcelファイルを都度変更せずに、PythonとExcelでスクリプトを相互に呼び出す方法を理解できます。

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

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