MS Access Tips/Sample and VBA and Blog customize etc...

区切りなしの電話番号に適切な位置に区切り文字を挿入する関数

タイトル画像

ユーザーが電話番号を入力する時、市外局番-市内局番-番号 と分けて入力してくれればいいですが、数字だけを入力する場合もあります。そんなとき、自動で適切に位置にハイフンを挿入してくれるといいですよね。しかし、市外局番は2桁のものから5桁のものまであるので、簡単にはできません。

難易度:

市外局番の一覧

掲示板に上記の質問があったので、市外局番について調べてみたら下記のページを発見しました。

総務省|電気通信番号の利用・指定|市外局番の一覧

一覧がWORDファイルかPDFファイルでダウンロードでできます。これをAccessのテーブルに取り込んだら、区切りなし電話番号から市外局番を取り出せそうです。

ExcelファイルかCSVファイルなら簡単にインポートできたのですが、、、
WORDファイルをダウンロードすると表になっていたので市外局番の列を選択して、Accessで作成しておいたテーブルに追加貼り付けでい意外と簡単に取り込めました。

この一覧の市外局番には重複がありましたが、フィールドを主キーにしておきましたので、貼付け時にエラーが出ますが無視してOKを押したら重複を除いて取り込めました。

あとは、テーブルの市外局番と区切りなし電話番号を比較して、市外局番の桁数を取得して、それももとに区切り文字で分割するコードを書くだけです。

利用方法

下記のリンクをクリックしてお使いのバージョンのサンプルファイルをダウンロードします。

ZIPファイルになっていますので、中に入ってるデータベースファイルを適当なフォルダーにコピーします。

関数を利用したいデータベースファイルから上記のファイルを参照設定すれば利用できます。
あるいは、ファイル内のテーブル「T_AreaCode」とモジュール「mdlSplitTelNum」をインポートします。

使用例

クエリのフィールド欄

分割電話番号: SplitTelNum([電話番号])

変換例

電話番号電話番号1
0114567890011-456-7890
049946789004994-6-7890
033456789003-3456-7890
05385678900538-56-7890
09012345678090-1234-5678
01201231230120-123123

区切り文字も空白にしたい場合は、

分割電話番号: SplitTelNum([電話番号], " ")

サンプルファイルが下記からダウンロードできます。
TelAreaCode_07.zip (Access 2007-2010 形式 - 547kb)
TelAreaCode.zip (Access 2002-2003 形式 - 543kb)
TelAreaCode_2k.zip (Access 2000 形式 - 543kb)

追記: 次の記事でExcelやWordでも(もちろんAccessでも)使えて、かつ、高速に動作する関数を紹介していますので、そちらの方を利用されることをお薦めします。

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/502-cf77104f
該当の記事は見つかりませんでした。