文字数をカウントするスクリプト
105文字以内であれば、人間は文字を画像として認識できる。メール本文やスライドの説明も105文字以内にまとめよう。
じゃあ、実際メールに書いてる文字数どんなもん?と思ったものの、テキストエディタで文字数カウントできない。
わざわざWord起動するのも煩わしいので、VBScriptで作ってみた。
今回は、クリップボードの文字数をカウントするスクリプトを作った話。
いつものように1発目はbingAI。クリップボード内の文字を種類ごとにカウントさせることにした。
大枠ではちゃんと動くものの、細かい要望はなかなか聞き入れてもらえず手作業で修正。
狙った通りの動きにはなったので完成。
1から作るとしんどいけど、GPTにベースを作らせれば簡単。
以下、ソース。
Option Explicit
' クリップボードから情報を取得する関数
Function getClipboard()
Dim objHTML
Set objHTML = CreateObject("htmlfile")
getClipboard = Trim(objHTML.ParentWindow.ClipboardData.GetData("text"))
Set objHTML = Nothing
End Function
' 文字の種別ごとにカウントする関数
Sub CountCharacters()
Dim clipboardText
Dim i, char
Dim alphabetCount, digitCount, symbolCount, spaceCount, lfCount, totalCount, jisCount,elseCount,tabCount,crCount
Dim regexAlphabet, regexDigit, regexSymbol, regexJis
clipboardText = getClipboard()
alphabetCount = 0
digitCount = 0
symbolCount = 0
spaceCount = 0
lfCount = 0
totalCount = 0
jisCount = 0
elseCount = 0
tabCount = 0
crCount = 0
' 正規表現パターンを設定
Set regexAlphabet = New RegExp
regexAlphabet.Pattern = "[A-Za-z]"
Set regexDigit = New RegExp
regexDigit.Pattern = "[0-9]"
Set regexSymbol = New RegExp
regexSymbol.Pattern = "[!@#$%^&*()_+={}\[\]:;'<>,.?/\|\\-]"
Set regexJis = New RegExp
regexJis.Pattern = "[\u3000-\u30FF]"
For i = 1 To Len(clipboardText)
char = Mid(clipboardText, i, 1)
If regexAlphabet.Test(char) Then
alphabetCount = alphabetCount + 1
ElseIf regexDigit.Test(char) Then
digitCount = digitCount + 1
ElseIf regexSymbol.Test(char) Then
symbolCount = symbolCount + 1
ElseIf char = " " Then
spaceCount = spaceCount + 1
ElseIf char = Chr(10) Then
lfCount = lfCount + 1
ElseIf regexJis.Test(char) Then
jisCount = jisCount + 1
ElseIf char = Chr(9) Then
tabCount = tabCount + 1
ElseIf char = Chr(13) Then
crCount = crCount + 1
else
elseCount = elseCount + 1
End If
totalCount = totalCount + 1
Next
MsgBox _
"全角文字の個数: " & jisCount & vbNewLine & _
"アルファベットの個数: " & alphabetCount & vbNewLine & _
"数字の個数: " & digitCount & vbNewLine & _
"記号の個数: " & symbolCount & vbNewLine & _
"スペースの個数: " & spaceCount & vbNewLine & _
"LFの個数: " & lfCount & vbNewLine & _
"CRの個数: " & crCount & vbNewLine & _
"タブの個数: " & tabCount & vbNewLine & _
"その他の個数: " & elseCount & vbNewLine & _
"トータル文字数: " & totalCount
End Sub
' メイン処理を呼び出す
CountCharacters