http://www.vba-manners.info/ というHPを作成し、表示の確認はFireFoxで行っていた。その昔、Netscap Navigater の方が Internet Explorer より制約が厳しかったので厳しい方に合わせて作っておけばOKだったからだ。
※FireFox は Netscap Navigater の流れを汲んでいる、と理解してますが、間違ってたらすんません・・。

さて、たまたまIEで確認したら「閲覧できないページ」がある」ことに気がついた。ソースは読み込まれているのだが、真っ白ページになっている。やばい!ダウンロードページは全く見れないじゃないか!
まあ、せっかくだからと他のブラウザも試してみることにした。とりあえず、有名どころのOpera, 国産のSleipnir。
Sleipnirでは表示できないが、Operaでは崩れて表示された。見ると、タグが合っていなかった。今のところエディタで手書きで書いているから、ミスはあるいだろうとは思っていたが・・。それを修正すると、Sleipnir、Opera のどちらでも表示されるようになった。で、IEはというと、真っ白のページのままだ。

ちなみにIEは6を使っている。これで表示できるなら他のでもOK、となるのかな?とりあえずシェアの大きいIEで見られないのは致命的である。なんとか早めに対応しなくては。


---------------------------------------------------
【解決】
表示されないページのエンコードを見ると、Shift-JISになっていた。そこでHTMLを確認すると
<TITLE>タイトル</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
の順に並んでいた。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>タイトル</TITLE>
の順に並べたら上手くいった。
先日書いた記事 に登場したマネージャーの話。


ある時、業者へ注文書のFAXを自動的に送るため、汎用機に加えFAXサーバーを追加することになった。その際、「1時間に最大どれほどFAXサーバーにデータを送れるか」の試験をしたいという要望が顧客から出てきた。ちなみにシステムは汎用機。私はCOBOLでダミーデータを「一度気に数十件流す」「数秒おきに1件づつ流す」というテストプログラムを用意すればできるかな、などと同僚と話をしていた。

それを聞いたマネージャーは鼻で笑い「前のプロジェクトではツールを作って1分間でどれだけトランザクションが到着しても大丈夫かの性能試験を主導した」とか言った。そこまで変なアイデアとも思わなかったので確認をした。


マ、はマネージャー。


「前のプロジェクトでは具体的にどうやったのですか?」

「いや、よく知らないんだよ」

「前のプロジェクトに問い合わせはできますか?」

「いや、うーん、難しいね」

空いた口が塞がらなかった。自分でできないなら、前のプロジェクトに問い合わせりゃいいのに、それもできないの?と。じゃあ鼻で笑ったのはなんだよ!と思ってしまった。
後で同期から聞いたところ、前のプロジェクトでは結局役に立たないから厄介払いされた、というのが真相であったらしい。よくもまあ、いい歳して、自分ではできないし情報収集もできないことを言うよな、と、以降は属していたプロジェクト内で信用されなかったのは言うまでもない。

ちなみに、その後の検討で「汎用機とFAXサーバーのデータ通信より、FAXの送信量の方がボトルネックになる」ということで、対象データでもFAXサーバー側で受理したデータの処理を保証することを確認してもらい性能試験は行わなくて済むことになった。
ホームページの管理を行うにあたり、ページの一貫性は重要である。そのため、AccessやExcelで基礎データを作っておき、整合性を持ってページの内容を書き換えるようにしたい、という構想を持っている。

そこで、VBAでHTMLを生成するサンプルを作ってみることにした。題材は自治体の人口一覧。各自治体のHPから人口情報を取得し、かつURI情報も取得し、Excelで一覧にする。そこから必要な情報のみをHTML化するようにしてみる。

Excelは内部コードはUNIコードであるが、通常のOPEN/CLOSEを用いてのテキストファイルを出力すると「ASCII+ShiftJIS」である。しかし、charsetは選択できるようにしたい。

その場合、通常のOPEN/CLOSEに替えて、ADODBのStreamを利用すれば簡単である。例としてUTF-8で出力をしてみた。

なぜADO?と思う向きもあるだろうが、ADOはデータベースのみならずテキストストリームも扱えるのだ。

参考:マイクロソフトの資料
 Streamの説明
 Charasetの説明

さて、Charasetにどんな文字を設定すればいいのか。上記のCharasetの説明にもあるが、Windows レジストリの HKEY_CLASSES_ROOT\MIME\Database\Charset のサブキーを参照すればよいそうである。

部分部分を常駐のクラスモジュールで組み立てていくと、意外なほど簡単に組み上がる。早速このページを生成しアップしてみようか、という気になっている。