2010年11月18日木曜日

外国語が文字化けしている VBA コードを読むには

外国語環境で作成されたファイルを日本語版 Access で開くと、VBA コード中の外国語が文字化けすることがあります。
英語なんかは大丈夫ですが、ウムラウトを含むヨーロッパ言語とか中国語などのアジア系言語はかなりの確率で、化けます。


これを、とりあえず文字化けせずに読む方法。

と言っても VBE 上ではどうしようもないので、テキストファイルに出力してエディタで文字コード指定して開く、というベタなやり方になります。

説明としては以上で終わりです。

以下、延々検証例。

イタリア語


もともとイタリア語は読めないので確信は無いものの、何となく化けている雰囲気を感じます。
出典は MS ACCESS Code Sample - versione usabile/accessibile

このモジュールを、プロジェクト エクスプローラから任意のフォルダ上にドラッグ&ドロップして、テキストファイルに出力します。
右クリックから [ファイルのエクスポート] でもいいです (フォームやレポートのクラスモジュールは、こちらの方法で)。


出力したテキストファイルを、文字コードを指定して読み込める任意のエディタで開きます。メモ帳は不可。
今回は、EmEditor Free を使ってみます。
EmEditor Free を起動し、[開く] コマンドを実行。


文字コードに何を指定するのが適切かは状況によりけりですが、今回は何となく「中央ヨーロッパ言語 (Windows) (1250, windows-1250)」というのを選んでみます (これでよいのかどうかは、よく分からない)。



VBE 上では文字化けしていた箇所が、正しく (たぶん…) 表示されています。

ドイツ語


出典は Team-Moeller.de - Datenbankentwicklung und mehr...
文字コードには同じく「中央ヨーロッパ言語 (Windows) (1250, windows-1250)」。

ロシア語


出典は Программирование MsAccess, VB, VBA
文字コードは「キリル言語 (Windows) (1251, windows-1251)」。

中国語


出典は中国語版 NorthWind.mdb。
文字コードは「繁体字中国語 (Big5) (950, big5)」。



以上、4 言語にわたって実例を見てきました。
文字コードの選択さえ間違えなければ、おおむね正しく表示できそうです。
個人的には、正しく表示されていようがいまいが、どっちみち外国語は読めないんですけれど、読める人にとっては意味があることでしょうし、読めない人にとっても機械翻訳のソースとしては化けていないほうが はるかにベターといえるでしょう。

ただ いちいちテキストファイルを経由するのが手間なので、確認したいモジュールがあんまりたくさんあるようなら、アドイン作って VBE の脇にツールチップとして表示させちゃった方が早い気がします。

2010/12/10 追記:
外国語環境で日本語コメントや定数が化ける場合は、同様にして文字コード「日本語 (シフト JIS) (932, shift_jis)」で開けばよいと考えられます。自分の日本語環境では最初から化けていないので、「化けているのが直るテスト」はできませんが。

0 件のコメント:

コメントを投稿