声調

中国語の発音をパソコンに記録するとき、声調記号を記録する方法がないことに長い間悩んでいました。指折り数えてみればかれこれ四半世紀。Webで中国語の発音を検索したら、辞書サイトにはきちんと発音が声調記号つきで表示されているので、パソコンのWordのVBAで入力ツールを作ることにしました。

ところが、調べてみると例えば同じ母音「i」について、一声、二声、三声、四声に違うキャラクターを使っているようで、めんどくさそうでした。代わりにunicodeの&h300あたりにある(shift-jis時代から文字コードについて考えたことがなかったので、このへんの表現は間違っているかもしれない)記号を利用しました。

たとえば半角で「a」を入力し、その直後にこのマクロを使うと、最初に一声、もう一度押すと二声という順番で記号が変わっていき、四声の次は記号なし(軽声)となります。記号なしのあとでまた一声に。いったんべつの場所にカーソルを移動したあと、任意の場所で上記の操作をすることも可能です。

 注意点は、フォントをarialまたはtimes new romanにしなければならないということです。他のフォントだと微妙に記号と文字本体の位置がずれます。

私はキーボードにショートカットを登録して使っています。ロシア語学習者もアクセントの位置を記録するのに使えるはずです。


Sub 声調記号追加変更()

‘ やゆよ記念財団 2017/8/6
‘ 声調記号追加用簡易マクロ(中国語用 ロシア語にも使えるよ)

Dim str As String, nStr As String

Application.ScreenUpdating = False ‘画面更新を停止して高速化
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExten
str = Selection.Text ‘str=左側1文字
Selection.Delete ‘更新前の文字列を消去
If InStr(str, ChrW(&H304)) Then ‘一声なら…
nStr = Replace(str, ChrW(&H304), ChrW(&H301)) ‘二声に
Else
If InStr(str, ChrW(&H301)) Then ‘二声なら…
nStr = Replace(str, ChrW(&H301), ChrW(&H30C)) ‘三声に
Else
If InStr(str, ChrW(&H30C)) Then ‘三声なら…
nStr = Replace(str, ChrW(&H30C), ChrW(&H300)) ‘四声に
Else
If InStr(str, ChrW(&H300)) Then ‘四声なら…
nStr = Replace(str, ChrW(&H300), “”) ‘記号を消す
Else
nStr = str & ChrW(&H304) ‘記号がなければ一声
End If
End If
End If
End If
Selection.TypeText (nStr)

Application.ScreenUpdating = True
End Sub

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中