Outlookサポートナビ!  ≫≫≫ Outlookフォーム作成/VBSプログラミング

 

◆既存アイテムを開いた時のみ処理を発生させる


オブジェクト

イベント(既存アイテムを開いた時に発生)

Item

Read

記述法: Item_Read()

★既存アイテムを開いた時に発生するイベントです。(新規アイテムを開いた場合には発生しません。)

★注意:このイベントでは関数の戻り値をFalseにしても処理を中止することはできません。処理を中止したい場合はItem_Openイベントを使い、条件を付けて新規/既存の処理を分けましょう。

 

記述例:


記号

既存アイテムを開いた時に元のデータを変数に格納
(元データが変更された場合に処理を発生させることができます。)

Sub Item_Read()
intNum = UserProperties("注文数").value
dtDelivery = UserProperties("配達希望日").value
End sub

★既存アイテム開封時に発生するイベント

★変数intNumに注文数のデータを格納

★変数dtDeliveryに配達希望日のデータを格納

 

アイテムの元データを格納しておくことで、編集&保存時に「元の値と違った場合」の処理を行えます。(If intNum <> UserProperties("注文数”).value then…)※変数はグローバル変数としてスクリプト頭で宣言しておきましょう。(Dim intNum,dtDelivery)


記号

既存アイテムを開いた場合は現在のユーザーを最終閲覧者として取得
(新規アイテムの場合は最終更新者は取得しません。)

Sub Item_Read()
Set MyNameSpace = Application.GetNameSpace("mapi")
UserProperties("最終閲覧者").value = MyNameSpace.CurrentUser
End Sub

★既存アイテムを開いた際に発生するイベント

★Outlookルートオブジェクトを取得

★最終更新者に現在のログオンユーザーを格納

 


記号

Readイベントを使えない場合の例:投稿者以外はアイテムを開けないようにする
Readイベントでは処理を中止できません。代わりにItem_Openイベントを使います。)

Function Item_Open()
Set MyNameSpace = Application.GetNameSpace("mapi")
If Item.CreationTime <> #4501/01/01# then
strUser = Item.SenderName
If strUser <> MyNameSpace.CurrentUser then
Item_Open = False
End if
End if
End Function

★アイテムを開いた際に発生するイベント(新規・既存どちらも)

★Outlookルートオブジェクトを取得

★作成日時が4501/01/01でないなら(=新規アイテムではない)

★変数strUserに投稿者を格納し

★投稿者と現在のログインユーザーが違うなら

★開く処理を中止する

 

 

 

Item_Openイベントでは戻り値をFalseに設定すると閉じる操作を中止することができます。(戻り値を格納するにはFunctionプロシージャを使う必要があります。) 参考:アイテムを開いた時に処理を発生させる(Item_Open)