[[20190728153236]] 『人名用漢字の字体検索』(ホロ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『人名用漢字の字体検索』(ホロ)

人名用漢字の字体一文字について、あるアプリに登録可能な字体なのか否が分からない為、今後登録可否が分かったものを蓄積していき、今後調べたい字体をExcelに作成した入力フォームに入力して確定すれば、入力可否と蓄積有無がメッセージとして表示され、蓄積無ならば登録ボタンを押すことで入力可か入力否かどちらかのデータ一覧に記録されるVBAを作成予定です。そもそも人名用漢字の検索はVBAで可能なものであるか否かご教示願いますでしょうか。( 人名用漢字一文字一文字に全て文字コードが存在し、Excelに検索されて表示されるものなのか分かりません)ネット等で調べましたが、文字コードについて、unicodeやShift-JISのVBAでの取り扱いがイマイチ分かりませんでした。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


すみません、補足です。漢字字体は、苗字も含まれる為人名用漢字だけではありません。
(ホロ) 2019/07/28(日) 16:07

人名用となると、WINDOWSは対応していても、Excel VBAが対応していないから自動化が無理、とかありそうに思いますね。 例えば「鬜」は、セルには書けますが、マクロには書けないです。 unicodeでは不十分なので、UTF-8 が扱えるコンピュータ言語を利用した環境で、アプリ作成しないといけないように思いますよ。

とはいえ、人間の確認用にはExcel上で管理するのだろうだし、難しい漢字は他の漢字で代用して入力しているのではないでしょうか? 例えば、わたなべの「なべ」の部分とか、何十種類もあって、間違えずに運用なんて無理に思います。
(???) 2019/07/29(月) 11:03


入力枠にユーザーが入力した鬜のような漢字は、入力漢字を変数として使用してもVBAでは検索出来ないということでしょうか。UTF-8 はVBAでは扱えないのですね。IMEパッドで確認してExcelに入力していく予定でしたが、そもそもそれ自体も他の字で代用しないと入力出来ない文字もあるということでしょうか。教えて頂きありがとうございます。

(ホロ) 2019/07/30(火) 21:42


法務省 戸籍統一文字情報
http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/EXECUTE
をみると、文字コードが割り振られていない漢字はいくらでもありそうです。

(γ) 2019/07/30(火) 22:24


文字コード割り振られていない漢字がいくらでもあるということは、そのような文字はVBAでは検索も判別もできないという事ですよね、残念です、教えて頂きありがとうございます
(ホロ) 2019/07/30(火) 23:19

コードに無い漢字を使う場合、外字登録するという手がよく使われます。 会社または部門内で、統一した外字とする必要はあるでしょうけど。

windowsが対応したunicode文字を、文字列としてマクロには書けませんが、以下のようにunicodeのままとしてなら扱えます。 だから頑張ればなんとかなるかも知れませんが、いろいろ厳しいでしょうね。

 Sub test()
    Range("A1") = ChrW(&H9B1C)
    Range("A2") = ChrW(&H9B1D)
    Range("B1") = Hex(AscW(Range("A1")))
    Range("B2") = Hex(AscW(Range("A2")))
    Range("A3").Formula = "=A1=A2"
 End Sub

そして、外字を利用して名前登録できたとして、作りたいのは検索システムな訳で、検索ワードとして難しい漢字を入力する事はないと思います。 だから、簡単な漢字で検索して、同じ漢字と似た漢字すべて引っかかるようなシステムにしないといけないでしょう。 ちょっとした漢字辞書システムを作る事になりそうです。
(???) 2019/07/31(水) 09:50


DynaFont や 筆まめ 等の市販の「人名外字フォント」ソフトを
導入するのが一番簡単ですよ。

複数のPCで行なう業務ならば、それらのPC全てに導入する
必要がありますので「ボリュームライセンス」等も考慮すると良いでしょう。

(AddinBox 角田) 2019/07/31(水) 10:50


unicodeのままなら扱えるんですね、希望を捨てずにもう少し勉強して頑張ってみようと思います。ありがとうございます。外字については予算上ソフトの導入は難しそうです。。全体で同一外字を統一するのも難しい環境ですが、unicodeのある漢字だけでも対応できるプログラムにできないかもう少し考えてみようと思います。例えば「產」だとutf8.16しか文字コードがないようにネットを調べていると思われるのですが、Excelには文字入力出来、ctrl+fで検索するとヒットもしました。このようなヒットはするけれどもVBAとなると上記で教えて頂いたようにunicodeのままでないと取り扱えないという認識でよいのでしょうか。
(ホロ) 2019/07/31(水) 18:54

 1) 人名用漢字のリストを下記URLよりコピーしてメモ帳に貼り付け Unicode を選択して保存。
https://kakijun.jp/main/jinmei_ichiran.html

 2) 1) を[データ] - [テキストファイル] でエクセルシートにインポートする。

 下記コードは人名用漢字リストがSheet2のA1からE137に転記され、該当名簿がSheet1のA列にあることを想定しています。

 Sheet1のA列に 1)のリストにある漢字が使用されている場合はSheet1のB列に抽出します。

 完全に抽出できるかわかりませんが試してください。

 Sub test()
     Dim a, i As Long, ii As Long, n As Long, myPtn As String
     Dim r As Range, rng As Range, m As Object
     a = Sheets("sheet2").Cells(1).CurrentRegion.Value
     ReDim b(1 To UBound(a, 1) * UBound(a, 2))
     For i = 1 To UBound(a, 1)
         For ii = 1 To UBound(a, 2)
             If a(i, ii) <> "" Then
                 n = n + 1
                 b(n) = Hex(AscW(a(i, ii)))
             End If
         Next
     Next
     ReDim Preserve b(1 To n)
     myPtn = "[\u" & Join(b, "\u") & "]"
     With Sheets("sheet1")
         With .Range("a1", .Range("a" & Rows.Count).End(xlUp)).Resize(, 2)
             .Columns(2).ClearContents
             a = .Value
             With CreateObject("VBScript.RegExp")
                 .Global = True
                 .Pattern = myPtn
                 For i = 1 To UBound(a, 1)
                     For Each m In .Execute(a(i, 1))
                         a(i, 2) = a(i, 2) & m
                     Next
                 Next
             End With
             .Value = a
         End With
     End With
 End Sub
(seiya) 2019/07/31(水) 19:58

UNICODEはUTF-16の一種なので、「產」は表示できてもおかしくないですよ。
問題になるのは、例えば以下のようにお手軽な比較で書けないというところですね。 試しに、VBAの編集画面にコピペしてみてください。 文字が化けちゃいます。
    If Range("A1") = "產" Then
(???) 2019/08/01(木) 11:27

プログラムをご教授頂きありがとうございます、様々な人名漢字を入力しつつ試させて頂こうと思います。
產はutf8・16は入力はセルに入力や検索は出来るけれど、VBAでは漢字のままでは記載できないので、VBAで記載するならUnicodeのままで記載、ということですね。みなさん理解不足&拙い質問に答えて頂きありがとうございます。あまりにも文字コード&文字化け防止の方法・文字化けしない環境整備等の知識が浅いのでもっと勉強したいと思います。
(ホロ) 2019/08/01(木) 22:29

旧字体をフォーム使用時にテキストボックスにスムーズに入力すべく、inkeditを配置し、マウス手書きする仕様にしたのですが、正しく変換されません。。IMEパッドの手書きのように手書きに近いものから選択入力するなど、何か対応策をご存知の方いらっしゃいましたらご教示頂きたいです。
(ホロ) 2019/09/01(日) 11:20

Excelというより、IMEの機能を使う方が良いのでは? IMEパッドなら、手書きや部首から探せますよ。

もっと使いやすく、とか思うならば、市販のATOKを使ってみるとか。 ただ、最近のATOKは買い切りが無くなったようなので、ちょっと考えちゃいますが。(毎月課金)

Excelでも、難しい漢字には簡単な漢字や読みをキーワードとしてシートに並べておけば、ここから比較するだけです。 考え方は簡単ですが、それは人名辞書を作るだけの労力が必要になることでしょう。

市販のIME(辞書)はそれだけ時間をかけて作成されていて優秀ですが、自前ならば、どんな難しい漢字でも、一度登録してしまえば必ず出てくるというメリットがあります。 まずはIMEでどれだけ対応できないものがあるか確かめてから、Excelによる辞書化も考えてみてはいかがでしょうか。
(???) 2019/09/02(月) 10:53


試していませんが、以下のページの「ソフトウェア工房」で公開している、「異体字転」というフリーソフトはどうでしょうか?
https://www.eonet.ne.jp/~kotobukispace/index.html

アプリを使わなくとも、簡単な漢字を入力すると似た漢字一覧を表示するのは、私がExcelでの実現を提案しているものと同じ考え方です。
(???) 2019/09/02(月) 11:25


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.