pywin32のwin32com.clientモジュールを使って、Pythonから起動済みのExcelを操作するコードをご紹介しました。
同じようにWordも、VBA的なコードで操作できます。
pywin32を使ってPythonで起動済Wordを操作するサンプル
Wordでまっさらな新規文書が1つだけ開かれている状態で、以下のコードをIDLEのShellウィンドウなどから、1行ずつ実行してみてください。
wd = win32com.client.GetObject(Class="Word.Application")
doc = wd.Documents(1)
doc.Range(0, 0).Text = "hello, word!"
win.Left = 0
win.Top = 0
途中までは何の変化もありませんが、
doc.Range(0, 0).Text = "hello, word!"
を実行すると、まっさらなWordファイルの先頭に、文字列「hello, word!」が書き込まれます。
また、
win.Left = 0
を実行するとWordのウィンドウが画面の左端に移動し、つづく、
win.Top = 0
の実行で上端へ移動します。
00:21 モジュールのimport
00:32 Wordへの参照の取得
01:10 Documentオブジェクトの取得
01:26 Word文書への文字列の入力
02:07 Windowオブジェクトの取得
02:22 Window.Leftプロパティの設定
02:38 Window.Top プロパティの設定
「hello, word!」を書き込むような処理は、Word等で作成された文書ファイルを操作するタイプのライブラリでも可能ですが、その様子をリアルに見られるのは、COMを操作するタイプのライブラリならではの挙動です。Wordのウィンドウ移動など、アプリケーションとしてのWordの操作は、文書ファイルを操作するライブラリでは、できません。
VBA・VBScriptでの同様のコード
上記のコードは、以下のようなVBA・VBScriptのコードと実質的に同じです。
Set wd = GetObject(Class:="Word.Application")
Dim doc
Set doc = wd.Documents(1)
doc.Range(0, 0).Text = "hello, word!"
Set win = wd.Windows(1)
win.Left = 0
win.Top = 0
Word.Applicationへの参照を取得する部分が、Pythonでは、
wd = win32com.client.GetObject(Class="Word.Application")
VBA・VBScriptの場合は、
Dim wd
Set wd = GetObject(Class:="Word.Application")
となっていて書き方が異なりますが、起動済みWordへの参照を取得したあとは、よく似たコードがつづきます。
COMアプリケーションであるWordを、Pythonから操作するのか、VBAやVBScriptから操作するのかの違いです。
Documents(1)の意味
Pythonの、
doc = wd.Documents(1)
VBA・VBScriptの、
Dim doc
Set doc = wd.Documents(1)
は、Wordライブラリの、グローバルメンバーのDocumentsプロパティを使って、
取得したDocumentsコレクションから、既定メンバーであるItemメソッドで1番目のDocumentオブジェクトを取得して、
変数docへ代入する、Word VBAでもよく見かけるコードです。
Document.Range(0, 0).Textの意味
つづく、
doc.Range(0, 0).Text = "hello, word!"
は、Documentオブジェクトに用意されているRangeメソッドを使って、
Word文書の先頭を表すRangeオブジェクトを取得して、Textプロパティで文字列を設定するコードです。
Windows(1)の意味
Pythonの、
win = wd.Windows(1)
VBA・VBScriptの、
Dim win
Set win = wd.Windows(1)
は、グローバルメンバーのWindowsプロパティを使って、
Wordの全ウィンドウを表すWindowsコレクションを取得して、既定メンバーであるItemメソッドで1番目のWindowオブジェクトを取得し、
変数winへ代入するコードです。
Window.Left・Window.Topの意味
そのあとの、
win.Left = 0
win.Top = 0
は、Windowオブジェクトに用意されているLeftプロパティ、
Topプロパティに、
いずれも「0」を設定することで、ウィンドウを左端・上端に移動するコードです。
最終更新日時:2020-09-01 07:20
Home » Python » pywin32・win32comの使い方 » pywin32を使ってPythonで起動済みWordを操作する