StrConv()の罠

今、Excelで作っているツール。 CSVファイルを読んで、ある列の全角カタカナを半角カタカナに、ハイフンなしの電話番号を市外局番、市内局番、加入者番号ごとにハイフンを挿入してExcelファイルに変換するというもの。 電話番号は、総務省の市外局番一覧をダウンロードして、番号を当てながら桁数をきめないといけないので、ちょっと大変だけど、まあ、それほど問題ではない。 問題なのは、全角カナを半角カナに変換するほう。 ネットを見るとStrConv()って関数で一発変換できそうに書いてある。 試してみると、実行時エラーになって上手く行かない。 エラーって、ただ文字列と、ナニに変換するかを指定するだけで、エラーになるような要素はない。 困ったなあと思いながらググってみると、 StrConv(string, conversion, LCID) と書いてあるページを見つけた。 LCIDってなんだと思い読んでみると

LCID
省略可能です。
使用しないと思いますので、読み飛ばして構いません。
システムとは異なる国別情報識別子 (LCID) を指定できます。
既定値はシステムが使用する LCID です。

って書いてある。 なるほど、こいつかと思い至った。 Windowsの日付の表示を米国用にしているので、 LCIDが日本ではないからエラーになってる模様。 同じページに

vbNarrow* 8* 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。
* 国別情報の設定が中国、韓国、および日本の場合に適用されます。

とも書いてあった。 そこで、日本のLCIDを探して、引数に追加するとサクッと変換できた。 Windowsのロケールを日本以外にしてる奴なんていないかもしれないけど、もししていて、StrConv()がエラーになれば、LCIDを設定すればおっけーだからね!
鉄男さんの長男が16歳の誕生日だそう。 そして、きょうは、頭痛なし。
--
はれ

No comments: