忍者ブログ

文字数をカウントするスクリプト

2024年02月15日
書籍以下を学んだ。

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



PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字