Range.PhoneticGuideメソッドを使いやすくする(Word)
[Range].PhoneticGuideメソッドを使いやすくする
[Range].PhoneticGuide
メソッドはちょい使いにくいので、使いやすく改良。
改良したコード
[Range].PhoneticGuide
メソッドは、何といっても引数Raise
が超絶わかりにくい。ゆえに、[Range].PhoneticGuide
メソッドをラップして使いやすくした。
リスト1
Private Const MS_P_GOTHIC As String = "MS Pゴシック" Private Const MS_GOTHIC As String = "MS ゴシック" Private Const MS_MINGZHAO As String = "MS 明朝" Private Const MS_P_MINGZHAO As String = "MS P明朝" Private Const DEFAULT_RUBYSIZE As Long = 5 Private Sub callPhoneticGuide( _ ByVal tgtRange As Range, _ ByVal tgtRubyText As String, _ ByVal tgtOffset As Long, _ Optional ByVal tgtRubySize As Long = DEFAULT_RUBYSIZE, _ Optional ByVal tgtFontName As String = MS_P_MINGZHAO, _ Optional ByVal tgtAlignment As WdPhoneticGuideAlignmentType = _ wdPhoneticGuideAlignmentOneTwoOne) '引数で指定されたRangeオブジェクトをSelectする' Call tgtRange.Select '一旦右にカーソルを移して親文字のフォントサイズを取得' Call Selection.MoveRight(wdCharacter, 1, wdMove) Dim parentFontSize As Single parentFontSize = Selection.Font.Size '親文字のフォントサイズと、引数tgtOffsetを元に、Raise値を取得' Dim tgtRaise As Long tgtRaise = Int(parentFontSize) - 1 + tgtOffset '再度親文字を選択状態にし、PhoneticGuideメソッドを実行' Call tgtRange.Select Call Selection.Range.PhoneticGuide( _ Text:=tgtRubyText, _ Alignment:=tgtAlignment, _ Raise:=tgtRaise, _ fontSize:=tgtRubySize, _ FontName:=tgtFontName) 'ルビを施した文字列を選択状態にする' Call Selection.MoveRight(wdCharacter, 1, wdSelection) End Sub
ちょっと引数祭り状態だが、そもそも[Range].PhoneticGuide
メソッドが引数祭りメソッドなので許してほしい。
何といっても、ルビの親文字からの距離を指定できるようにしたことがポイント。
実は、めっちゃめんどくさいことをしている。
'引数で指定されたRangeオブジェクトをSelectする' Call tgtRange.Select '一旦右にカーソルを移して親文字のフォントサイズを取得' Call Selection.MoveRight(wdCharacter, 1, wdMove) Dim parentFontSize As Single parentFontSize = Selection.Font.Size '親文字のフォントサイズと、引数tgtOffsetを元に、Raise値を取得' Dim tgtRaise As Long tgtRaise = Int(parentFontSize) - 1 + tgtOffset
コメントを読んでもらったら、いかにめんどくさいことをしているのか、わかっていただけると思う。
使ってみる
たとえば、
この状態で、
このように「本気」の部分を選択し、次のコードを実行。
リスト2
Private Sub testPhoneticGuide() Call callPhoneticGuide(tgtRange:=Selection.Range, _ tgtRubyText:="マジ", _ tgtOffset:=1, _ tgtRubySize:=5) End Sub
すると、
こうなる。
ルビの設定を確認すると、
バッチリ。
さらに、同じ箇所を選択した状態で次のコードを実行。
リスト3
Private Sub testPhoneticGuide() Call callPhoneticGuide(tgtRange:=Selection.Range, _ tgtText:="マジ", _ tgtOffset:=0, _ tgtRubySize:=5, _ tgtFontName:=MS_P_GOTHIC) End Sub
今度は、オフセット値を0
にし、ルビのフォントを「MS Pゴシック」にしてみる。
すると、
こうなる。
ルビの設定を確認すると、
やはりバッチリ。
おわりに
これで使いやすくなった。
基本、これでルビを設定し、細かなチューニングはフィールドコードをFind
オブジェクトを用いて書き換えるようにすれば良い。