2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

« ◆Outlook VBA(メール誤送信防止のためのチェックあれこれ その3) | トップページ | @アニメ(2012冬アニメOP、ED) »

2011年11月26日 (土)

◆Outlook VBA(メール誤送信防止のためのチェックあれこれ その4)

メール誤送信防止のためのチェックについて、機能を追加してみました。
追加した機能は、送信先のアドレス(To,Cc,Bcc)に自ドメイン以外のアドレスが含まれていた場合、その旨知らせるメッセージを表示するというものです。
以下の要領で実装します。

(1)ThisOutlookSessionのソース(記事:その2)に以下の1文を追加
      ・
      ・
      ・
      lSubject = Item.Subject     '件名
      lBody = Item.Body           '本文
→   gSendname = Item.Session.CurrentUser.Address '送信者
   
      '件名チェック
      ・
      ・
      ・
(2)標準モジュールのソース(記事:その3)に以下の1文を追加
  Public gTitle As String
  Public gAddress
  Public gTempFile
  Public SendFlg As Boolean
→ Public gSendname
      ・
      ・
      ・
(3)ユーザフォームにLabel5を追加。一応警告なのでForeColorは赤にしてみました。
(4)ユーザフォームのソース(記事:その3)の宛先処理を以下に変更
      ・
      ・
      ・
    '宛先
    ldomain = Split(gSendname, "@")
   
    U1.Label3.Caption = U1.Label3.Caption & " 件数:" & gAddress.Count
    Dim lcnt As Integer
    lcnt = 0
    OutFlg = False
    For Each oAddress In gAddress
        lcnt = lcnt + 1
        If Not (oAddress.Address Like "*" & ldomain(1)) Then
            OutFlg = True
        End If
        U1.ListBox1.AddItem Format(lcnt, "00") & "." & oAddress.Name & " 【" & oAddress.Address & "】"
    Next
    If OutFlg = True Then
        U1.Label5.Caption = "自ドメイン (" & ldomain(1) & ") 以外のアドレスが含まれています。"
    Else
        U1.Label5.Caption = ""
    End If
      ・
      ・
      ・

で、実行した結果が以下のようになります。自ドメインは自分の送信者アドレスから抽出しています。
そのドメインと宛先のアドレスのドメインが異なったらメッセージを表示するというしくみです。
Domain_chk_2

« ◆Outlook VBA(メール誤送信防止のためのチェックあれこれ その3) | トップページ | @アニメ(2012冬アニメOP、ED) »

パソコン・インターネット」カテゴリの記事

コメント

素晴らしい記事で、クオリティーの高さに感動しました。
自ドメインのチェックについて、
教えて頂きたいのですが、
自ドメインを2つ、3つ、4つとか
グロスで区切る等で設定できないものでしょうか?
自力では無理でしたが、出切る事ならこのマクロを使いたいです。(関連会社数社の自ドメイン同様としたい。)

仕事で使わせていただいています。とても使いやすいです(^_^)

Matsukiyoさん。
こんばんは、平陽凛です。
返信が遅くなってしまってすみません。
(4)の宛先処理を以下のようにldomainに
自ドメインを定義しておくように変更します。
動作確認していませんが、動くと思います。
お試し下さい。

ldomain = "domain1.co.jp|domain2.co.jp|domain3.co.jp"

'ドメインチェック
U1.Label3.Caption = U1.Label3.Caption & " 件数:" & gAddress.Count
Dim lcnt As Integer
lcnt = 0
OutFlg = False
lLoop = Split(ldomain, "|")
lTempFlg = False
For Each oAddress In gAddress
lcnt = lcnt + 1
For i = 0 To UBound(lLoop)
If Not (oAddress.Address Like "*" & lLoop(i)) Then
OutFlg = True
lVal = lLoop(i)
Exit For
End If
Next
U1.ListBox1.AddItem Format(lcnt, "00") & "." & oAddress.Name & " 【" & oAddress.Address & "】"
Next
If OutFlg = True Then
U1.Label5.Caption = "自ドメイン (" & ldomain(1) & ") 以外のアドレスが含まれています。"
Else
U1.Label5.Caption = ""
End If

こんばんは、平陽凛です。
お役に立てて大変光栄です。
私自身もoutlookでこのツールを使わないと
怖くて安心できません(笑)

はじめまして junと申します。

以前、誤送信防止のため、こちらに記載された内容を利用させて頂きました。
ありがとうございました。

下記内容が可能かどうか、ご質問させて頂きす。
宛先欄へ、アドレス帳に登録させている、会社名、氏名、アドレスを選択、本文に記入した会社名、氏名を比較し、一致しない場合は、確認を促す。

上記内容は実現できますか。
知識があまりないもので、お手数ですが宜しくお願い致します。

はじめまして、junさん
ご質問の件ですが、
たとえば、本文に
○○会社
■■様
いつもお世話になっております。△△です。
・・・

以上。
という内容が書かれていたとして、
宛先にxxxxx@hogehoge.jp
が■■さんと合っているかを
チェックしたいと認識しました。
結論からすると、十分可能だと思います。
私にはなかったアイデアですので
ちょこっと考えて実装してみようと思います。
できたら公開しますね。

outlookを使用するようになり、誤送信防止機能がなくびっくりし、検索したらたどり着きました。初心者ですので以下を教えていただけたら助かります。

その4で追加されたユーザフォームの追加部分ですが、その3で公開されていた下記部分を入れ替えということでよいのでしょうか?

'宛先
U1.Label3.Caption = U1.Label3.Caption & " 件数:" & gAddress.Count
Dim lcnt As Integer
lcnt = 0
For Each oAddress In gAddress
lcnt = lcnt + 1
U1.ListBox1.AddItem Format(lcnt, "00") & "." & oAddress.Name & " 【" & oAddress.Address & "】"
Next

また、オブジェクトにlabel5を追加しましたがプロパティのcaptin(オブジェクトに表示される部分)は空白でよいのでしょうか?デフォルトのLabel5のままでよいのでしょうか?

もう一つ、この機能をいろいろ試していたら、同僚が「すごい」と感心していたので、同僚のoutlookにも設定してあげたいと思います。その場合、テンプレートのようなものでエクスポートできるのでしょうか?
xxxxx.OTMのような感じで。

以上よろしくお願いします。

RYUさん
はじめまして、こんにちは
ご質問にお答えします。
(1)宛先
ご認識の通りです。


(2)label5について
Captionの値はプログラムが設定しますので
何でもよいです。
ここ↓
U1.Label5.Caption = "自ドメイン (" & ldomain(1) & ") 以外のアドレスが含まれています。"


(3)別の方への配布について
ご認識のとおり、OTMを提供すれば
別の方への配布が可能です。
OTMの格納場所はお使いのOSによって
いろいろですので、ネットで調べてみてください。
Outlookのバージョンによってセキュリティの
設定解除もありますので、併せて調べてみて
ください。

OTMでなければ、VBEからエクスポートして
同僚のOutlookにインポートすれば同じことが
できるようになります。

遅くなりましたが、ご回答ありがとうございました。

マクロが無効になり有効にする方法に手間取っておりました。

とても助かっております。
ありがとうございました。

平陽凛様

凄い使いやすくお世話になっております。

Outlook VBA(メール誤送信防止のためのチェックあれこれ その4)
をコピペで導入したのですがエラーが出てしまい導入できませんでした。

いきなりで申し訳ないのですがその4までを含めたOTMを頂くことは可能でしょうか?

ぶしつけで申し訳ありません。

松本様
はじめましてこんにちは。
当記事を参考にされている方々の環境が様々であると想像していますので私のOTMを提供しても動作するか保障できないのでOTMは提供していません。
ご理解願います。
どのようなエラーが出るのかお知らせ頂ければ解決できるかもしれません。

はじめまして。マクロをありがたく利用させていただいています。

このマクロで、送信先確認の際に、相手のメールアドレスではなく、部署名を表示したいのですが、どうすればよろしいでyしょうか?

大変重宝させていただいています!

お聞きしたいのですが、宛先にメーリングリストを入れた場合、送信前にリストの中身を展開して宛先人確認をすることは可能でしょうか?

教えていただけると幸いです。
よろしくお願い致します。

kayo様
こんにちは、平陽凛です。
ご質問の件、大変理解できます。私もいつも
簡単に確認できればなぁと思います。
が、私の理解では、これはメーリングリストの
管理者でないと確認が出来ないと思います。
管理者であれば管理コマンドなりを駆使して
確認できます。
もしも、どこかにメーリングリストの管理表が
公開されていて、kayo さんが参照できる立場
であれば、そのリストから宛先を自動的に展開
するロジックを追加することはできそうです。
でもご質問の内容からすると管理表を参照
できないからお尋ねになっているのでしょうけど。

素晴らしい方法を公開頂いてありがとう御座います。
Googleからたどりつき、実装してみました。

一点伺いたいのですが、最終確認画面でリスト化されて表示される”■宛先”について、TO/CC/BCCが何らかの方法で区別して表示される方法はないでしょうか?夫々のアドレスが、TOなのか、CCなのか、BCCなのかが分かるようにしたいのですが、、、如何でしょうか?

連投済みません。
oAddress.Type = olCC
など区分けすることで出来るようになりました。
お騒がせしました。

YJDX さん、こんにちは。平陽凛です。
そうですね、oAddress.Typeで判断できます。
確かにTO、CC、BCCの区別ができたほうが
便利ですね。
こうゆうご質問があると新しい気づきがあって
うれしいです。

コメントを書く

(ウェブ上には掲載しません)

« ◆Outlook VBA(メール誤送信防止のためのチェックあれこれ その3) | トップページ | @アニメ(2012冬アニメOP、ED) »