プロが教える店舗&オフィスのセキュリティ対策術

友人が文章に携わる仕事をしているんですが、
料金は文字数によって決まるそうです。

それで、辞書や他の本の引用部分は、
色つき文字にしたり、マーカーで色をつけたりしてるそうなんですが、
その部分の料金は請求できないので、

色つき文字やマーカーを付けた文字以外の
文字数をカウントしたいそうです。

良い方法があったら教えてください。
少なくとも、マーカーの部分を除いた文字数を知りたいそうです。

よろしくお願いします。

A 回答 (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環境で動作しました。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/07/23 15:14

#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とか色々決められたもの・色がありますので変えれば対処できます。
    • good
    • 0
この回答へのお礼

ありがとうございます!

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

お礼日時:2002/07/23 15:22

終に#1の方の解答が出ましたね。

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

回答ありがとうございます。
私はワードはMOUSの資格はもってるけど、
あまり使ってないので詳しくないのですが・・・

>●「マーカーで色をつける」とは、
たぶん、マーカーという機能があったような気がします。
今、私がいる場所には、ワードが無いので未確認です。

こちらも勉強になりました。ありがとうございます。

お礼日時:2002/07/23 15:18

taketaketさんこんにちは


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

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

お礼日時:2002/07/22 22:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!