vbsで文字数カウンタツールを作る

中山テック 代表の中山です。

今回はvbsについてのお話になります。

Excel(エクセル)も便利ですが、わざわざアプリを開かないといけません。

vbsはメモ帳1個あれば作れます。

ブログや固定ページで「何文字書いたか」を数えるツールが必要となり

30分掛からず作成したツールがありますので、どのように作ったかご説明したいと思います。



まず、メモ帳を用意します。

※上記画像では「サクラエディタ」ですが、Windows標準のメモ帳でも構いません

すると「新しいテキスト ドキュメント.txt」が出来上がります。

そしたら「aaa.vbs」(aaaは何でもいい)と変えてあげます。

新規ファイルが作られる
「.txt」を「.vbs」にすると警告が出るが、「はい」を押す

これで準備は整いました。

巻物みたいなアイコンに変わる


拡張子が変更できない場合

拡張子が出ていない場合は上記画像のように操作すれば変えることが出来ます。

フォルダを開いて

「表示」タブ→「ファイル名拡張子」にチェックを入れます。

これでファイルに拡張子(.txt、.xlsx、.jpg等)が付きます。

vbsの拡張子はWindowsで動くアプリケーションです。

メモ帳ベースにプログラムを書くことですぐ動くようになります。

注意点として、テキストファイルからvbsを作るようにしてください。

コード

コードを表示してから解説していきます。

Option Explicit

Dim file
Dim objFileSys
Dim objReadStream
Dim strLine
Dim lngCnt

if WScript.Arguments.Count = 0 then
  WScript.echo("ファイルをこのツールにドラッグ&ドロップしてください")
  WScript.Quit(-1)
end if

' ファイル名取得
file = Wscript.Arguments(0)

' FSオブジェクト
Set objFileSys = CreateObject("Scripting.FileSystemObject")

' ファイルオープン
Set objReadStream  = objFileSys.OpenTextFile(file, 1)

Do Until objReadStream.AtEndOfStream = True
  '1 行読み込み
  strLine = objReadStream.ReadLine
  lngCnt = lngCnt + Len(strLine)
Loop

WScript.echo "文字数:" & lngCnt

objReadStream.Close

Set objFileSys = Nothing 

まず、ファイルを「CreateObject」で取得します。

※ファイルのメモリ位置を取得

そしてファイルをいぢれるおまじない「CreateObject("Scripting.FileSystemObject")」をかけ

「objFileSys.OpenTextFile」でファイルオープンします。

Do Until~は「ファイルの終わりまで1行ずつ取得する」という命令になり

「Len」で文字数を取得します。

最後「objReadStream.Close」で読み込んだファイルを閉じます。

実践

とあるブログの文字数をカウントします

試しに3月23日にアップしたブログ「お電話をためらっている方へ~制作のご相談がある場合~」の

本文をコピーし、貼り付けた後文字数をカウントしてみます。

対象ファイルを「aaa.vbs」に重ねます

aaa.vbsにドラッグ&ドロップします。すると・・・

ポップアップが出現し、文字数を教えてくれます。

これにて作業完了です!

  • 関連記事

ん・・・?

ちょっと待ってちょっと待ってお兄さん!

1832文字って何ですの(古)

まず、1行目8文字だったし全体で1000行程度ということで確認をしてみました。

ちょっと面倒ですが、1行ずつ何文字取ったかを確認するためにダイアログを出してみます。

※vbsはデバッグが大変というデメリットがあります

それでまたファイルをドラッグ&ドロップしてみますと・・・

何で16文字?

Len関数は文字数を返すので、16になる訳がないのですが・・・

さて、勘の良い方はすでにお気づきかと思いますが、実は「文字コード」がミソなのです!

UTF-8でした。

文字コードの話をすると長くなるので割愛しますが、Shift-JIS(SJIS)に直して計算しましょう。

手で計算したら合ってました!


まとめ

gitからのダウンロードも可能です

いかがでしたでしょうか。

今回は非常に簡単なプログラムを紹介しました。

他にも数字の連番のフォルダやファイルを250個作る、文字を入力させてテキスト出力させるなど。

出来ることがかなりあります。

ただ、中にはvbsでは動きが遅いのでJavaScriptでやった方がいい場合がございます。

状況によっては便利なvbs、簡単ですので是非試してみてください!

※中山テックに掲載しているゲーム画像の著作権、商標権、その他知的財産権は、当該コンテンツの提供元に帰属します


おすすめの記事