エクセルVBAでWord文書を開いてページ数や文字数などのいろんな情報を取得する

★気に入ったらシェアをお願いします!


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAでWord文書を操作する方法についてシリーズでお伝えしております。

前回はこちらの記事。

エクセルVBAでWordを操作して文書を操作する準備と最も簡単なプログラム
エクセルVBAでWord文書を操作する方法について、最初の一歩からお伝えするということで、まずはエクセルVBAでWord文書を操作するために必要な準備と、最も簡単なプログラムについてお伝えします。

エクセルVBAでWordアプリケーションを起動する準備とその方法についてお伝えしました。

今回は、起動したWordアプリケーション上にWord文書を開いて、ページ数や文字数などのいろいろな情報を取得してみたいと思います。

では、行ってみましょう!

前回のおさらい

前回作成したプログラムはこちら。

Wordアプリケーションのオブジェクトを生成して、表示して、閉じて、破棄するというだけのプログラムです。

これだけでは何の意味もありませんが、このプログラムをベースとして、7行目のMsgBox関数の代わりに、いろいろな処理を入れていけばよろしいということになります。

エクセルVBAでWord文書を開く

では、Word文書を開いていきましょう。

Word文書を開くには、DocumentsコレクションのOpenメソッドを使います。

それで、開いたWord文書を変数にセットして扱いたいので、以下のようにSetステートメントでセットします。

Set 変数 = Documentsコレクション.Open(ファイル名)

ファイル名はフルパスで指定する必要があります。

で、Documentsコレクションはどうやって取得するかというと、Word.ApplicationオブジェクトのDocumentsプロパティで取得できます。

Wordアプリケーションオブジェクト.Documentsプロパティ

Word文書を開くプログラム

例えば、現在のエクセルマクロを記述しているファイルと同階層の、「原稿(1章).docx」というWord文書を開くのであれば、以下プログラムで開くことができます。

7~10行目が今回追加した部分ですね。

実行すると、Stopステートメントで中断しているところで、以下のようにWord文書が開きます。

エクセルVBAでWord文書を開く

Word文書の情報を取得する

では、Word文書のいろいろな情報を取得してみましょう。

以下の情報を取得してみたいと思います。

  • ページ数
  • 段落数
  • 文数
  • 単語数
  • 文字数

プログラムはこちら!

実行すると、以下のように各情報を取得することができます。

エクセルVBAでWord文書の情報を取得

以下、解説をしていきますね。

Word文書のページ数を取得する

まず、ページ数ですが、これは実はちょっとわかりづらいです。

Word文書のページ数を取得するには、WordのRangeオブジェクト(またはSelectionオブジェクト)のInformationプロパティという、指定した範囲の情報を取得するプロパティを使います。

Rangeオブジェクト.Information(Type)

Typeに指定する定数で色々な情報を取得できるのですが、今回は文書のページ数なので「wdNumberOfPagesInDocument」を指定すればOKです。

総ページ数は、RangeオブジェクトよりもDocumentオブジェクトから取得できるのが自然かなぁと思うのですが、そうはなっていないみたいですね。

Word文書の段落数、文数、単語数、文字数を調べる

続いて、Word文書の段落数、文数、単語数、文字数を調べます。

Wordでは、これらの要素は全てオブジェクトとして存在していまして、Documentオブジェクトから、それぞれ対応したコレクションを取得するプロパティがあります。

Documentオブジェクト.Paragraphsプロパティ
Documentオブジェクト.Sentencesプロパティ
Documentオブジェクト.Wordsプロパティ
Documentオブジェクト.Charactersプロパティ

これらのコレクションを取得して、その要素数をCountプロパティでカウントすればOKということになりますね。

ちなみに、日本語の文書の場合、単語数はあまり正確ではないようですので、参考としてどうぞ。

まとめ

以上、エクセルVBAでWord文書を開いて、ページ数、段落数、文数、単語数、文字数を調べる方法をお伝えしました。

今回は一つのWord文書だけでしたが、大量のWord文書について繰り返しを回せば一気に「文書リスト」ができますよね。

次回、その文書リストを作成していきますよ。

エクセルVBAでフォルダ内のWord文書のページ数・文字数などをリスト化する
エクセルVBAでWord文書の操作をする方法についてお伝えしています。今回は、エクセルVBAでフォルダ内のWord文書のページ数や文字数などの各情報を取得してリスト化するプログラムを作っていきます。

どうぞお楽しみに!

連載目次:エクセルVBAでWord文書を操作する方法

Word文書についての情報を集めてリストを作りたい、そんなときはエクセルVBAでWord文書を開いたり、情報を取得したりしたいものです。シリーズでは初心者でもできる、エクセルVBAからのWord文書の操作の仕方をお伝えします。
  1. エクセルVBAでWordを操作して文書を操作する準備と最も簡単なプログラム
  2. エクセルVBAでWord文書を開いてページ数や文字数などのいろんな情報を取得する
  3. エクセルVBAでフォルダ内のWord文書のページ数・文字数などをリスト化する