コメントをたくさんしてくれたのは誰か

ブログをテキストファイルにする話をしましたが、これにはコメントなどもすべて含まれます。
人によっては本文よりも多い場合もあるのではないでしょうか。
さて、そこで考えるのは「自分のブログに一番多くコメントしてくれたのは誰か」ということです。
これをカウントする方法を考えました。
エクセルのマクロ文を作りましたので、エクセルを持っていて、マクロが使える人は挑戦してみてください。
ブログ人を想定していますが、MovableType形式(MT形式)ならば使えるはずです。

(1)
ブログをテキストファイルに書き出す。
(2)
テキストファイルをUTF-8からシフトJISに変換する。
テキストエディタやワードで開いてシフトJISで保存する。
インターネットエクスプローラで開いてシフトJISで保存することも可能。
(3)
エクセルでファイルを新規作成する。
(4)
VBAエディタを開きマクロ文を貼り付ける。
(5)
マクロ(author_count)を実行する。
ファイルを開くダイアログが出るので先ほどのテキストファイルを指定する。

これでコメントしてくれた方の名前が多い順に表示されるはずです。
自分の名前はコメントと本文の両方をカウントするのでトップに来るはずです。

マクロ文は次の通りです。

Sub author_count()
Dim aaa(1000)
Dim bbb(1000)
mypath = Application.GetOpenFilename()
Open mypath For Input As #1
zzz = 1
Sheets("Sheet1").Cells.ClearContents
numa = 0
Do While Not EOF(1)
Line Input #1, mystring
If Left(mystring, 6) = "AUTHOR" Then
temp = Mid(mystring, 9, 100)
flg = 0
If numa = 0 Then
numa = 1
aaa(numa) = temp
bbb(numa) = 1
Else
For xxx = 1 To numa
If aaa(xxx) = temp Then
bbb(xxx) = bbb(xxx) + 1
flg = 1
End If
Next xxx
If flg = 0 Then
numa = numa + 1
aaa(numa) = temp
bbb(numa) = 1
End If
End If
End If
Loop
Close #1
For xxx = 1 To numa
Cells(xxx, 1) = aaa(xxx)
Cells(xxx, 2) = bbb(xxx)
Next xxx
Range("B1").Select
Selection.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess _
, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
SortMethod:=xlPinYin
End Sub

本当はマクロ入りのエクセルファイルを提供するのが簡単なのですが、ウイルスの問題があるので、ここに表示することで提供します。また、もっと汎用的な方法で提供すべきですが、最初にエクセルのマクロで作ってしまったので、ご容赦ください。

関連記事

[2005-03-04(Fri)]

デジタル・インターネット

ダイエット-3.2キロ減 | クセロPDFを使う

© 2014 You Look Too Cool