ルビを括弧付のテキストに変換するマクロ

Pocket

Wordにはルビ(ふりがな)を付ける機能があります。
これを解除して括弧付のテキストに変換するマクロを考えました。
マクロを実行すると編集中の文書の全てのルビを変換します。例えば「りんご」というルビが付いた「林檎」を「林檎(りんご)」に変換します。

前半がマクロの本体です。
Wordのルビはフィールドで設定されているので、これを全て取得し、それぞれ置換します。「EQ~」というフィールドですので、どうやらWordは数式を利用してルビを表現しているようです。
後半はフィールドコードから元の文字列とルビの文字列を取得し「元の文字列(ルビの文字列)」という形に変換します。

Sub ルビを括弧付のテキストに変換()
    Dim myfield As Object
    Dim mycode As String
    For Each myfield In ActiveDocument.Fields
        mycode = myfield.Code
        myfield.Select
        Selection.Range.text = ruby(mycode)
    Next
End Sub
Function ruby(codetext)
    'codetextはルビを表すフィールドコード「EQ~(~(るび),ルビ)」
    Dim i, pos As Long
    Dim rubybase, rubytext, t As String
    pos = 0
    rubybase = ""
    rubytext = ""
    For i = 1 To Len(codetext)
        t = Mid(codetext, i, 1)
        If t = "(" Or t = ")" Or t = "," Then
            pos = pos + 1
        ElseIf pos = 2 Then
            rubytext = rubytext & t
        ElseIf pos = 4 Then
            rubybase = rubybase & t
        End If
    Next i
    ruby = rubybase & "(" & rubytext & ")"
End Function

VBAでは工夫すれば正規表現が使えるのですが、今回は括弧やカンマの位置からルビの文字列を取得しています。となると「ルビに括弧やカンマが含まれていたら取得できない」という問題がありますが、実はそもそもWordではルビに括弧やカンマをセットすることができないようです。Word2007で確認しました。

[ 2013年6月12日 | カテゴリー: Word | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報