はじめに
これは xlwings 0.11.5 本家xlwings.Apps 本家xlwings.App の簡易日本語リファレンスである。
xlwings.Apps
Apps は全アプリ実行環境(Excelのインスタンス)を管理する。
VBA に相当するものはない?
import xlwings as xw
apps = xw.apps # アプリ実行環境管理インスタンスを返す
apps.active # アクティブAppインスタンスを返す VBA:ActiveWindow
apps.add() # 新規Appインスタンス作成し返す
apps.count # Appインスタンス数を返す
apps[0] # Appインスタンスを返す
apps(1) # Appインスタンスを返す
xlwings.App
App は単一のアプリ実行環境(Excelのインスタンス)を管理する。
VBA:Application に相当する。
app = xw.App(visible=None, add_book=True) # 新規アプリ実行環境を作成する
app.activate(steal_focus=False) # アクティブ実行環境にする
app.calculate() # 計算を行う
app.calculation # RW 計算動作を設定する 'manual' 'automatic' 'semiautomatic'
app.display_alerts # RW 警告表示するか設定する
app.macro('マクロ名') # VBAマクロ操作用のインスタンスを返す
app.selection # 選択している Range インスタンスを返す VBA:ActiveCell
app.books # xw.Books() を返す
app.range(...) # xw.Range(...) を返す
app.screen_updating # RW 描画更新を行うか設定する
app.visible # RW 表示非表示 True False
app.hwnd # HWND を返す
app.pid # PID を返す
app.kill() # アプリ実行環境を強制終了させる
app.quit() # アプリ実行環境を終了させる
app.version # Excel のバージョンを返す
app.api # ネイティブインスタンスを返す
マクロ呼び出し
App, Sheet, Book, Range は api プロパティーでネイティブインスタンスをマクロ引数にする事が出来る。
bk = xw.Book()
fn = app.macro('Func') # 厳密に指定する場合は 'ブック名!シート名.関数名' となるハズ
fn(bk.api, 'a1')
Function Func(bk as Workbook, cellname as String)
...
End Function
その他
Excel 2010 において同じ xw.App インスタンスへの操作を繰り返すと OLE 操作が正しく行えないケースが発生した。 長時間安定動作が必要なケースではインスタンスを長く使わない事。