Office関連

Unicodeブロックを元に指定した文字が平仮名なのかカタカナなのか漢字なのかを判別するVBAマクロ

以前書いた「ルビ(ふりがな)を一括設定するWordマクロ」記事で使った、指定した文字が漢字なのかどうかを判別するマクロに、指定した文字が平仮名なのかカタカナなのかを判別するマクロも付け加えてみました。

Option Explicit

Public Sub Sample()
  Dim s As String, tp As String, msg As String
  Dim i As Long
  Const str As String = "ゐどのヰa﨣メ祖レヱえへbゑクヰャ湮ウcヮヴ挽Z"
  
  For i = 1 To Len(str)
    s = Mid(str, i, 1)
    If IsHiragana(s) = True Then
      tp = "ひらがな"
    ElseIf IsKatakana(s) = True Then
      tp = "カタカナ"
    ElseIf IsKanji(s) = True Then
      tp = "漢字"
    Else
      tp = "その他"
    End If
    If i = 1 Then
      msg = "「" & s & "」は【" & tp & "】です。"
    Else
      msg = msg & vbCrLf & "「" & s & "」は【" & tp & "】です。"
    End If
  Next
  MsgBox msg
End Sub

Private Function IsHiragana(ByVal char As String) As Boolean
'ひらがな判別
  Dim cc As Variant
  Dim ret As Boolean
  
  ret = True '初期化
  cc = Val("&H" & Hex(AscW(char)) & "&")
  Select Case cc
    Case 12352 To 12447 'ひらがな(U+3040-U+309F)
    Case Else
      ret = False
  End Select
  IsHiragana = ret
End Function

Private Function IsKatakana(ByVal char As String) As Boolean
'カタカナ判別
  Dim cc As Variant
  Dim ret As Boolean
  
  ret = True '初期化
  cc = Val("&H" & Hex(AscW(char)) & "&")
  Select Case cc
    Case 12448 To 12543 'カタカナ(U+30A0-U+30FF)
    Case Else
      ret = False
  End Select
  IsKatakana = ret
End Function

Private Function IsKanji(ByVal char As String) As Boolean
'漢字判別
  Dim cc As Variant
  Dim ret As Boolean
  
  ret = True '初期化
  cc = Val("&H" & Hex(AscW(char)) & "&")
  Select Case cc
    Case 19968 To 40959   'CJK統合漢字(U+4E00-U+9FFF)
    Case 13312 To 19903   'CJK統合漢字拡張A(U+3400-U+4DBF)
    Case 131072 To 173791 'CJK統合漢字拡張B(U+20000-U+2A6DF)
    Case 173824 To 177983 'CJK統合漢字拡張C(U+2A700-U+2B73F)
    Case 177984 To 178207 'CJK統合漢字拡張D(U+2B740-U+2B81F)
    Case 63744 To 64255   'CJK互換漢字(U+F900-U+FAFF)
    Case 194560 To 195103 'CJK互換漢字補助(U+2F800-U+2FA1F)
    Case Else
      ret = False
  End Select
  IsKanji = ret
End Function

IsKanaKanji_01

AscW関数で文字コードを調べて、そのコードが平仮名なのかカタカナなのか漢字なのかを調べるという、シンプルなマクロです。

正規表現でも文字の種類を判別できますが、今回はSelect Caseを使ってみました。

■ 参考Webページ

「文書のスタイル」を設定するWordマクロ前のページ

テーブルの罫線色情報を列挙するPowerPointマクロ次のページ

関連記事

  1. Office関連

    Google Calendar APIを使って日本の祝日を取得するVBAマクロ

    祝日の一覧を用意する必要があったので、Google Calendar …

  2. Office関連

    「最速攻略 Wordマクロ/VBA徹底入門」レビュー

    いつもお世話になっているExcel MVPの伊藤さんに9月20日発売予…

  3. Office関連

    ノートを削除するPowerPointマクロ

    下記のコードは「Remove Notes Pages in Power…

  4. Office関連

    「NetOffice」で簡単に.NETからOfficeを操作

    ネットで「NetOffice」なるツールがあることを知ったので、早速試…

  5. Office関連

    Visual Studio Community 2015でOffice開発する。

    「Microsoft、統合開発環境「Visual Studio 201…

  6. Office関連

    指定したスライドにユーザー設定レイアウトを適用するPowerPointマクロ

    PowerPointにはオリジナルのレイアウト(ユーザー設定レイアウト…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP