« 小飼弾の「仕組み」進化論 | トップページ | 選択したファイルのフォルダパスを取得するマクロ »

2009年5月31日 (日)

文書の最終段落の文字数の取得

文書中の最終段落に記載されている文字数を取得するマクロです。「wordcount_lastparagraph.dot」をダウンロード

●作用
・英文で実行すると、最終段落の半角英数字の単語数を取得します。

・日本語で実行すると、最終段落の日本語の文字数(句読点も一文字分)を取得します。

・日本語と英語が混ざっている場合には、「半角英数字の単語数」+「日本語の文字数」を取得します。

●想定している用途
英文明細書を作成時、文書の最終段落に記載する要約文(Abstract)の文字数を取得するのに便利です。

●使い方
1.インストール
こちらをご覧ください。

2.対象の文書を開き、Wordcount ボタンをクリック

Word Countということで、WCです。

3.結果を表示します。

Wordcount2

●工夫
・文字が入力されていない段落(改行マークだけ、もしくはスペースと改行マークだけ)は最終段落と特定しません。文字が入力されている段落を文書の末尾から探します。(60~100行)

・文字が入力されていない文書の場合にはエラーメッセージが出ます。(160~180行)

●文字数の取得について

単語数の取得(ツール>文字カウントに対応)するコードが50行目に記載されています。
WordCount = myRange.ComputeStatistics(wdStatisticWords)

最初は以下のコードを使ったのですが、おかしな値を取得してしまいました。
WordCount = myRange.Words.Count 

ニュースグループでword countというキーワードで検索したら、同じ疑問を持っている人がいて、まさしくほしかったコードが記載されていました。解説はこちら

●最終段落の特定について

カーソルを移動せずに処理を行うことを目的としたRangeオブジェクトを用いています。

paraCount = ActiveDocument.Paragraphs.Count
Set myRange = ActiveDocument.Paragraphs(paraCount).Range

今回のマクロでは、特定の文字列を探さずに最終段落を特定することができるので、汎用性が高まりました。

20~110行が最終段落を特定するためのコードです。

●最終段落の特定について(従来の方法:参考)

このマクロは、もともと英文明細書の要約文の語数を数えるために作成したものです。(このときは、ほしい結果が得られなかったため、途中で作成を断念しました。)

英文の出願用明細書では、最後のページに要約(Abstract)を記載します。具体的には、abstract というタイトルの次の段落に要約文を記載します。

なので、文書中の”abstract”のキーワードを探して、その言葉の次の段落から文書の末尾までを、最終段落として選択するプログラムを用いていました。

この場合、”abstract”は、明細書中に1語しかないという前提でしたし、また、要約文が文書の一番最後にあり、それ以降は不要な文字列(メモ)などが残っていない、という前提でした。

こういう前提を知っている自分しか使えないプログラムですね。

まだ、Rangeも知らず、かつ文書中の段落の指定の方法も知らないころでした。

マクロの自動記録を使って、以下のようなコードを利用して、最終段落の特定をしていました。

    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "abstract"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .MatchFuzzy = True
    End With
    Selection.Find.Execute
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.EndKey Unit:=wdStory, Extend:=wdExtend

|

« 小飼弾の「仕組み」進化論 | トップページ | 選択したファイルのフォルダパスを取得するマクロ »

マクロテンプレート」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/519619/45178762

この記事へのトラックバック一覧です: 文書の最終段落の文字数の取得:

« 小飼弾の「仕組み」進化論 | トップページ | 選択したファイルのフォルダパスを取得するマクロ »