文字コードがないハイフンのように見える"−"横棒(Excel)
Amazonマーケットプレイスからデータをダウンロードすると電話や住所にやや長めのハイフンがある。これをメールがデータベースに展開すると「?」となる問題(2012/04/12 小平探検隊)

乱れきったハイフン


文字コードのことはよくわからない。全角ハイフンと半角ハイフンには、文字コードが割り振られているが、文字コードが割り振られていないハイフンがあるらしい。それがAmazonマーケットプレイスで使用されている。

Excelに展開したときはハイフンらしく表現されるが、メールに取り込むと「?」と文字化けを起こす。

Accessに取り込んでも、取り込み方によるが、ハイフンらしい形状。ということはMicrosoft社製品は、おおむね受け入れてくれる文字なのかもしれない。JISベースかな?

しかし、一般には通用しない文字である。

Excel VBAで変換できない理由


そこでExcelにてこの「ハイフンらしきモノ」を、Ascii半角ハイフンなどデファクト的な文字に変換しようとすると、これができない。

たとえば、下記コードをvbaで作成し「ハイフンらしきモノ」をペーストすると「?」に自動変換される。これで置換すると全文字が「-」になる。

selectedRange.Replace "?", "-", xlPart

そこで、文字コード指定で変換を試みる。「ハイフンらしきモノ」の文字コードはChr(63)らしい。これは「?」という文字だそうだ。

Chr(45)は半角ハイフンの意味。

下記のようなコードをVBAに入れてみた → 何も起こらなかった。

selectedRange.Replace "~" & Chr(63), Chr(45), xlPart

この「ハイフンらしきモノ」には、文字コードが割り当てておらず、vbaなどのプログラムでは変換できないということらしい。

「ハイフンらしきモノ」をvbaにペーストすると自動的に「?」になることは上に書いたが、これはAsciiコードの「?」ではなく、文字コードが「わからない」という意味らしい。

日本語の文字コードは細部ではグチャグチャみたい。本当に文字コード問題には近寄りたくない。

苦肉の対応策


vbaに落とすことができないので、毎回「ハイフンらしきモノ」をハイフンに置換する作業を手作業で行うことにした。

(1)あらかじめ記入されている「ハイフンらしきモノ」のセルのコピー(Crtl+C)
(2)Ctrl+H(置換)
(3)置換パネルで、置換するモノに「ハイフンらしきモノ」をペースト(Ctrl+V)、置換文字に半角ハイフンを入れて置換していく

数回のキー操作と1分程度の作業 → ムダ。しかし、現状これしかない。多くの人がこの作業をやるしかないとしたら、国益にさえ損ないかねない状況だ。

今はこの手作業自体を、VBAで自動化している。動作するが、本当に美しくない。






  • (2012-04-12 11:39:52)
<< HDDをDtoD領域も含めて丸ごとコピーするEaseUS< | >(TEST) >>

[▲page top]