三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

XXXXXさんへ Outlook VBA 送信時にフラグのセット について

昔の記事 Outlook VBA でフラグを付ける処理
三流君VBA:Outlook VBAでフラグ作成 .FlagStatus .FlagRequest .FlagDueBy
http://www.ken3.org/vba/backno/vba161.html
に下記の質問をいただきました。


教えていただければと思います。
No161のフラッグ設定を既存のマクロに付け足そうとしています。(BCCで自分へのメールを付け足すマクロです)
下記がうまく働きません。
どうすればよいでしょうか?
ー------------------------

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim oApp As Object    'アプリケーションオブジェクト
    Dim objMAIL As Object 'メールのオブジェクト
    Dim strSenderAddress As String
        'アプリケーションオブジェクトの作成
    Set oApp = CreateObject("Outlook.Application")
    Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
strSenderAddress = Item.SendUsingAccount.CurrentUser.Address

    'VBA161でFLG関係のテスト
    objMAIL.FlagStatus = olFlagMarked 'olFlagMarked (2)をセット参照設定時は定数で
    objMAIL.FlagRequest = "連絡ください" 'フラグ内容をセット
    objMAIL.FlagDueBy = DateAdd("d", 1, Now) '期限は1日後をセット
    '↑ここまです(VBA161で追加)


こんにちは。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

ITEMが送信時のITEMなので

    Dim objMAIL As Object 'メールのオブジェクト
    Set objMAIL = oApp.CreateItem(0) 'olMailItem=0

だと、メールを新規に作ってしまうのでは?
そのメールに

    'VBA161でFLG関係のテスト
    objMAIL.FlagStatus = olFlagMarked 'olFlagMarked (2)をセット参照設定時は定数で
    objMAIL.FlagRequest = "連絡ください" 'フラグ内容をセット
    objMAIL.FlagDueBy = DateAdd("d", 1, Now) '期限は1日後をセット
    '↑ここまです(VBA161で追加)

としても、
意味がないような・・・

素直に
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

ByVal Item As Object
を使うと思うのですが・・・
下記、修正案

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim strSenderAddress As String
strSenderAddress = Item.SendUsingAccount.CurrentUser.Address

    'VBA161でFLG関係のテスト
    Item.FlagStatus = olFlagMarked 'olFlagMarked (2)をセット参照設定時は定数で
    Item.FlagRequest = "連絡ください" 'フラグ内容をセット
    Item.FlagDueBy = DateAdd("d", 1, Now) '期限は1日後をセット
    '↑ここまです(VBA161で追加)

objMAIL ではなくて Item で動くといいんだけど

間違っていたらスミマセン、
送信時に
Dim objMAIL As Object 'メールのオブジェクト
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
で作り直しているのが
気になったので

解決のヒントとなれば幸いです。 三流プログラマー Ken3

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)