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)に直して計算しましょう。

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

まとめ

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

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

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

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

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

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

ホームページ制作系

ご料金はサービス内容・料金を参照ください。

■ホームページ制作

※ロゴ、バナーは外注となります

■SEO対策

Googleガイドライン診断、マネジメント、ブログ執筆など

システム開発系(SES請負契約向け)

■役職

プロジェクトマネジメント、PMO、リーダー、開発(要件定義~納品まで)

■スキル

工数見積(FP法)、折衝・提案、計画、調査、設計、実装(C、Java、クライアント系、SQL等)

データベース全般、テスト計画・項目作成、運用・保守

その他

Excel、プログラミングなどソフト系のお困りごと

対象地域

千葉県:東葛エリア(松戸市、柏市、我孫子市、市川市、流山市、船橋市、鎌ヶ谷市、白井市、浦安市) 他要相談

茨城県:取手市、土浦市、他要相談

埼玉県:三郷市、草加市、春日部市、他要相談

東京都:23区、他要相談

京都府:南区、他要相談

ご質問ございましたら、お問い合わせページよりご連絡ください。

おすすめの記事