Last Update ; 24/Feb/2013
Outlookを企業内で使っている方からの依頼で、クライアント側で受信メールをGalaxy(Gmail)に自動転送するマクロを作成しました。
説明用に作成したPPTファイルの画像を添付しながら、概要を記したいと思います。(作成したマクロはこのページの一番下に添付しておきます。)
OfficeはMicrosoft Office Professional Plus 2010。Outlookのバージョンは14.0.6023.1000(32ビット)です。
注)添付のマクロを使用される場合は自己責任にてお願いします。特に、企業内のメールシステムで使用される場合は、個人情報保護ポリシーやセキュリティー設定に十分注意してください。
【仕様と制限事項】
【事前準備】
デジタル証明書の作成
「開発」オプションの表示
【マクロの登録】
【自動更新後に再起動しない設定】
【マクロ例】
【参照サイト】
Outlook 研究所
http://outlooklab.wordpress.com/2012/07/28/
Slashdot
http://slashdot.jp/journal/454776
【更新履歴】
24/Feb/2012
マクロVer 1.15。本文の冒頭に日時も追記する様に変更。マクロ内のコメントを整理。
18/Feb/2012
マクロVer 1.14。 メールでマクロを中断した際のお知らせメールに本文を追加。(マクロの機能自体に変更はありません。)
15/Feb/2013
マクロVer 1.13。メールでのリモート操作によるマクロの中断の際に転送先に通知メールを送る様に変更。
14/Feb/2013
マクロVer 1.12。メールでのリモート操作によるマクロの中断は転送先メールアドレスからに限定。
13/Feb/2013
マクロVer 1.11。メールでのリモート操作によるマクロの中断機能を追加。
12/Feb/2013
制限事項を追記。
マクロVer 1.10。Bccで送信されてきたメールを転送する際には本文の冒頭に"[To] Bcc"とと表示する様に変更。
11/Feb/2013
転送メールを保存しない設定方法を追記。
マクロVer 1.09。Reply-Toについてのオプションを追加し、説明資料も追加。
10/Feb/2013
マクロVer 1.08。マクロ中のコメントを整理しました。処理は変えていません。
マクロVer 1.07。送信者がExchangeユーザの場合もSMTPアドレスを検索して本文の冒頭に表示する様に変更。
マクロVer 1.06。エラー処理(迷惑メールフィルタ起動時対応)を追加。
09/Feb/2013
マクロVer 1.04。転送メールの本文の冒頭に表示する「送信者名」について、Exchangeユーザからのメールの場合は「送信者名」のみ表示(従来通り)し、Emailアドレスからのメールの場合は「送信者名+Emailアドレス」を表示する仕様に変更。但し、「送信者名」と「Emailアドレス」が同じ場合は「送信者名」のみ表示。
07/Feb/2013
マクロVer 1.03。初掲載。
注)添付のマクロを使用される場合は自己責任にてお願いします。特に、企業内のメールシステムで使用される場合は、個人情報保護ポリシーやセキュリティー設定に十分注意してください。
【仕様と制限事項】
デジタル証明書の作成
【マクロのセキュリティの確認】
【マクロの中断方法】
【転送済メールの削除】
【転送メールを保存しない設定】
【Windowsの画面プロパティ設定】
【転送メールでのReply-Toの指定】
【メールでのリモート操作によるマクロの中断】
' Outlook受信メール自動転送マクロ Ver 1.15
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim objItem
Set objItem = Session.GetItemFromID(EntryIDCollection)
If objItem.MessageClass = "IPM.Note" Then
AutoForward objItem
End If
End Sub
Private Sub AutoForward(ByVal objMail As MailItem)
'
'以下のメールアドレスを転送先のメールアドレスに書きなおしてください
Const ForwardToAddress = "xxxxxxxx@gmail.com" ' 転送先アドレスを指定
'
Dim strFileName As String
Dim fwMail As MailItem
Dim i As Integer
Dim strSenderName As String
Dim strSenderEmailAddress As String
Dim strSubject As String
Dim strTo As String
Dim strCc As String
'
' 受信メールの自動仕分けルールや迷惑メールフィルタと併用した場合のエラー対策
On Error GoTo ErrorTrap
'
' 受信メールから表題や送受信者情報を取得
strSubject = objMail.Subject ' 表題を取得
strSenderName = objMail.SenderName ' 送信者名を取得
strSenderEmailAddress = objMail.SenderEmailAddress ' Emailアドレスを取得
strTo = objMail.To ' 宛先を取得
strCc = objMail.CC ' CC宛先を取得
'
' 送信者名と送信者のEmailアドレスの表示処理
' 送信者名と送信者のEmailアドレスが同じ場合はEmailアドレスのみ表示
If strSenderName = strSenderEmailAddress Then
strSenderName = strSenderEmailAddress
' 送信者名と送信者のEmailアドレスが異なる場合は「送信者名+」で表示
Else
' 送信者のメールアドレスがEmailの場合
If InStr(strSenderEmailAddress, "@") Then
strSenderName = strSenderName + "<" + strSenderEmailAddress + ">"
' 送信者のメールアドレスがExchangeの場合はSMTPアドレスを取得して表示
Else
strSenderEmailAddress = _
objMail.Sender.PropertyAccessor.GetProperty("http://schemas." _
& "microsoft.com/mapi/proptag/0x39FE001E")
strSenderName = strSenderName + "<" + strSenderEmailAddress + ">"
End If
End If
'
' 宛先がBccの場合の宛先表示処理
' Bccで送信されてきた時はBccと表示
If strTo = "" Then
strTo = "Bcc"
Else
End If
'
' 受信メールをOFTとして保存しOFTから新規メッセージを作成
strFileName = Environ("TEMP") & "~forward.oft" '受信メールをOFTとして保存
objMail.SaveAs strFileName, olTemplate
Set fwMail = Application.CreateItemFromTemplate(strFileName) ' メッセージを作成
With fwMail.Recipients ' 元メールからコピーされた宛先を削除
For i = .Count To 1 Step -1
.Remove i
Next
End With
'
' 転送先アドレスを設定
fwMail.To = ForwardToAddress
'
' 転送先から特定の表題のメールを受信した時にマクロを中断し転送先に中断を通知
If strSubject = "自動転送中断" Then
If strSenderEmailAddress = ForwardToAddress Then
' 通知メールを作成し送信
fwMail.Subject = "リモート操作により自動転送を中断しました"
fwMail.Body = "PCの画面にポップアップしているメッセージボックス内の[OK]を" _
& "クリックすると自動転送を再開します。"
fwMail.Send
' PCの画面上にメッセージボックスを表示
MsgBox "メールによるリモート操作で自動転送用のマクロを中断しています。" & _
vbCrLf & "[OK]をクリックすると再開します。"
Exit Sub
Else
End If
Else
End If
'
' 転送メールにReply-Toを付加する場合
' (サーバー側が送信メールへのReply-Toの付加を許可している場合のみ有効にする)
' fwMail.SentOnBehalfOf = strSenderEmailAddress
'
' 表題に送信者名を追記
fwMail.Subject = strSubject & "<" & strSenderName & ">"
'
fwMail.Body = vbCrLf & vbCrLf + fwMail.Body
'
' CCがある場合は本文にCCを追記
If strCc <> "" Then
fwMail.Body = " " & vbCrLf & "[Cc] " + strCc + fwMail.Body
Else
End If
'
' 本文に時刻、件名、送信者名、Toを追記
fwMail.Body = "[Sent] " + FormatDateTime(Now, vbShortDate) & " " & _
FormatDateTime(Now, vbShortTime) & vbCrLf & _
"[Subject] " + strSubject & vbCrLf & _
"[From] " + strSenderName & vbCrLf & _
"[To] " + strTo + fwMail.Body
'
' 転送メールを送信
fwMail.Send '
'
ErrorTrap:
'
End Sub
【参照サイト】
Outlook 研究所
http://outlooklab.wordpress.com/2012/07/28/
Slashdot
http://slashdot.jp/journal/454776
【更新履歴】
24/Feb/2012
マクロVer 1.15。本文の冒頭に日時も追記する様に変更。マクロ内のコメントを整理。
18/Feb/2012
マクロVer 1.14。 メールでマクロを中断した際のお知らせメールに本文を追加。(マクロの機能自体に変更はありません。)
15/Feb/2013
マクロVer 1.13。メールでのリモート操作によるマクロの中断の際に転送先に通知メールを送る様に変更。
14/Feb/2013
マクロVer 1.12。メールでのリモート操作によるマクロの中断は転送先メールアドレスからに限定。
13/Feb/2013
マクロVer 1.11。メールでのリモート操作によるマクロの中断機能を追加。
12/Feb/2013
制限事項を追記。
マクロVer 1.10。Bccで送信されてきたメールを転送する際には本文の冒頭に"[To] Bcc"とと表示する様に変更。
11/Feb/2013
転送メールを保存しない設定方法を追記。
マクロVer 1.09。Reply-Toについてのオプションを追加し、説明資料も追加。
10/Feb/2013
マクロVer 1.08。マクロ中のコメントを整理しました。処理は変えていません。
マクロVer 1.07。送信者がExchangeユーザの場合もSMTPアドレスを検索して本文の冒頭に表示する様に変更。
マクロVer 1.06。エラー処理(迷惑メールフィルタ起動時対応)を追加。
09/Feb/2013
マクロVer 1.04。転送メールの本文の冒頭に表示する「送信者名」について、Exchangeユーザからのメールの場合は「送信者名」のみ表示(従来通り)し、Emailアドレスからのメールの場合は「送信者名+Emailアドレス」を表示する仕様に変更。但し、「送信者名」と「Emailアドレス」が同じ場合は「送信者名」のみ表示。
07/Feb/2013
マクロVer 1.03。初掲載。
0 件のコメント:
コメントを投稿