#705 | ハイパーリンクのデータからメールアドレスだけを取り出すには? | クエリ | |
テーブルで「ハイパーリンク型」に設定されたフィールドには、メールアドレスやホームページアドレスなどのデータを保存することができます。またテーブルのデータシートや画面等では、ハイパーリンクを表す文字色や下線が付けられ、その文字列のクリックなどで、そのアドレス宛てのメールを新規作成したり、ホームページをブラウザで表示させたりすることができます。 そのとき、実際にはそのフィールドには、『画面に表示する文字列』と、メールアドレスを表す『「#mailto:」という語句+メールアドレス+「#」』が格納されています(それら2つから構成されていることは「ハイパーリンクの編集」ダイアログでも分かります)。つまり特殊なデータ型ではなく、複数の意味合いの異なる文字列が格納されていることが特徴となっています。 この機能は、画面でそれを表示して扱う際には便利ではあるのですが、そのデータ内容を処理したいといった場合、複数の意味を持つデータが格納されているため、一方が邪魔になってしまう場合があります。たとえば、そのレコードをコピーしてExcelのワークシートに”テキスト形式”で貼り付けたときなどは、「qwez1234@xxx.xx.com#mailto:qwez1234@xxx.xx.com#」といったようになってしまいます。 ここでは、そういった場合の対処の一例として、ハイパーリンク型のデータから『画面に表示する文字列』や『#』という文字を除外して、純粋にメールアドレスの文字列だけを取り出すクエリの例を紹介します。 それには、”演算フィールド”において、文字列関数の処理によって「mailto:」とその後ろの「#」で囲まれた部分だけを切り出すようにします。 ■クエリのデザイン ■演算フィールドの内容 メールアドレス: IIf(Not IsNull([Eメールアドレス]),Replace(Mid$(CStr([Eメールアドレス]),InStr(CStr([Eメールアドレス]),"#mailto:")+8),"#",""),"") そして、そこから「#mailto:」の位置を「InStr」関数で取得し、「Mid$」関数でそれより後ろの文字列を切り出したあと、最後尾の「#」を消すために「Replace」関数を使っています。 また、Eメールアドレスが空欄(Null)の場合、上記のReplaceからの式だけでは「#エラー」表示となってしまいます。そこで、事前に「IIf」関数を使ってそれがNullでないときだけ文字列の切り出しを行うようにしています。 実行例:
|
|||
|
Copyright © T'sWare All rights reserved |