このページに含まれるプログラム、ファイル等については、
Outlookで自動仕分けをしている場合、フォルダが多いと知らないところで未読メールがたまってしまうことがあります。特に、個人用フォルダの直下や表示されていないサブフォルダに入っていってしまうと、ぜんぜん気づかなかったりします。
そこで、未読メールがたまっているフォルダをダイアログボックスで表示して選択実行することによって、未読メールを自動的に開くプログラムを作成しました。次の3つのファイルをOutlookのVBE(Alt+F11で開きます)にインポート(ファイルメニューにあります)したのち、
Outlookからマクロ(未読チェック)を実行してください。(ユーザー設定でボタンに登録すると便利です。)
Private ActiveUnreadCheck As Integer 'ループの状態を表す変数
Sub 未読チェック()
--- 略 ---
If ActiveUnreadCheck <> 0 Then 'ループが回っている(0以外になっている)とプログラムを終了。
MsgBox "現在実行中です。"
Exit Sub
End If
--- 略 ---
UnreadCheck fs 'サブルーチンの呼び出し
--- 略 ---
End Sub
Private Sub UnreadCheck(fs As Outlook.Folders) 'サブルーチン
--- 略 ---
ActiveUnreadCheck = 1 'ループが回っていることを示す。
For Each f In fs
--- 略 ---
DoEvents 'Outlookに処理を返す。
Next f
ActiveUnreadCheck = 0 'ループが終わったことを示す。
End Sub
メールによって開封確認をしたいことがありますよね?ところが、使おうとなるとメニューがどこにあるのかわからない。また、下書き途中で、つい、送信ボタンを押してしまった。私用メールが全社員に配られちゃったよー。ということがあると思います。そこで、送信ボタンを押すと開封確認するかどうかを確認するダイアログを表示し、キャンセルすることによって送信もキャンセルする(文章は消えません)プログラムを作りました。ThisOutlookSession内に記述してください。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
On Error GoTo ErrorTrap
Dim Flag As Integer
Const Kaifu As Integer = 2
'0:開封確認しない、1:開封確認する、2:選択する、0-2以外:オプションの設定を適用
If Item.Class = olMail Then
Select Case Kaifu
Case 0
Flag = vbNo
Case 1
Flag = vbYes
Case 2
Flag = MsgBox("開封確認を行いますか?", vbYesNoCancel + vbQuestion, "開封確認")
Case Else
If Item.ReadReceiptRequested Then Flag = vbYes Else Flag = vbNo
End Select
If Flag = vbYes Then
Item.ReadReceiptRequested = True
If MsgBox("開封確認付きでメールを送信します。", vbOKCancel + vbExclamation, Title:="開封確認あり") = vbOK Then Cancel = False Else Cancel = True
ElseIf Flag = vbNo Then
Item.ReadReceiptRequested = False
If MsgBox("開封確認なしでメールを送信します。", vbOKCancel + vbExclamation, Title:="開封確認なし") = vbOK Then Cancel = False Else Cancel = True
Else
Cancel = True
End If
End If
Exit Sub
ErrorTrap:
Cancel = True
End Sub
無断転載を禁じます。