Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientを使ってPythonで起動済みExcelを操作する

pywin32・win32com.clientを使ってPythonで起動済みExcelを操作する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2007 ビルド13029.20308 Microsoft Store)+ Python 3.8.3 + pywin32 228

pywin32・win32com.clientを使って、Excelを起動するコードをご紹介しました。

もちろん、起動済みのExcelを操作することも可能です。

VBA・VBScriptで起動済Excelを操作するサンプル

本題であるPythonの前に、VBAやVBScriptのコードを見ておきましょう。

Excelが起動している状態で、以下のようなVBAやVBScriptのコードを実行すると、アクティブなシートのA1セルに「hello, excel!」と入力され、Excelのウィンドウが、画面の左端から10ピクセル上端から10ピクセルの位置に移動します。

Dim xl
Set xl = GetObject(Class:="Excel.Application")
xl.Range("A1").Value = "hello, excel!"
xl.Windows(1).Left = 10
xl.Windows(1).Top = 10

旧来のVB系言語の場合、GetObject関数の引数Classに文字列「Excel.Application」を指定すると、起動済みのExcelへの参照を取得できます。

参照を取得した後の、

xl.Range("A1").Value = "hello, excel!"
xl.Windows(1).Left = 10
xl.Windows(1).Top = 10

の部分は、Excel VBAの、

Range("A1").Value = "hello, excel!"
Windows(1).Left = 10
Windows(1).Top = 10

と同じです。

pywin32・win32com.clientを使ってPythonで起動済Excelを操作するサンプル

pywin32・win32com.clientを使えば、上記のコードとよく似たコードで起動済みExcelを操作できます。

import win32com.client
xl = win32com.client.GetObject(Class="Excel.Application")
xl.Range("A1").Value = "hello, world!"
xl.Windows(1).Top = 10
xl.Windows(1).Left = 10

win32com.clientモジュールのGetObject関数で、起動済みのCOMアプリケーションへの参照を取得でき、

xl = win32com.client.GetObject(Class="Excel.Application")

で、Excelを取得できます。

win32com.clientモジュールのGetObject関数は、先ほどのVBA・VBScriptのGetObject関数とやってることは同じです。

win32com.client.GetObjectのDocstringには、以下の記述があります。

Mimic VB's GetObject() function.

ob = GetObject(Class = "ProgID") or GetObject(Class = clsid) will
connect to an already running instance of the COM object.

ob = GetObject(r"clalah oo.xls") (aka the COM moniker syntax)
will return a ready to use Python wrapping of the required COM object.

Note: You must specifiy one or the other of these arguments. I know
this isn't pretty, but it is what VB does. Blech. If you don't
I'll throw ValueError at you. :)

VBA・VBScriptの場合、名前付き引数への値指定は「:=」を使いますが、

Set xl = GetObject(Class:="Excel.Application")

Pythonですから「=」です。

xl = win32com.client.GetObject(Class="Excel.Application")

参照を取得した後のコード、

xl.Range("A1").Value = "hello, world!"
xl.Windows(1).Top = 10
xl.Windows(1).Left = 10

は、VBA・VBScriptの場合と、まったく同じです。

最終更新日時:2023-04-19 23:45

[スポンサードリンク]

Home » Python » pywin32・win32comの使い方 » pywin32・win32com.clientを使ってPythonで起動済みExcelを操作する

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

検索


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

.