秀丸マクロでEXCELのPROPER関数を実装

SNYDER'Sにハマっているbonlifeです。昨夜、人力検索はてなの質問(http://www.hatena.ne.jp/1139656587)に不正確な回答をしてしまいました。まぁ、いつものことです。再回答しましたが、開かれない可能性もあるのでこちらにも書いておきます。(再回答の内容にもゴミコードが含まれてます…。ガビョーン。)EXCELでのPROPER関数、OracleでのINITCAPのような英単語の先頭を大文字、それ以外を小文字にするマクロを作成いたしました。

disabledraw;
// 全て選択し、小文字に変換
selectall;
filter "" , "ToLower";
// 単語の先頭の文字を大文字に変換
gofiletop;
while (code != eof ){
	beginsel;
	right;
	endsel;
	filter "" , "ToUpper";
	escape;
	left;
	wordright;
}
gofiletop;
enabledraw;

秀丸がVer 5.0以上の場合、変換モジュールが標準で組み込まれており、大文字への変換(ToUpper)、小文字への変換(ToLower)は簡単に実行できます。wordrightの動きと改行の関係がよくつかめておらず、最初はleftを入れておりませんでした。その結果、改行直後の単語(つまり行頭の単語)の先頭の文字が大文字になりませんでした。色々試していると改行も1つのwordとして扱われているようでしたので、leftで元の位置に戻した後、wordrightで次の単語を指定してみました。すると求める動きをするようになりました。めでたし、めでたしです。最初whileの次の行にgowordtopを入れていたのですが、wordrightした時に次の単語の先頭にカーソルが移動しており、gowordtopは全く無意味だということが分かりましたので、その部分も削除いたしました。
後はお好みに応じて選択範囲に対して処理をするように改訂をしたり、マクロ実行後のカーソルの位置を元に位置やファイルの最後に変更するなどしてみてはいかがでしょうか。それにしても秀丸マクロ、便利ですね。