事業所郵便番号をIME辞書に登録するよ(その2)

この記事は約7分で読めます。

その1からの続き

登録できなかったレコードをなんとか登録したい

事業所郵便番号をIME辞書に登録しようとしたら、文字数オーバーで登録できないレコードが生じてしまいました。画面から入力できる文字列の上限は全角でも半角でも60文字なので、文字列をどこかで切り捨てるしかないかな、と思っていました。

ところが試しに英数字、カタカナを半角にしてユーザー辞書ツールに入力してみたところ、 文字数オーバーで登録できないレコードがは101件から14件に減ったのです。

つまり、 ユーザー辞書ツール の「単語」領域は、テキストファイルからの登録であれば半角120文字まで入力できるようですね。

入力できなかった14件は、次の郵便番号でした。

郵便番号住所
060-8534北海道 札幌市中央区 北二条西 4丁目1番地札幌三井JPビルディング7階 株式会社 かんぽ生命保険 北海道エリア本部・札幌支店・札幌ヘルプデスク
100-8383東京都 千代田区 丸の内 1-6-1丸の内センタービル8階 新東亜交易 株式会社 本店 (SHINTOA CORPORATION)and(SHINTOA KOEKI KAISHA.LTD.)
305-8560茨城県 つくば市 梅園 1丁目1-1中央第1 国立研究開発法人 産業技術総合研究所 つくば中央第1事業所 (つくば本部・情報技術共同研究棟)
330-9045埼玉県 さいたま市浦和区 針ヶ谷 4丁目2-20住友生命浦和テクノシティービル5F(さいたま新都心郵便局私書箱第45号) NTT東日本料金サービスセンター
412-8609静岡県 御殿場市 新橋 2020(御殿場郵便局私書箱第6号) 駿河信用金庫 本店・本部(総務部・人事部・経理部・業務部・管理部・審査部・事務部・総合企業部・検査部)
577-8567大阪府 東大阪市 西堤学園町 3丁目1番1号 学校法人 村上学園 (東大阪大学 東大阪大学短期大学部 敬愛女子高等学校 東大阪大学付属幼稚園)
605-8501京都府 京都市東山区 今熊野北日吉町 35 学校法人 京都女子学園(京都女子大学・京都女子短期大学部・京都女子高等学校・京都女子中学校・京都女子大学附属小学校・京都幼稚園)
606-8502京都府 京都市左京区 北白川追分町  京都大学農学部、農学部附属演習林、大学院理学研究科、理学部、基礎物理学研究所、数理解析研究所
606-8507京都府 京都市左京区 聖護院川原町  京都大学医学部附属病院、胸部疾患研究所、ウイルス研究所、生体医療工学研究センター、遺伝子実験施設、医療技術短期大学部
640-8501和歌山県 和歌山市 美園町 5丁目1-1 和歌山県農業協同組合中央会・和歌山県信用農業協同組合連合会・和歌山県農業協同組合連合会・和歌山県共済農業協同組合連合会
812-8689福岡県 福岡市博多区 博多駅前 3丁目26番29号九勧博多ビル8F(博多北郵便局私書箱第64号) 株式会社 日本政策金融公庫 福岡支店 国民生活事業
860-8518熊本県 熊本市北区 山室 6丁目8-1 医療法人社団 寿量会(熊本機能病院 清雅園 熊本健康・体力作りセンター 熊本市北2地域包括支援センター清水・高平)
945-8501新潟県 柏崎市 田中 26-23 柏崎公共職業安定所、柏崎労働基準監督署、経済産業省資源エネルギー庁原子力安全・保安院柏崎刈羽原子力保安検査官事務所、新潟地方法務局柏崎支局
963-8503福島県 郡山市 開成 3丁目25-2 学校法人 郡山開成学園 郡山女子大学 郡山女子大学短期大学部 郡山女子大学附属高等学校 郡山女子大学附属幼稚園

これらの住所は手作業で分割するしかなさそうなので、すっぱりあきらめることにします。

また、全角60文字以下のレコードについては、英数字とカタカナを半角にせずに登録したいと思います。なぜなら、和休は「半角カナ文字」があまり好きではないからです。

60文字を超えるときは半角文字へ変換するクエリを作成

「SQLビュー」を選択して、次のSQL文を貼り付けます。

SELECT 辞書データ.[よみ], IIf(Len([辞書データ]![単語])>60,StrConv([辞書データ]![単語],8),[辞書データ]![単語]) AS 単語, 辞書データ.品詞, 辞書データ.[ユーザーコメント]
FROM 辞書データ;

変更箇所を解説します

クエリ「辞書データ」をベースに、単語フィールドを変更しました。

IIf(Len([辞書データ]![単語])>60,StrConv([辞書データ]![単語],8),[辞書データ]![単語])

この部分は、IF関数を使い、「単語」フィールドが60文字を超える場合、「単語」フィールドを半角に変換し、そうでないときはそのままという式を入れました。

これはIF関数、LEN関数、Strconv関数の3つを組み合わせることで実現できます。

IF式は、IIF(「条件式」、「条件式と一致するとき」、「条件式と一致しないとき」) という構文です。

IIf(
Len([辞書データ]![単語])>60,←「条件式」
StrConv([辞書データ]![単語],8),←「条件式と一致するとき」
[辞書データ]![単語]←「条件式と一致しないとき」
)

「単語」フィールドが60文字を超える、という条件は、LEN関数で調べます。

Len([辞書データ]![単語])←文字数を調べます

文字列を半角へ変換するのは、 Strconv関数 を使います。

StrConv([辞書データ]![単語],8),←半角へ変換します
32レコード目と33レコード目を比較します
32レコード目と33レコード目を比較します

「データシートビュー」へ変更し、32レコードと33レコードを見てみます。

よみ単語品詞ユーザーコメント
060-8533北海道 札幌市中央区 北十一条西 19丁目36番35号 株式会社 スズケン地名その他事業所郵便番号
060-8534北海道 札幌市中央区 北二条西 4丁目1番地札幌三井JPビルディング7階 株式会社 かんぽ生命保険 北海道エリア本部・札幌支店・札幌ヘルプデスク地名その他事業所郵便番号

住所が長い場合、英数字とカタカナが半角に変換されていることがわかるでしょうか。

もう一回Microsoft IME ユーザー辞書ツール に読み込ませます

では、作成したクエリに「辞書データ1」と名前を付けて保存し、テキストファイルへエクスポート→ユーザー辞書ツールへ登録してみましょう。

作成したクエリに「辞書データ1」という名前を付けて保存します
作成したクエリに「辞書データ1」という名前を付けて保存します

テキストファイルを読み込ませる前に

テキストファイルを読み込ませる前に、その1で登録したレコードを削除しましょう。

「Microsoft IME ユーザー辞書ツール」を起動し、「ツール」→「テキストファイルで削除」を選択し、 その1で 出力した「 辞書データ.txt」を読み込ませます。

テキストファイル「辞書データ1.txt」を読み込ませます

住所が長すぎる14レコードを除き、登録されました。

動作確認してみます

前回「住所の入力は郵便番号から変換すると簡単やで!」変換できなかった郵便番号、「650-8570」を変換してみます。

メモ帳に650-8570と入力し、変換すると、

神戸市役所の事業所郵便番号を変換
神戸市役所の事業所郵便番号を変換

神戸市役所の住所が変換候補に表示されました。成功です!

とっても長ーい住所だってへっちゃらです。例えば、「899-7192」を変換してみましょう。

志布志市役所志布志支部の事業所郵便番号を変換
志布志市役所志布志支部の事業所郵便番号を変換

鹿児島県 志布志市 志布志町志布志 2丁目1-1 志布志市役所 志布志支所の住所が変換候補に表示されました!手入力だと間違えずに入力するのは難しいですが、これなら簡単です。

コメントをどうぞ!