正規表現を使って、メールアドレスが正しいかチェックする方法。

メールは、実際に送信してみないと、ちゃんと届くメールアドレスかわかりません。

でも正規表現を使って、メールアドレスが正しいか、メール送信前にプログラムでチェックすることは可能です。

この場合の「正しい」とは、メールアドレスとして、適切な値かどうかということです。メールが届くかどうかではないので、ご注意ください。

実は BASP21 には、Perl5互換のパターンマッチ処理を行なう「Match」というメソッド(命令)が、あらかじめ用意されています。

Matchメソッドでは、引数に正規表現が使えるので、簡単にメールアドレスをチェックすることができます。

ただし、正規表現はとても奥が深く、それだけで一冊の本になるほどです。

正規表現ポケットリファレンス


したがって今回紹介するのは、最もシンプルな例だとお考えください。

メールアドレスの正規表現の書き方は、いろいろありますが、今回参考にさせていだだいたのは、以下のWebサイトです。
Perl5 で CGI! - 正規表現

もっと正確にチェックする正規表現は、かなり複雑です。
RFCに準拠したメールアドレスの正規表現


それでは実際に、VBAプログラムの中に組み込んでみましょう。

【1】Excelのファイル「メール送受信.xls」を開きます。

*マクロを有効にする


【2】VBEを起動します。

*「Altキー」+「F11キー」


【3】フォーム「frm送信」を選択し、「コードの表示」ボタンをクリックします。


【4】「cmd送信」クリック時のプログラムを、一部変更します。

赤枠で囲った部分を追加するだけです。
mail-240.gif

・追加部分のみ掲載

'メールアドレスが有効かチェック
Dim match As Integer
Dim target As String
Dim regstr As String

regstr = "/^[\w\-+\.]+\@[\w\-+\.]+$/i"

For i = startPos To endPos
  'ワークシートの値を取得
  eMail = Trim(Range("B" & i).Value)
  target = eMail

  match = bobj.match(regstr, target)

  If match = 0 Then
    Me.lblMsg = "行番号" & i & "のメールアドレスが正しくありません。"
    'メール送信ボタン使用不可
    Me.cmd送信.Enabled = False
    Exit Sub
  End If

Next i


*「\」はWindowsでは円記号のことです。
*プログラムを追加する場所が、とても大事です。

BASP21のメソッドを使っているため、オブジェクトを作成した後でないとエラーになります。


【5】プログラムを追加したら、VBEを保存してください。


【6】続けて、動作確認を行ないます。

ワークシート「送信」で、わざと間違ったメールアドレスを設定してください。

次にフォームを表示して、メールを送信します。件名や本文は適当でかまいません。

・正しいメールアドレスの場合は、これまで通り送信できます。

・メールアドレスとして正しくない表現の時は、メッセージが表示され、送信できません。

mail-241.gif

「正しくない表現」とは、例えば以下のような場合です。
・「@」が無い
・空白が混じっている
・日本語が混じっている

他にもいろいろ試してみてください。


【7】動作確認が済んだら、ワークシート「送信」のメールアドレスを元に戻します。


VBAプログラムの解説は、次のステップで行ないます。


【補足】
正規表現についてもっと詳しく知りたい方は、Yahoo!やGoogleのような検索エンジンで検索すると、多くのWebサイトが見付かります。

検索キーワードの例
正規表現 メールアドレス Perl5 RFC

キーワードの組み合わせが少ないほど、情報はたくさん見付かりますが、BASP21で使えるのは、Perl5互換の正規表現です。

スポンサードリンク

スポンサードリンク






メール送信・受信プログラミング初心者入門 TOPへ