パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)

文字数のカウント
(準備中)



HTMLの文字数、メタ文字数をカウントするために作成。
SEO対策〜インデックスされないページの考察」を書くときに実際に使いました。


1 HTMLの文字数カウントについて


指定したフォルダにあるHTMLファイルの@文字数(本文の文字数)とAメタ文字数(Tagの文字数)
をカウントする。


メインフォームのデザイン


使い方(というか仕様)
@DriveListBoxでドライブを選択し、DirListBoxでフォルダを選択する。
AText3に選択したフォルダ名が表示され、FileListBoxにそのフォルダにある拡張子html, htmのファイルが
 表示される。
Bチェックボックスにチェックを入れると、拡張子txtのファイルも対象になる。
C[開始]ボタンをクリックすると、FileListBoxに表示されたファイルの文字数及びメタ文字数をカウントし


2 プログラム
若干、プログラムについて説明しておきます。非常にシンプルな作りです。
コードはプログラム作成時に参考になりそうな部分だけ抜粋して説明します。

(1) ドライブリストBOXとディレクトリリストBOXとCheckBOX
ここはお決まりのコードです。

ドライブリストBOX
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

ディレクトリリストBOX
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

CheckBox
Private Sub Check1_Click()
If Check1.Value = 1 Then File1.Pattern = "*.htm?;*.txt"
If Check1.Value <> 1 Then File1.Pattern = "*.htm?"
End Sub




(2) コマンドボタン([開始]ボタン)

Private Sub Command1_Click()
Close
' 改行コードnl$
nl$ = Chr$(13) + Chr$(10)

For k = 0 To File1.ListCount - 1 ' @FileListを順番に選択する
File1.ListIndex = k
f$ = File1.Path & "\" & File1.filename
Open f$ For Input As #1

' A変数の初期化
st = 0
meta = 0
mfrag = 0

Do While Not EOF(1) 'B EOFまでファイルを1行づつ読み込むループ
Line Input #1, a$
l = Len(a$)
For i = 1 To l
cmpword$ = Mid(a$, i, 1) 'C 1文字づつ取り出す
If cmpword$ = "<" Then mfrag = 1 'D "<"だったらmfragに1をセット。メタ文字としてカウントする。
If mfrag = 0 Then st = st + 1
If mfrag = 1 Then meta = meta + 1
If cmpword$ = ">" Then mfrag = 0 ' E ">" だったらmfragに0をセット。本文の文字としてカウントする
Next i
Loop

' FText1に結果を書き出し、ファイルをCloseする。
Text1.Text = Text1.Text + f$ + ": " + Str$(st) + " " + Str$(meta) + nl$
Close #1

Next k
End Sub

@ For.. next ループで文字数をカウントするファイルを順番に指定していきます。

A 変数を初期化します。
st 文字数カウント用
meta メタ文字数カウント用
mfrag 0・・本文の文字をカウント中  1・・メタ文字(Tag)をカウント中

B Do While ループでEOF(ファイルの終わり)になるまで以下、1行づつ読み込んで文字数のカウント作業をする。

C Mid$で1文字づつ取り出す

D取り出した文字が "<"だったらmfragに1をセット。メタ文字としてカウントする。⇒Tagの始まり

E 取り出した文字が ">"だったらmfragに0をセット。本文文字としてカウントする。⇒Tagの終了

FText1に結果を書き出し、ファイルをCloseする。



TopPage/Visual Basic&Excel活用研究目次