Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientでExcelのセル番地を相対参照で取得する-Range.GetAddress()

pywin32・win32com.clientでExcelのセル番地を相対参照で取得する-Range.GetAddress()

動作検証バージョン:64bit Windows 10 Pro + 64bit Excel+ Python 3.10.6 + pywin32 305

表計算ソフトExcelそのものを操作するPythonの外部ライブラリxlwingsでは、Rangeオブジェクトのget_address()メソッドのほうが、addressプロパティより高機能であることを記事にしました。

xlwingsが内部で使っているライブラリpywin32comでも、同様のプロパティ・メソッドがあります。

[スポンサードリンク]

Range.Addressプロパティでセル番地を取得するサンプルスクリプト

何らかのExcelブックが開かれている状態で、以下のスクリプトを実行してください。

import win32com.client as win32

xl_app = win32.GetObject(Class='Excel.Application')

rng = xl_app.ActiveWindow.RangeSelection
print(rng.Address)

Excel上の選択されているセルのセル番地が絶対参照形式で出力されます。

Range.Addressに引数は指定できない

Excel VBAの場合、Range.Addressプロパティに引数を指定でき、「rng.Address(False, False)」と指定すれば相対参照形式でセル番地を取得できます。

このExcel.Range.Addressプロパティの挙動から類推して、win32com.clientモジュールを使う場合に、

print(rng.Address(False, False))

を実行すれば、相対参照形式でセル番地を取得できると考えるのは自然なことだと思います。

しかし、「rng.Address(False, False)」を実行すると

TypeError: 'str' object is not callable

エラーが発生してしまいます。

「rng.Address」の戻り値はstr型で、呼び出すことはできないという主旨のメッセージが表示されています。

Range.GetAddress()メソッドなら引数を指定できる

で、どうするかというと、Range.GetAddress()メソッドを利用します。

以下のスクリプトを実行すると、起動済みExcelの選択されているセルのセル番地が相対参照で出力できます。

import win32com.client as win32

xl_app = win32.GetObject(Class='Excel.Application')

rng = xl_app.ActiveWindow.RangeSelection
print(rng.GetAddress(False, False))

最終更新日時:2023-03-23 04:53

[スポンサードリンク]

Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientでExcelのセル番地を相対参照で取得する-Range.GetAddress()

「pywin32・win32comの使い方」の記事一覧

検索


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

.