[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『人名用漢字の字体検索』(ホロ)
人名用漢字の字体一文字について、あるアプリに登録可能な字体なのか否が分からない為、今後登録可否が分かったものを蓄積していき、今後調べたい字体をExcelに作成した入力フォームに入力して確定すれば、入力可否と蓄積有無がメッセージとして表示され、蓄積無ならば登録ボタンを押すことで入力可か入力否かどちらかのデータ一覧に記録されるVBAを作成予定です。そもそも人名用漢字の検索はVBAで可能なものであるか否かご教示願いますでしょうか。( 人名用漢字一文字一文字に全て文字コードが存在し、Excelに検索されて表示されるものなのか分かりません)ネット等で調べましたが、文字コードについて、unicodeやShift-JISのVBAでの取り扱いがイマイチ分かりませんでした。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
とはいえ、人間の確認用にはExcel上で管理するのだろうだし、難しい漢字は他の漢字で代用して入力しているのではないでしょうか? 例えば、わたなべの「なべ」の部分とか、何十種類もあって、間違えずに運用なんて無理に思います。
(???) 2019/07/29(月) 11:03
(ホロ) 2019/07/30(火) 21:42
(γ) 2019/07/30(火) 22:24
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
複数のPCで行なう業務ならば、それらのPC全てに導入する
必要がありますので「ボリュームライセンス」等も考慮すると良いでしょう。
(AddinBox 角田) 2019/07/31(水) 10:50
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
If Range("A1") = "產" Then (???) 2019/08/01(木) 11:27
もっと使いやすく、とか思うならば、市販のATOKを使ってみるとか。 ただ、最近のATOKは買い切りが無くなったようなので、ちょっと考えちゃいますが。(毎月課金)
Excelでも、難しい漢字には簡単な漢字や読みをキーワードとしてシートに並べておけば、ここから比較するだけです。 考え方は簡単ですが、それは人名辞書を作るだけの労力が必要になることでしょう。
市販のIME(辞書)はそれだけ時間をかけて作成されていて優秀ですが、自前ならば、どんな難しい漢字でも、一度登録してしまえば必ず出てくるというメリットがあります。 まずはIMEでどれだけ対応できないものがあるか確かめてから、Excelによる辞書化も考えてみてはいかがでしょうか。
(???) 2019/09/02(月) 10:53
アプリを使わなくとも、簡単な漢字を入力すると似た漢字一覧を表示するのは、私がExcelでの実現を提案しているものと同じ考え方です。
(???) 2019/09/02(月) 11:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.