パブリックフォルダの新規投稿を検出するOutlookVBA

スポンサーリンク

パブリックフォルダを毎日確認するのは面倒?

先日同僚からパブリックフォルダの新規投稿を自動で確認する方法はないか?と相談がありました。

どうやら時々しか投稿がないパブリックフォルダを毎日確認するのが面倒に感じていたようです。

あまり多いケースではないかもしれませんが、同じように感じる方もいらっしゃるかと思いましたので、こちらで作成したVBAコードを紹介します。

パブリックフォルダをチェックし続けるのは難しいので起動時に確認する手順にした

立ち上げているときにずっとパブリックフォルダを監視して、新しく投稿が出た段階でチェックする機能は難しいようです。

色々調べてサンプルを作成したのですが、きちんと動作しなかったのでOutlookを立ち上げた際にチェックする方法を採用することにしました。
今回は時々しかない投稿をチェックする目的だったので、Outlook起動時のみの確認で大丈夫だったのが幸いでした。

スポンサーリンク

起動時に実行する内容はThisOutlookSessionにApplication_StartUpというプロシージャを作成する

Excelの時のイベントプロシージャはOutlookにおいてはThisOutlookSessionに記載します。

左上の(General)と書かれているコンボボックスをクリックして、Applicationを選択すると右側の(Declarations)と書かれているコンボボックスから「StartUp」が選択できるようになります。

選択が完了するとモジュール内に以下のように表示されます。

Private Sub Application_Startup()

End Sub

この間の部分に必要な処理を記載すれば大丈夫です。
これらの一連の流れが面倒な場合は私が紹介するVBAのコードをそのままThisOutlookSessionにコピペしても同じ形式になります。

起動時にパブリックフォルダの中のフォルダの未読件数を調べるVBA(マクロ)

Outlook起動時にパブリックフォルダの中にあるフォルダを調べ、未読の投稿があった場合に件数を表示して、さらにフォルダのウインドウを表示するVBAコードは以下のようになります。

Private Sub Application_Startup()

Dim myNameSpace
Dim oFolder
Dim oFolder2
Dim cITEM

Dim n As Integer, j As Integer’ループのカウンター
Dim k As Integer

Dim strFileName As String

Set myNameSpace = GetNamespace(“MAPI”)
Set oFolder = myNameSpace.GetDefaultFolder(18)
Set oFolder2 = oFolder.Folders(“●●”).Folders(“○○”).Folders(“××”).Folders(“△△”)’パブリックフォルダの場所を設定する

On Error GoTo 接続できない連絡
k = 0
For n = 1 To oFolder2.Items.Count

Set cITEM = oFolder2.Items(n)
If cITEM.UnRead = True Then
k = k + 1
’Else ’既読を検出するとループを抜けるなら’を取り除く
’Exit Sub ’同じく
End If
Next n
If k <> 0 Then

oFolder2.Display
MsgBox “未読件数” & k & “件です。”

Else
MsgBox “未読はありません。”
End If

On Error GoTo 0

Exit Sub
接続できない連絡:

MsgBox “接続できませんでした”

End Sub

起動時にフォルダの投稿をすべてチェックするプログラムなので、投稿件数が多いとその分起動までに時間がかかります。

件数が多くて時間がかかるようなら、既読を検出すると繰り返しのループから抜けるようにコメントにしている部分をコードに組み込むか、既読の投稿自体を別のフォルダに移動させてください。

コメント