• ベストアンサー

ワードの文字数カウント(色つき文字やマーカーを除いた)について

友人が文章に携わる仕事をしているんですが、 料金は文字数によって決まるそうです。 それで、辞書や他の本の引用部分は、 色つき文字にしたり、マーカーで色をつけたりしてるそうなんですが、 その部分の料金は請求できないので、 色つき文字やマーカーを付けた文字以外の 文字数をカウントしたいそうです。 良い方法があったら教えてください。 少なくとも、マーカーの部分を除いた文字数を知りたいそうです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

またまた、登場です。(笑) imogasi氏の提案されたVBAを使うというのも、おもしろいですね。少し考えてみましたが以外と、ややこしいですね。試しに作ってみたものを載せておきます。 VBEを開いて標準モジュールに貼り付けて使用できます。 Sub 文字数カウント() Selection.GoTo What:=wdGoToPage, _  Which:=wdGoToNext, Name:="1" a = 0 b = ActiveDocument.Characters.Count c = 0 For i = 1 To ActiveDocument.Characters.Count Selection.MoveRight  With ActiveDocument    If .Characters(i) = Chr(13) Then      c = c + 1    Else     With .Characters(i)      If .Font.Color <> wdColorAutomatic Or _        .Font.Shading.Texture <> 0 Or _        .Shading.BackgroundPatternColor <> wdColorAutomatic _      Then        a = a + 1      End If     End With    End If  End With Next i Selection.GoTo What:=wdGoToPage, _  Which:=wdGoToNext, Name:="1" Application.ScreenUpdating = True MsgBox "全文字数:" & b - c & Chr(13) & _ "除外文字数:" & a & Chr(13) & _ "差引文字数:" & b - c - a End Sub たぶんもっとコンパクトになるかもしれませんが、思いつきなんでご容赦ください。一応 Word2000 Win98環境で動作しました。

taketaket
質問者

お礼

動作確認までしていただいて、 ほんとにありがとうございます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

#3の方のご解答が入っているのを知らず、作っていました。骨子は同じのようですが、ご参考までに入れます。 色文字の文章中に色の異なった文字(下記ではオレンジ)があるとき、その文字数をカウントするプログラムを作りました。 ただ実行時間が1200文字程度の文章で数10秒かかる。 その点で下記が適当かどうか自信がない。 Sub test10() n = ActiveDocument.Characters.Count ' MsgBox n c = 0 For i = 1 To n Set d = ActiveDocument.Characters(i) If d.Font.Color = wdColorOrange Then 'MsgBox d c = c + 1 End If Next i MsgBox c End Sub ワードで何かマクロの記録をして、Macro1とかのプログラムが出来るから上記(ただしSub test10()、End Sub以外)をコピーペーストして置き換えてください。それで1つのマクロが出来あがります。 wdColorOrangeはOrangeの部分はRed,Yellowとか色々決められたもの・色がありますので変えれば対処できます。

taketaket
質問者

お礼

ありがとうございます! 友人は数百ページのマニュアルの翻訳などをしているのですが、 昼休みなどに実行すれば、時間的には何とかなると思います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

終に#1の方の解答が出ましたね。意外なアイデアですね。私も朝からずっと考えていたのですが、本件は回答でなくて済みません。 ●「マーカーで色をつける」とは、メニューバーで「罫線-線種とページ罫線と網掛けの設定-網かけ-背景の色-色指定」の操作で出てくるものを指しているのですか。 ●メニューバーで「ツール-文字カウント」の操作で、文字数だけは操作で出るのは、ご存知の方が多いと思います。 しかし「色付き文字数を出す操作」はないのではと思います。 また「マーカーで色をつけた背景(地)の上の文字数を出す操作」もないのではないでしょうか。結局正面からの 回答は、今日1日出なくて、残念でした。 ●すると残る手段はVBA(マクロ)でやるしかないが、小生現状情報不足・勉強不足で色々試しましたが、わからない。 ただ全ての文字数を出すプログラムは下記で出せます。 Sub test01() s = ActiveDocument.Paragraphs.Count MsgBox s t = ActiveDocument.Characters.Count MsgBox t - s End Sub あと1文字1文字がVBAで捉えられれば、その「プロパティ」のフォントの色、背景色で判別できるように思いますが、今後勉強します。

taketaket
質問者

お礼

回答ありがとうございます。 私はワードはMOUSの資格はもってるけど、 あまり使ってないので詳しくないのですが・・・ >●「マーカーで色をつける」とは、 たぶん、マーカーという機能があったような気がします。 今、私がいる場所には、ワードが無いので未確認です。 こちらも勉強になりました。ありがとうございます。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

taketaketさんこんにちは 思いつきで、実証はしていませんが、おおかた、次の方法が良いと思われます。 1, 当該wordファイルをコピーして二つにします。(1つはバックアップ) 2, メニューから[編集]>[置換]として、検索と置換のダイアログを開きます。 3, ダイアログ左下の[オプション]をクリックします。 4, オプション項目下から[書式]>[フォント]とします。 5, 表示されたダイアログの"フォントの色"から、除外する色つき文字の色を選択して、[OK]をクリックします。 6, 検索と置換のダイアログの[すべて置換]をクリックします。(ここで、色つき文字が削除されます) 7, 検索と置換のダイアログから、[書式の削除]>[書式]>[蛍光ペン]>[すべて置換]とします。(ここで、マーカー文字は削除されます) 8, メニューから[ツール]>[文字カウント]として文字数をカウントします。 複数の色のフォントがある場合は、個々に実行してください。

taketaket
質問者

お礼

ありがとうございます!! 明日、試してみます。

関連するQ&A