Office関連

Wordマクロで文字数を取得する方法をまとめてみました。

蛍光ペンでマークした部分の文字数をカウントするWordマクロ」で蛍光ペンでマークした部分の文字数をカウントする処理を書きましたが、今回はいくつかある文字数カウント処理方法をまとめてみました。

Public Sub WordCount()
  'DocumentオブジェクトのComputeStatisticsメソッド
  'http://msdn.microsoft.com/en-us/library/office/ff840638%28v=office.15%29.aspx
  '※ 統計情報に脚注の情報を含める場合は引数(IncludeFootnotesAndEndnotes)をTrueにする。
  Debug.Print "■ DocumentオブジェクトのComputeStatisticsメソッド使用"
  Debug.Print "文字数:" & ActiveDocument.ComputeStatistics(Statistic:=wdStatisticCharacters, IncludeFootnotesAndEndnotes:=False)
  Debug.Print "スペースを含めた文字数:" & ActiveDocument.ComputeStatistics(Statistic:=wdStatisticCharactersWithSpaces, IncludeFootnotesAndEndnotes:=False)
  Debug.Print "-----"
  
  'DocumentオブジェクトのBuiltInDocumentPropertiesプロパティ
  'http://msdn.microsoft.com/en-us/library/office/ff196862%28v=office.15%29.aspx
  '※ 引数の詳細は http://msdn.microsoft.com/en-us/library/office/ff195105%28v=office.15%29.aspx 参照
  Debug.Print "■ DocumentオブジェクトのBuiltInDocumentPropertiesプロパティ使用"
  Debug.Print "文字数:" & ActiveDocument.BuiltInDocumentProperties(wdPropertyCharacters)
  Debug.Print "スペースを含めた文字数:" & ActiveDocument.BuiltInDocumentProperties(wdPropertyCharsWSpaces)
  Debug.Print "-----"
  
  'Dialogオブジェクト(wdDialogToolsWordCount)のプロパティ
  '※ 各プロパティの詳細は http://msdn.microsoft.com/en-us/library/office/ff836540%28v=office.15%29 参照
  Selection.Collapse '※ 文字列が選択されていると選択部分のみのカウントになるため選択解除
  Debug.Print "■ Dialogオブジェクト(wdDialogToolsWordCount)のプロパティ使用"
  Debug.Print "文字数:" & Application.Dialogs(wdDialogToolsWordCount).Characters
  Debug.Print "スペースを含めた文字数:" & Application.Dialogs(wdDialogToolsWordCount).CharactersIncludingSpaces
  Debug.Print "-----"
  
  'Dialogオブジェクト(wdDialogDocumentStatistics)のプロパティ
  '※ 各プロパティの詳細は http://msdn.microsoft.com/en-us/library/office/ff836540%28v=office.15%29 参照
  Debug.Print "■ Dialogオブジェクト(wdDialogDocumentStatistics)のプロパティ使用"
  Debug.Print "文字数:" & Application.Dialogs(wdDialogDocumentStatistics).Characters
  Debug.Print "-----"
  
  '特定の範囲の文字カウント
  'http://msdn.microsoft.com/en-us/library/office/ff196924%28v=office.15%29
  Debug.Print "■ 特定の範囲の文字カウント(RangeオブジェクトのComputeStatisticsメソッド使用)"
  Debug.Print "文字数:" & ActiveDocument.Paragraphs(1).Range.ComputeStatistics(Statistic:=wdStatisticCharacters)
  Debug.Print "スペースを含めた文字数:" & ActiveDocument.Paragraphs(1).Range.ComputeStatistics(Statistic:=wdStatisticCharactersWithSpaces)
  Debug.Print "-----"
  
  'Shellオブジェクトを利用してWordの外から単語数取得
  'http://msdn.microsoft.com/en-us/library/windows/desktop/bb787870%28v=vs.85%29.aspx
  '※ 他の方法に比べて不正確
  Debug.Print "■ Shellオブジェクトを利用してWordの外から単語数取得(FolderオブジェクトのGetDetailsOfメソッド使用)"
  With CreateObject("Shell.Application").NameSpace(ThisDocument.Path)
    Debug.Print "単語数:" & .GetDetailsOf(.ParseName(ThisDocument.Name), 151)
  End With
  Debug.Print "-----"
End Sub

ComputeStatisticsメソッドやBuiltInDocumentPropertiesプロパティから文字数を取得する方法があるので、ケースバイケースで使い分けるのが良いでしょう。
上記コードではオマケとして、Shellオブジェクトを利用してWordの外から単語数を取得する方法も書きましたが、他の方法に比べると正確性に欠けるため、使用する機会は無いだろうと思います。

蛍光ペンでマークした部分の文字数をカウントするWordマクロ前のページ

「NetOffice」で簡単に.NETからOfficeを操作次のページ

関連記事

  1. Office関連

    未読メッセージ数を取得するOutlookマクロ

    Outlook 2007で追加されたFolderオブジェクトのUnRe…

  2. Office関連

    オフィス祭り 2018 in 東京に参加しました。

    先日書いた下記記事の通り、9月15日(土)に品川にある日本マイクロソフ…

  3. Office関連

    Instagram APIをVBAから呼び出してみる。

    最近画像共有系のSNS、Instagram(インスタグラム)を使い始め…

  4. Office アドイン

    YO OFFICE(Yeoman)を使ってOffice アドインのひな型を作成する方法

    Webアプリのひな型を一発で作ってくれる便利ツール「Yeoman」には…

  5. Excel

    Google TTSで文字列を読み上げるExcelアドイン

    前回の記事で書いたGoogle TTSで文字列を読み上げるマクロ(言語…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP