NewMailとNewMailExの違いは?

このQ&Aのポイント
  • NewMailとNewMailExはOutlookのイベントであり、メールを受信すると発生します。しかし、具体的な違いは明確にされておらず、どちらもメールの受信時に動作します。
  • NewMailとNewMailExはOutlookのイベントであり、メールの受信時に実行されます。しかし、詳細な違いについては明確に定義されておらず、どちらのイベントも同じように動作します。
  • NewMailとNewMailExはOutlookのイベントであり、メールの受信時にトリガーされます。しかし、具体的な違いや異なる動作は明確に説明されていないため、違いがあるかどうかは不明です。
回答を見る
  • ベストアンサー

NewMailとNewMailExの違いは?

outlook  NewMailとNewMailExの違いは? ヘルプを見ても NewMail → 受信トレイに 1 つ以上の新しいメール メッセージを受信すると発生します。 NewMailEx → 受信トレイに新しいアイテムを受信すると発生します。 と書いてあり、 結局はメールを受信すると発生すると言う意味で違いが判りません。 Private Sub Application_NewMail() MsgBox "Application_NewMail" End Sub Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) MsgBox "Application_NewMailEx" End Sub とした状態で、メールを受信したら、どちらも反応しました。 "Application_NewMailEx"の方が先でした。 で、結局違いがわからないのですが、何が違うのでしょうか? ご回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

NewMail はメールが新着したということしかわからないのに対し、NewMailEx は新着したメールが具体的にどのメールであるかということが分かります。 NewMail ではメールが新着した後、実際にどのメールが新着なのであるかということは受信トレイで未読かつ最近受信したメールというようなものを検索する必要があるのですが、NewMailEx は以下のようにして新着メールを検索せずに取得することができます。 Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) Set objItem = Session.GetItemFromID(EntryIDCollection) MsgBox "新着メール:" & objItem.Subject End Sub もともと、Outlook 2002 までは NewMail というイベントしかなく、新着メールの特定ができなかったため、Outlook 2003 で新たに特定できる NewMailEx が追加されたのです。 そういう意味では、NewMail を使う意味はまったくといっていいほどありません。

IIRCLXN652
質問者

お礼

NewMailExの方が新着メールの色々な情報がわかるという事ですね。 コードを検証してみたらうまくできました。 では、NewMailは使う意味はあまりないようですね。ありがとうございました。

関連するQ&A

  • MessageBox.Showとmsgboxの違いは?

    MessageBox.Showとmsgboxの違いは? vb.net初心者です。 フォームにコマンドボタンを設置して、 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("test")  でも MessageBox.Show("test") End Sub でもうまくいきます。 この二つに違いはありますか?

  • エクセル デバッグできるのとできないのがある

    シートイベントについて教えてください。 シートモジュールに --------------------------------------------------------- Option Explicit Private Sub Worksheet_Activate() MsgBox "" End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox "" End Sub Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "" End Sub --------------------------------------------------------- と記載した時に、 F8で動かせるのは、Worksheet_Activateだけなのですがなぜでしょうか? ほかのイベントは、F8で実行させても、OSの音が鳴るだけで、マクロの実行はされません。 ご回答よろしくお願いします。

  • 違いを教えてください。

    VBAについて質問です。 ///////////////////// Sub sample1(a As String) a = "abc" MsgBox a End Sub --------------------- Sub sample2() Dim a As String a = "abc" MsgBox a End Sub ///////////////////// sample1とsample2の違いは何でしょうか? どちらも標準モジュールに記載しました。 sample2はF5で実行できますが、sample1はF5を押しても何も起きません。 それだけの違いでしょうか? Sample1の使い道がわかりません。 ///////////////////// Option Explicit Sub sample2() Call sample1 End Sub --------------------- Sub sample1(a As String) a = "abc" MsgBox a End Sub ///////////////////// にしたら、 「引数は省略できません。(Error 449)」というコンパイルエラーになりました。

  • エクセルVBAで Cancel=Trueの使い方

    Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub Cancel = True MsgBox "キャンセルしました" End Sub Private Sub Worksheet_Deactivate() Cancel = True MsgBox "キャンセルしました" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cancel = True MsgBox "キャンセルしました" End Sub 以上のように使ってみましたが、どれも「キャンセルしました」とメッセージは出るものの、直前の操作(入力、シート切替、セル移動)はキャンセルされませんでした。 どこが間違っているのでしょうか?

  • VB205のPicturebox上でのMousewheelイベント

    VB2005で、Form1にPanel1をはりつけ、その中にPicturebox1をはりつけ、Pictureboxの範囲の中で、マウスをホィールしても、イベントが発生しません。ためしに、Picturebox1とPanel1について書いてみましたが、だめでした!(Form1では、発生します) 何がダメなんでしょうか?どなたか詳しい方がいらっしゃいましたら教えて頂けないでしょうか?宜しくお願い致します。 Private Sub PictureBox1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseWheel MsgBox("TEST_Picturebox") End Sub Private Sub Panel1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseWheel MsgBox("TESUT_Panel") End Sub

  • 二つの違い・どちらを使った方がいいでしょうか?

    Sub test1() Dim a As String a = MsgBox("aaa") End Sub Sub test2() MsgBox "aaa" End Sub どちらもメッセージを表示させられるのですが コードを書く際はどちらを使った方がいいのでしょうか? 独学のためよくわかりません。 宜しくお願いいたします。

  • この例は「何渡し」と言うのでしょうか?

    Sub test1() Call test2("aaa") End Sub Sub test2(str As String) MsgBox str End Sub ByRefもByValも使ってないから 参照渡しでも値渡しでもないですよね?

  • EndとExit Subの違い

    Sub test1() MsgBox "test1" Exit Sub End Sub Sub test2() MsgBox "test2" End End Sub の違いはありますか? 只の表現の違いなのでしょうか? よろしくお願いします。

  • Excel VBA onTime関数のプロシージャ引数に、引数(変数)つきのプロシージャを呼び出す方法を教えてください。

    現在ExcelVBAで一定時間ごとにメッセージを出すツールを作成しています。 その際にonTime関数を使っていますが、その引数のひとつである呼び出すプロシージャに「引数(変数)つきのプロシージャ」を設定しようとしています。 サイトを探してみたところ、引数にシングルクオーテーションで囲むなど書いてあったのですが、変数を引数としたプロシージャを設定すると、「プロシージャが見つかりません」のエラーがでます。 どなたかお力を貸してくれませんでしょうか。 ちなみに僕のコードは以下の通りです。(簡略化) ------フォーム Private Sub cmbOk_Click() Call メッセージ実行(txtTime.Text, txtContent.Text) End Sub ------ThisWorkbook Private Sub メッセージ実行(ByVal time As String, ByVal content As String) Dim starttime As Double MsgBox time & "毎に" & vbCr & content & vbCr & "を表示します。", vbInformation Unload frmSet starttime = Now + CDbl(TimeValue(time)) Application.OnTime starttime, "'expressContent" & time & content & "'" End Sub ------標準モジュール Dim starttime2 As Double Sub expressContent(ByVal time2 As String, ByVal content2 As String) MsgBox "content2", vbInformation starttime2 = Now + CDbl(TimeValue(time2)) Application.OnTime starttime2, "'expressContent" & time & content & "'" End Sub よろしくお願い致します。

  • エクセル(複数インスタンス)より任意のWorkBookを取得したい

    VB初心者です。非常に困っていますのでどうぞ宜しく御願いいたします。  起動中のエクセルをVB6.0からコントロールしたいと思い、以下のコードを書いたのですが、エクセルが複数インスタンスで起動している場合、意図するワークブックが取得できないことに気が付きました。(一番初めに起動したインスタンスのエクセルしか取得できませんでした) ■失敗■ Private Sub Command1_Click()  Set xlApp = GetObject(, "Excel.Application")  xlApp.ActiveWorkbook.Sheets("シート名").Select 'アクティブなWorkBookを取得  Err.Clear  On error resume next  If Err.Number <> 0 Then  MsgBox"エラー"  Else  msgBox"取得成功"  End If  Err.Clear  On error goto 0 End Sub  そこで、全てのエクセルのウィンドーテキストを取得し、そこから意図するエクセルオブジェクトを取得しようと、ネットで調べながら以下のプログラムを試してみました。結果、List1に全てのインスタンスのワークブック名を取得することはできましたが、肝心のGetObjectで「オートメンーションの操作中にファイル名またはクラス名を見つけられませんでした。」というエラーが発生し失敗してしまいました。 ■失敗■ 'Windowの生成API Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Sub Command1_Click() 'コントロールするエクセルの列挙 Dim lBookNameLenghth As Long Dim strBuffer As String Dim lChild As Long Const lBufferSize As Byte = 255 strBuffer = String(lBufferSize, Chr(0)) List1.Clear Do Counter = Counter + 1 lChild = FindWindowEx(0, lChild, "MS-SDIa", vbNullString) If lChild = False Then Exit Do lBookNameLenghth = GetWindowText(lChild, strBuffer, lBufferSize) List1.AddItem Left(strBuffer, lBookNameLenghth) Loop While lChild End Sub Private Sub List1_Click() If List1.Text <> "" Then Set xlApp = GetObject(List1.Text, "Excel.Application") '←ここでエラー発生 End If End Sub どんな方法でも構いませんので、全てのインスタンスのエクセルを対象としたエクセルオブジェクト取得方法を教えてください。 環境:Windows2000 Professional+VB6.0+Office2000 以上、宜しく御願いいたします。

専門家に質問してみよう