Office関連

漢字かな交じり文をひらがなにするマクロ

Yahoo!のテキスト解析Web API(ルビ振り)を使用して、漢字かな交じり文をひらがなにするマクロです。

下記マクロはYahoo!のアプリケーションIDが必須になりますので、「アプリケーションIDとは」「アプリケーションIDを登録する」を参考に、IDを事前に取得してください(取得後コード内の”ID“の値を変更)。

なお、APIの制限で一日50,000件を超えると処理できなくなってしまいますので、その点はご注意ください。

Option Explicit

Public Sub Sample()
  MsgBox GetFuriganaYahooApi(Selection.Text)
End Sub

Private Function GetFuriganaYahooApi(ByVal sentence As String, Optional ByVal grade As Long = 0)
'漢字かな交じり文をひらがなにするマクロ
  Dim url As String
  Dim d As Object
  Dim sel As Object
  Dim n As Object
  Dim ret As String
  
  'アプリケーションID
  '詳細は[http://help.yahoo.co.jp/help/jp/developer/developer-06.html]参照
  Const ID As String = "(アプリケーションID)"
  
  ret = "": Set d = Nothing '初期化
  url = "http://jlp.yahooapis.jp/FuriganaService/V1/furigana"
  url = url & "?appid=" & ID & "&sentence=" & EncodeURL(sentence)
  Select Case grade
    Case 1 To 8
      url = url & "&grade=" & CStr(grade)
  End Select
  On Error Resume Next
  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", url, False
    .Send
    Set d = .responseXML
  End With
  On Error GoTo 0
  If Not d Is Nothing Then
    If d.SelectNodes("/ResultSet/Result/WordList/Word").Length > 0 Then
      For Each sel In d.SelectNodes("/ResultSet/Result/WordList/Word")
        Set n = sel.SelectSingleNode("Furigana")
        If Not n Is Nothing Then
          ret = ret & n.Text
          Set n = Nothing
        Else
          ret = ret & sel.SelectSingleNode("Surface").Text
        End If
      Next
    End If
  End If
  GetFuriganaYahooApi = ret
End Function

Private Function EncodeURL(ByVal sWord As String) As String
  With CreateObject("ScriptControl")
    .Language = "JScript"
    EncodeURL = .CodeObject.encodeURIComponent(sWord)
  End With
End Function

精度は正直微妙なところがありますが、文章を子ども向けに変換する際には役立つかもしれません。

OneNoteの指定したセクションをページごとに指定した形式で出力するマクロ前のページ

文書内の単語を単語ごとにカウントするWordマクロ次のページ

関連記事

  1. Office関連

    PDFを他のファイル形式に変換するVBAマクロ

    「PDF 変換 Word VBA」といったキーワード検索でのアクセスが…

  2. Office関連

    テキストボックスの中にある表を操作するWordマクロ

    Yahoo!知恵袋で、「Wordマクロでテキストボックスの中にある表の…

  3. Office関連

    スライドショーをループ再生設定するPowerPointマクロ

    PowerPointでスライドショーを作成するとき、投影した後流しっぱ…

  4. Office関連

    Adobe Readerを利用してPDFファイルのページ数を取得するVBAマクロ

    mougの回答用に書いたコードです。mougは半年でログが消えてし…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP