表計算ソフトExcelそのものを操作するPythonの外部ライブラリxlwingsでは、Rangeオブジェクトのget_address()メソッドのほうが、addressプロパティより高機能であることを記事にしました。
xlwingsが内部で使っているライブラリpywin32comでも、同様のプロパティ・メソッドがあります。
Range.Addressプロパティでセル番地を取得するサンプルスクリプト
何らかのExcelブックが開かれている状態で、以下のスクリプトを実行してください。
xl_app = win32.GetObject(Class='Excel.Application')
rng = xl_app.ActiveWindow.RangeSelectionprint(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の選択されているセルのセル番地が相対参照で出力できます。
xl_app = win32.GetObject(Class='Excel.Application')
rng = xl_app.ActiveWindow.RangeSelectionprint(rng.GetAddress(False, False))
最終更新日時:2023-03-23 04:53
- Newer:Jupyter Notebookのデフォルトディレクトリを変更する
- Older:xlwingsでシートの枚数を取得する
Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientでExcelのセル番地を相対参照で取得する-Range.GetAddress()