Home » Python » xlwingsの使い方 » xlwingsでExcelを最小化または最大化する

xlwingsでExcelを最小化または最大化する

動作検証バージョン:Windows 11 Home + Python 3.10.6(64-bit) + xlwings 0.30.9 + 64bit Excel(バージョン2308 ビルド16731.20000 クイック実行)

「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ファイルが開かれている状態で、以下のスクリプトを実行すると、アクティブなブックのウィンドウが最小化されます。

import xlwings as xw
from xlwings.constants import WindowState

bk = xw.books.active
app = bk.app

app.api.WindowState = WindowState.xlMinimized

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です。

[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsでExcelを最小化または最大化する

「xlwingsの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.