memoQ Tips
複数のワード文書の文字数/単語数を取得して.csv ファイルに一覧でエクスポートする
概要
Word文書を直接開かずに、文字数と単語数をファイル毎に取得して一覧を.csvファイルでエクスポートするVBScriptです。
翻訳するファイル、または翻訳した後の訳文ファイルがWord文書のときに使います。翻訳費用の計算など単語数や文字数を調べないとならないときは頻繁にあると思いますが、Word文書が一つの場合は、その文書を開いて簡単に文字数・単語数を調べることができますが、Word文書が幾つもある場合は結構手間ですよね。特にWordは開くまでに時間がかかったりします。
これを効率化するために、Wordをいちいち開かなくても、複数のファイルをドラッグするだけで、複数のWord文書の文字数・単語数を一覧にしてくれるVBScriptを作成してみました。
CATツールでもできることなのですが、どうしても若干の誤差が発生してしまいます。Wordが算出する数字をもとに費用を計算しなければならないときに重宝しています。
使用方法
以下のファイルを、任意のフォルダにダウンロードして、解凍してください。
VBScriptのアイコン
↑のようなアイコンに、Word文書(複数可)をドラッグしてください。デスクトップにWordCount.csvというファイルが作られます。ここにドラッグされたWord文書の単語数と文字数がファイル名別に一覧で表示されます。
または、以下のSource Codeをテキストファイルにコピペして、拡張子を.vbsにして保存してください。
注意:
見かけ上Word文書を開いてはいませんが、裏でWordファイルを開いています。したがって、ドラッグするWordファイルの数に比例して、処理時間が長くなります。「Completed」とメッセージボックスが表示されるまでは処理中です。
Source Code
Const fieldNames = “ファイル名, 文字数, 単語数”
Dim FSO Dim Args Dim objWORD ‘Word アプリケーションのオブジェクト変数 Dim WordFile Dim WordFilename Dim objDoc Dim pt Dim outputPath Dim outputFile Dim outputString Dim Count_W Dim Count_Ch
Set objShell = CreateObject (“Wscript.Shell”) outputPath = objShell.ExpandEnvironmentStrings(“%USERPROFILE%”) outputPath = outputPath & “\Desktop” Set FSO = WScript.CreateObject (“Scripting.FileSystemObject”) Set Args = WScript.Arguments Set objWORD = CreateObject(“Word.Application”)
‘---------------Wordを開いて情報を取得------------------’ For Each pt in Args WordFile = FSO.GetFile (pt) WordFilename = FSO.GetFileName (pt) ‘ドラッグされたファイルがWordファイルでなければ終了 If Instr (WordFile, “.doc”) < 1 then MsgBox “Word 文章ではありません。” WScript.Quit End If
'Wordファイルを開く
Set objDoc = objWORD.Documents.Open(WordFile)
Set RNG = objWORD.Activedocument.Content
'各種情報を変数に格納
Count_W = RNG.ComputeStatistics(0)
Count_Ch = RNG.ComputeStatistics(3)
outputString = outputString & WordFilename &","& Count_Ch &","& Count_W & VbCrLF
objDoc.Save
objDoc.Close
Next
objWORD.Quit
‘---------------抜き出した情報をCSVに出力------------------’ Set outputFile = FSO.OpenTextFile (outputPath & “\WordCount.csv”, 8, true) outputFile.writeline fieldNames outputFile.WriteLine outputString
‘---------------インスタンスの解放------------------’ Set outputFile = Nothing Set objDoc = Nothing Set objWORD = Nothing Set Args = Nothing Set FSO = Nothing
Wscript.Echo “Completed”