• ベストアンサー

Outlook2007のVBAで

Outlook2007のVBAで Outlook2007のVBAで件名か本文にAかBの文字列を含んでいるときにアラートを表示させるというマクロを作りたいのですがどのようにすればいいのかわかりません。 あと本文はItem.bodyで件名はItem.Subjectを使ってますがこれでよろしいのですか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

>送信したときと書き忘れていました。 一旦、Const の所に名前を入れて、マクロを保存(Ctrl + S)してから、試してみてください。 私は、送信時の時のものは以下のようになりますし、こちには自然なコードです。 #1はおかしいとは思ったのですが、そのままにしてしまいました。 #1のコードは、削除してしまってください。 >それとすいませんが宛先(Item.to)に"Aさん"へ送るときは  InStr(1, Item.To, DESTNAME, 1) のように、テキストコンペアにしたほうがよいです。 スペースや、全角半角を間違えても、検出出来ます。 '// Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)  Const DESTNAME = "xxx" '←宛先(address のほうが確実)  Const KEYWORD1 = "A" 'キーワード1  Const KEYWORD2 = "B" 'キーワード2  If InStr(1, Item.To, DESTNAME, 1) > 0 Then   If (InStr(1, Item.Body, KEYWORD1, 1) > 0 Or InStr(1, Item.Body, KEYWORD2, 1) > 0) Or _    (InStr(1, Item.Subject, KEYWORD1, 1) > 0 Or InStr(1, Item.Subject, KEYWORD2, 1) > 0) Then    If MsgBox(Item.Subject & "には検索文字が含まれています。[OK]で送信しますか。", vbExclamation + vbOKCancel) = vbCancel Then     Cancel = True    End If   End If  End If End Sub

Michigami
質問者

お礼

ありがとうございました。 うまいこと行きました

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

>あと本文はItem.bodyで件名はItem.Subjectを使ってますがこれでよろしいのですか?   それでよいと思います。 試しにコードを書いてみましたが、これでは、ルール付けと同じですね。 それから、複数に入ってきた時に、どうなるのか、まだ調べておりません。 'ThisOutlookSession のイベントに取り付けます。 Private Sub Application_NewMail()  Dim olApp As Outlook.Application  Dim olNS As Outlook.NameSpace  Dim olFld As Outlook.MAPIFolder  Dim oMail As Outlook.MailItem    Set olApp = Outlook.Application  Set olNS = olApp.GetNamespace("MAPI")  Set olFld = olNS.GetDefaultFolder(olFolderInbox)    Set oMail = olFld.Items.GetFirst  '検索文字  If (InStr(1, oMail.Body, "A", 1) > 0 Or InStr(1, oMail.Body, "B", 1) > 0) Or _   (InStr(1, oMail.Subject, "A", 1) > 0 Or InStr(1, oMail.Subject, "B", 1) > 0) Then   MsgBox oMail.Subject & "には検索文字が含まれています。", 48  End If  Set oMail = Nothing  Set oFld = Nothing  Set oNS = Nothing  Set olApp = Nothing End Sub

Michigami
質問者

補足

回答ありがとうございます。 うまく動作しませんでした。 それと送信したときと書き忘れていました。 あとAやBのところを Dim A As String A = XYZ のように省略することはできますか? それとすいませんが宛先(Item.to)に"Aさん"へ送るときは If (InStr(1, oMail.Body, "A", 1) > 0 Or InStr(1, oMail.Body, "B", 1) > 0) Or _   (InStr(1, oMail.Subject, "A", 1) > 0 Or InStr(1, oMail.Subject, "B", 1) > 0) Then の下に If Item.to = "Aさん" でいいのでしょうか 長文になってしまいましたがよろしくお願いします /(_ _)\

すると、全ての回答が全文表示されます。