(pywin32)でWordを操作する[1] - Wordオブジェクトモデル


概要

pywin32(win32com)を利用してPythonでWordを操作します。

この記事ではWordオブジェクトモデルを紹介して、次回に具体的なコードを示します。

Wordオブジェクトモデル

基本部分を抜粋して図/表にしています。

  • 1つの文/単語/文字はRangeオブジェクト
  • ParagraphはRangeオブジェクトではない

オブジェクト 説明 リンク
Application Wordアプリを表すオブジェクト msdn
Documents Documentのコレクション msdn
Document 1つの文書を表すオブジェクト msdn
Paragraphs Paragraphのコレクション msdn
Paragraph 1つの段落を表すオブジェクト
段落に含まれる文書を表すRangeを返すプロパティを持つ
msdn
Sentences 1つの文を表すRangeのコレクション msdn
Words 1つの単語を表すRangeのコレクション msdn
Characters 1つの文字を表すRangeのコレクション msdn
Range 隣接する領域を表すオブジェクト msdn


  • Sentences(n)で取り出されるのは1つの文を表す「Rangeオブジェクト」-->Sentences(n).Textでテキスト取得
  • Paragraphs(n)で取り出されるのは「Paragraphオブジェクト」-->Rangeプロパティを使って、Rangeオブジェクトを取得したあと、Paragraphs(n).Range.Textでテキスト取得

PlantUMLソース

Wordオブジェクトモデルは、PlantUMLで作成しています。

テキストでUMLを書く - Qiita

下記URLからブラウザだけで描画できます。
編集画面 http://plantuml.com/plantuml/

とのことなので、PlantUML Web Serverもおいておきます。

word_obj.wsd
@startuml

hide empty members
hide circle
skinparam shadowing false

Application -d- Documents
Documents o-r- Document

Document -d- Paragraphs
Document -d- Sentences
Document -d- Words
Document -d- Characters

Paragraphs o-d- Paragraph

Sentences  o-d- Range
Words      o-d- Range
Characters o-d- Range
Paragraph  -d- Range

Paragraphs -r[hidden]- Sentences
Sentences -r[hidden]- Words
Words -r[hidden]- Characters

@enduml

関連

Python(pywin32)でWordを操作する[1] - Wordオブジェクトモデル
Python(pywin32)でWordを操作する[2] - Wordを起動/終了する
Python(pywin32)でWordを操作する[3] - 新規ドキュメント作成
Python(pywin32)でWordを操作する[4] - 文字列を入力/取得/削除する
Python(pywin32)でWordを操作する[5] - ドキュメントをファイルに保存する、Wordのオプション変更
Python(pywin32)でWordを操作する[6] - 特定のタイトルが付いているウィンドウの操作
Python(pywin32)でWordを操作する[7] - 既存文書を開く/閉じる(Documents.Open(), Document.Close())
Python(pywin32)でWordを操作する[8] - 段落単位の文字列取得, 統計(ページ数, 段落数,etc)取得

参考