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

電話番号の適切な位置に区切り文字を挿入する関数+市外局番データアップデイトツール(高速版)

タイトル画像

電話番号の適切な位置に区切り文字を挿入する関数+市外局番データアップデイトツール(完全版) - hatena chips

のツールはよろずやさんから提供されたものですか、それとは別のロジックを思いついたので試しに作成してみました。結果、よりコード生成と分割関数が高速化されたので紹介します。

ただ、分割関数自体のコード量は増えました。よろずやさんのものでも十分実用的な速度ですので、お好みで選択されればいいかと思います。

電話番号分割関数+市外局番データ更新ツール

下記の機能があります。

ハイフン無しで数字のみ入力されている電話番号の適切な位置にハイフン(変更可能)を挿入する関数を自動生成します。

生成した関数は、Officeアプリにクリップボード経由かBASファイルで取り込むことができます。

総務省のHPで公開されている市外局番データが更新されていたらダウンロードして、分割関数のコードを自動で更新します。

下記のリンク先からエクセルファイルをダウンロードしてください。

ImportAreacode3.xlsm (Excel マクロ有効ブック - 50kb)

2020/08/27: 総務省のサイトが変更されたので改修しました。以前のものはエラーが出て動作しませんので、以前のものをダウンロードされた方は再ダウンロードして入れ替えてください。

市外局番データ更新ツールの使い方

上記でダウンロードしたエクセルファイルを開くと下記のユーザーフォームが表示されます。

ツールフォームのキャプチャー

[市外局番データの更新をチェックする]をクリックすると総務省のページにアクセスして市外局番データの更新日付を取得して、コードの更新日付と比較して新しければ、コードを更新するかメッセージを出します。
[はい]をクリックすると市外局番データ(エクセルファイル)をダウンロードしてコードに変換します。変換したコードはシートに格納されます。

この取り込んだ市外局番データと電話番号分割関数をMS Officeアプリ(Excel, Access,Word等)で利用するには、下記の2つの方法があります。

[コードをクリップボードへコピー]をクリックして、関数を使用したいOfficeアプリを開いて、VBAの標準モジュールに貼り付けます。すでに古いバージョンのコードがある場合は上書きコピーします。

[BASファイル作成する]をクリックします。保存するフォルダーを聞いてきますので選択して、[保存]をクリックします。関数を使用したいワークブックを開いてVBEを開き、メニュー[保存]-[インポート]をクリックして、先ほど保存したBASファイルを選択します。[開く]をクリックすると標準モジュールにmodSplitAreacodeというモジュールが作成されます。
旧バージョンのモジュールがある場合は、事前に解放しておく必要があります。

電話番号分割関数の使用例

サンプルコード

サンプルファイル
下記からサンプルファイルがダウンロードできます。

SplitTelNumberSample.xlsm  (Excelブック - 33kb)

ダウンロードしたファイルを開くと下記のフォームが開きます。

電話番号分割テストサンプルフォーム

「電話番号」テキストボックスで数字のみで電話番号を入力して、Enterキー等でフォーカス移動すると、適切な位置にハイフンが挿入されます。
テキストボックスのExitイベントのコードは下記になります。

コード SplitTelNumber

令和2年6月1日現在のデータに基づきます

修正点

電話番号分割関数 SplitTelNumber
昇順に並べ変えた市外局番+市内局番を数値変換して、Select Caseで場合分けして、市外局番の桁数を取得するというシンプルなロジックにしました。
その結果、コード量は倍増しましたが、速度はアップしました。

コード生成のロジック
ダウンロードしたエクセルファイルをADOを使用してSQLでレコードセットとして読み込んで配列に格納。
配列を元にコードを生成。ADOを利用することでデータ取得が大幅に高速化しました。
また、分割関数のロジックがシンプルになったので、コード生成ロジックもシンプルになり高速化しました。

Leave a reply






Trackbacks

trackback URL
https://hatenachips.blog.fc2.com/tb.php/519-9596e04f
該当の記事は見つかりませんでした。