前回からの続きです。
選択された文字列を変数%Sentenceに格納する。
!!第4ブロック
%Str =GetString()
%StrNum = Size(%Str)
%Sentence = ""
For %i= 1 to %StrNum
%Sentence = %Sentence & %Str(%i)
Next
ここでは選択範囲の文字列を一字々々チェックし、全角左括弧、全角右括弧を
検索する。括弧が見つかったら、その間にある文字列を変数%Goku()に、
そのふりがなを変数%Yomi()に格納していく。
変数%GokuNumにはユーザが全角括弧で指定した語句数を格納する。
尚、補足であるがエクセルのふりがなはデフォルトでカタカナを指定しているので、
Zen()とHira()でひらがなでふりがなが表示されるようにしている。
!!このプログラムの心臓部(第5ブロック)
%CharCount = Len(%Sentence)
%GokuNum=1
For %i = 1 To %CharCount
If Mid(%Sentence, %i, 1) = "(" Then
%j = 0
%Cnt = %Cnt + 1
Do While Mid(%Sentence, %i + %j, 1) <> ")"
%j = %j + 1
Loop
%Goku(%GokuNum) = Mid(%Sentence, %i + 1, %j - 1)
%Yomi(%GokuNum) = Hira(Zen(%Excel.GetPhonetic(%Goku(%GokuNum))))
%GokuNum = %GokuNum + 1
End If
Next
WarningMode(0)で問い合わせのダイアログが表示されないようにする。
文字列全置換で全角左括弧、全角右括弧を消去する。
!!第6ブロック
WarningMode(0)
文字全置換(.検索文字列="(",.置換文字列="",.検索方向=3,.あいまい検索=1,.確認=0)
ReviveAdvancedRange( )
文字全置換(.検索文字列=")",.置換文字列="",.検索方向=3,.あいまい検索=1,.確認=0)
setMarumojiでサブプロシージャを呼び出し、グローバルな配列変数$Marumoji()に
丸数字を格納しておく。
Forループでユーザが全角括弧で指定した漢字を丸文字付きのふりがなに置換していく。
WarningMode(1)で問い合わせのダイアログが表示されるようにしておく。
呼び出したエクセルの後始末。
カーソルを文章末に移動し、ユーザが全角括弧で指定した漢字を書き出す準備をする。
!!第7ブロック
setMarumoji
for %i = 1 to %GokuNum -1
ReviveAdvancedRange( )
文字全置換(.検索文字列=%Goku(%i),.置換文字列="(" & $Marumoji(%i) & %Yomi(%i) & ")",.検 索方向=3,.あいまい検索=1,.確認=0)
next
WarningMode(1)
%Excel.Quit
Set %Excel = Nothing
EndOfParagraph( 2 )
Insert("",1)
Insert("",1)
文章末にユーザが全角括弧で指定した漢字に丸数字を付けて書き出す
以上が「漢字問題作成マクロⅡ」プログラムの主部である。
あとはサブプロシージャのsetMarumajiのコードだけだ。
!!サブプロシージャ
Sub setMarumoji
$Marumoji(1) = "① "
$Marumoji(2) = "② "
$Marumoji(3) = "③ "
$Marumoji(4) = "④ "
$Marumoji(5) = "⑤ "
$Marumoji(6) = "⑥ "
$Marumoji(7) = "⑦ "
$Marumoji(8) = "⑧ "
$Marumoji(9) = "⑨ "
$Marumoji(10) = "⑩ "
$Marumoji(11) = "⑪ "
$Marumoji(12) = "⑫ "
$Marumoji(13) = "⑬ "
$Marumoji(14) = "⑭ "
$Marumoji(15) = "⑮ "
$Marumoji(16) = "⑯ "
$Marumoji(17) = "⑰ "
$Marumoji(18) = "⑱ "
$Marumoji(19) = "⑲ "
$Marumoji(20) = "⑳ "
End Sub
単純にグローバルな配列変数$Marumoji()に丸数字を格納するだけだ。
コメント