「xlwings 最小化」
といった検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。
Excel自体を操作するPythonの外部ライブラリ「xlwings(エクセルウィングス)」を使って、Excelのウィンドウを最小化するには、どのようなコードを書けばいいのかを調べていらしたのでしょうか。
xlwingsにwindow_stateは実装されていない
Excel VBAの場合、アプリケーションとしてのExcel自体を表すApplicationオブジェクトや、Excelのウィンドウを表すWindowオブジェクトに、ウィンドウの状態を取得・設定するためのWindowStateプロパティが用意されています。
xlwingsの名前付けルールに従うと、Excel VBAのWindowStateプロパティは「window_state」として定義されているはずです。
しかし、xlwingsのmain.pyモジュールで「window_state」を検索しても、ヒットしません。
xlwingsに、Excel VBAのWindowStateプロパティをラップしたプロパティ等は実装されていないということです。
こういう場合は、apiプロパティを経由して、Excel VBA的なコードでExcelを操作しましょう。
App.apiを経由してExcelを最小化するサンプルスクリプト
Excelファイルが開かれている状態で、以下のスクリプトを実行すると、アクティブなブックのウィンドウが最小化されます。
from xlwings.constants import WindowState
bk = xw.books.active
app = bk.app
xlwingsには、Excel VBAのWindowオブジェクトに相当するオブジェクトは定義されていません。
ですから、Excel.ApplicationのラッパーであるAppオブジェクトを使用するしかありません。
BookオブジェクトのappプロパティでAppオブジェクトを取得して、
app = bk.app
App.apiプロパティを経由して、WindowStateプロパティに定数WindowState.xlMinimizedを設定して
app.api.WindowState = WindowState.xlMinimized
ウィンドウを最小化しています。
xlMinimizedはconstants.pyに定義
WindowStateプロパティに関する定数は、constants.pyモジュールに
class WindowState:
xlMaximized = -4137 # from enum XlWindowState
xlMinimized = -4140 # from enum XlWindowState
xlNormal = -4143 # from enum XlWindowState
と定義されていますから、事前に
from xlwings.constants import WindowState
のようにインポートを行っています。
Excelのウィンドウを最大化したい場合
Excelのウィンドウを最大化したい場合は、上記スクリプトの
app.api.WindowState = WindowState.xlMinimized
を、
app.api.WindowState = WindowState.xlMaximized
にすればOKです。
- Newer:VBAで今日が月曜日か判定する
- Older:Excel VBAで最大化または最小化してブックを開きたい
Home » Python » xlwingsの使い方 » xlwingsでExcelを最小化または最大化する