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翻訳で文字列を翻訳するVBAマクロ(IE操作版)

    下記記事にあるように、ニューラルネット機械翻訳の導入によって、Goog…

  2. Office関連

    Office製品のフィードバックって本当に反映されるの?

    今年の1月に、WordやExcel等のOffice製品で、UI上の不具…

  3. Excel

    Officeアプリケーションの「最近使用したファイル」を削除するVBScript

    WordやExcel等のOfficeアプリケーションでは、下記サイトに…

  4. Office関連

    カウントダウンタイマーを作成するPowerPointマクロ

    大分前に書いた記事について問い合わせがありましたので、マクロを作成しな…

  5. Office関連

    Microsoft Translator APIで文字列を翻訳するVBAマクロ

    以前書いた記事で、Google翻訳を使って文字列を翻訳するマクロを紹介…

  6. Office関連

    ヘッドレス ChromeとSeleniumBasicでWebページ全体のスクリーンショットを撮る方法…

    先日、ヘッドレス ChromeでWebページ全体のスクリーンショットを…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP