| エクセルVBAでUNICODEの正規化を行いたい。 | |
|---|---|
[195659] エクセルVBAでUNICODEの正規化を行いたい。- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ うに -(2023/03/14(22:14)) □U R L/
Sub a()
Range("A1").Value = "ピノキオ"
Range("B1").Value = ChrW(&H30D2) & ChrW(&H309A) & "ノキオ"
Range("C1").Formula = "=A1=B1"
End Sub
上記を実行すると、
A1セルにもB1セルにも「ピノキオ」という文字列がセットされます。
見た目上は2つに違いはありません。しかし、文字自体は別物です。
B1の状態の「ピノキオ」をA1の「ピノキオ」に変換(※)したいのですが、
他の開発言語では専用の関数などが用意されているようですが、
エクセルVBAでできますでしょうか。
※“UNICODEの正規化”と言うみたいです。
結合文字(上記例では半濁音 ChrW(&H309A) )を含んだ文字列を
結合済文字?(純粋な1文字)に変換。
実際には、シートには手入力したり、ブラウザなどからコピペした文字列などがセットされています。
その中には、結合文字などを含んだりしていて、見た目上、まったく同じであっても、
内部文字コードは違う為、検索してもヒットしなかったり、という弊害が発生しています。
UNICODEでは起こる事象なので、そこは仕方ないのですが、
それを回避するために正規化をする必要があります。
エクセルVBAで正規化する方法があるのか、という質問となります。
よろしくお願いします。この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
[195660] Re[1]: エクセルVBAでUNICODEの正規化を行いたい。- ■記事引用/メール受信=OFF■ □投稿者/ まる -(2023/03/15(11:00)) □U R L/
| |
[195661] Re[2]: エクセルVBAでUNICODEの正規化を行いたい。- ■ □投稿者/ うに -(2023/03/15(23:12)) □U R L/ 4種類あることは調査してて、その中のNFKCをVBAで実現できれば 私の目的とすることができる、と考えていました。 そこまでしか調べることができなかったのですが、 まさかAPIに専用の関数があるとは思いませんでした。 教えていただいた方法で問題なく実現できそうです。 ありがとうございました。 | |
| このトピックに書きこむ |
|---|