- ベストアンサー
ワードの文字数カウント(色つき文字やマーカーを除いた)について
友人が文章に携わる仕事をしているんですが、 料金は文字数によって決まるそうです。 それで、辞書や他の本の引用部分は、 色つき文字にしたり、マーカーで色をつけたりしてるそうなんですが、 その部分の料金は請求できないので、 色つき文字やマーカーを付けた文字以外の 文字数をカウントしたいそうです。 良い方法があったら教えてください。 少なくとも、マーカーの部分を除いた文字数を知りたいそうです。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
またまた、登場です。(笑) 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環境で動作しました。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
#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とか色々決められたもの・色がありますので変えれば対処できます。
お礼
ありがとうございます! 友人は数百ページのマニュアルの翻訳などをしているのですが、 昼休みなどに実行すれば、時間的には何とかなると思います。
- imogasi
- ベストアンサー率27% (4737/17069)
終に#1の方の解答が出ましたね。意外なアイデアですね。私も朝からずっと考えていたのですが、本件は回答でなくて済みません。 ●「マーカーで色をつける」とは、メニューバーで「罫線-線種とページ罫線と網掛けの設定-網かけ-背景の色-色指定」の操作で出てくるものを指しているのですか。 ●メニューバーで「ツール-文字カウント」の操作で、文字数だけは操作で出るのは、ご存知の方が多いと思います。 しかし「色付き文字数を出す操作」はないのではと思います。 また「マーカーで色をつけた背景(地)の上の文字数を出す操作」もないのではないでしょうか。結局正面からの 回答は、今日1日出なくて、残念でした。 ●すると残る手段はVBA(マクロ)でやるしかないが、小生現状情報不足・勉強不足で色々試しましたが、わからない。 ただ全ての文字数を出すプログラムは下記で出せます。 Sub test01() s = ActiveDocument.Paragraphs.Count MsgBox s t = ActiveDocument.Characters.Count MsgBox t - s End Sub あと1文字1文字がVBAで捉えられれば、その「プロパティ」のフォントの色、背景色で判別できるように思いますが、今後勉強します。
お礼
回答ありがとうございます。 私はワードはMOUSの資格はもってるけど、 あまり使ってないので詳しくないのですが・・・ >●「マーカーで色をつける」とは、 たぶん、マーカーという機能があったような気がします。 今、私がいる場所には、ワードが無いので未確認です。 こちらも勉強になりました。ありがとうございます。
- TTak
- ベストアンサー率52% (206/389)
taketaketさんこんにちは 思いつきで、実証はしていませんが、おおかた、次の方法が良いと思われます。 1, 当該wordファイルをコピーして二つにします。(1つはバックアップ) 2, メニューから[編集]>[置換]として、検索と置換のダイアログを開きます。 3, ダイアログ左下の[オプション]をクリックします。 4, オプション項目下から[書式]>[フォント]とします。 5, 表示されたダイアログの"フォントの色"から、除外する色つき文字の色を選択して、[OK]をクリックします。 6, 検索と置換のダイアログの[すべて置換]をクリックします。(ここで、色つき文字が削除されます) 7, 検索と置換のダイアログから、[書式の削除]>[書式]>[蛍光ペン]>[すべて置換]とします。(ここで、マーカー文字は削除されます) 8, メニューから[ツール]>[文字カウント]として文字数をカウントします。 複数の色のフォントがある場合は、個々に実行してください。
お礼
ありがとうございます!! 明日、試してみます。
お礼
動作確認までしていただいて、 ほんとにありがとうございます。