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

pywin32を使ってPythonで起動済みWordを操作する

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

pywin32のwin32com.clientモジュールを使って、Pythonから起動済みのExcelを操作するコードをご紹介しました。

同じようにWordも、VBA的なコードで操作できます。

[スポンサードリンク]

pywin32を使ってPythonで起動済Wordを操作するサンプル

Wordでまっさらな新規文書が1つだけ開かれている状態で、以下のコードをIDLEのShellウィンドウなどから、1行ずつ実行してみてください。

import win32com.client
wd = win32com.client.GetObject(Class="Word.Application")

doc = wd.Documents(1)
doc.Range(0, 0).Text = "hello, word!"

win = wd.Windows(1)
win.Left = 0
win.Top = 0

途中までは何の変化もありませんが、
  doc.Range(0, 0).Text = "hello, word!"
を実行すると、まっさらなWordファイルの先頭に、文字列「hello, word!」が書き込まれます。

また、
  win.Left = 0
を実行するとWordのウィンドウが画面の左端に移動し、つづく、
  win.Top = 0
の実行で上端へ移動します。

YouTube「pywin32を使ってPythonで起動済みWordを操作する」

00:00 はじめに
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のコードと実質的に同じです。

Dim wd
Set wd = GetObject(Class:="Word.Application")

Dim doc
Set doc = wd.Documents(1)
doc.Range(0, 0).Text = "hello, word!"

Dim win
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を操作する

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

検索


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

.