<Outlookの重要度フラグ .Importance = olImportanceHigh>
どうも、三流プログラマーのKen3です。 今回は、 Outlookで重要度のフラグを探ったお話です。 ※探し方がヘタでした(笑) たいした内容じゃないのですが。/* * 1.今回のキッカケ */
http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi の掲示板に、 > Outlookのメール操作の中で、 > メールの送信は出来るのですが、 > その送信メールの「重要度フラグ」をプログラム(VB)で操作することは > 可能なのでしょうか?? ---- と書き込みをもらいました。 重要度のフラグ、少し興味あったので、探ってみました。/* * 2.いつもの探り方(失敗したけど、参考になればと思い) */
Outlookを起動します。 起動後、Alt+F11を押します。 すると、VBAのいつものよく見かける画面が表示されます。 ここで、適当な変数を定義します。 Dim aa as MailItem と、メールのアイテム型の変数を定義します。あとは、いつものように、aa.とピリオドを打つと、 プロパティやメソッドが表示されるので、 それらしいプロパティ・メソッドの名称を選択します。 おっ、と思ったのが、
の、 .FlagStatus フラグのステータス これでしょうと確認もしないで、決め付けて、メルマガ向け画面コピーも行う。 ※オイオイ気がハヤイって、、、 プロパティにカーソルを合わせ、F1のヘルプを見る。 あれれ・・・重要度のフラグじゃないみたいです。。。 ハズシタ(笑) 探り方、外したけど、こんな感じで、 該当するオブジェクト型の変数を定義 Dim aa as MailItem その後、 aa. と、候補を表示させ、それらしいのにアタック。 aa.FlagStatus と選択後、カーソルを合わせてからF1のヘルプを見る。 そんな流れでいつもプロパティ、メソッドを探ってます。
/* * 3.ネットを検索する */
いまだに、うまいキーワードで検索できないけど、 ネットで検索して、サンプルを拾ってきて、自分のものにする方法もあります。 MailITEM 重要度 の2つのキーワードで検索すると、下記のページがヒットする。 ^^^^^^^^^^^^^^^ http://www.microsoft.com/japan/msdn/library/ja/modcore/html/deovrworkingwithoutlookfoldersitems.asp >Restrict メソッドを使用する場合、角かっこで囲んだ Outlook フィールド名を使用 >して検索の抽出条件を指定します。And、Or、Not などの演算子を使用して複数の抽出 >条件を結合できます。たとえば、次のサンプルでは、過去 7 日間内に送信された、 >重要度の高い未読メール アイテムを検出します。 > >Dim fldMail As Outlook.MAPIFolder >Dim itmItems As Outlook.Items > >strCriteria = "[SentOn] > '" & (Date - 7) _ > & "' And [UnRead] = True And [Importance] = High" > >Set fldMail = gnspNameSpace.GetDefaultFolder(olFolderInbox) >Set itmItems = fldMail.Items.Restrict(strCriteria) このサンプルって、 今あるメッセージの検索ぽいので却下(笑)、たぶん受信済み未読を検索すると思う でも、ここから、 [Importance] = High" が怪しいとにらみ、これだろとまた勝手に思い込む(笑) Importance プロパティをヘルプで探る。 ~~~~~~~~~~~~~~~~~~~~~ >Outlook アイテムの相対的な重要度を表す OlImportance クラスの定数を >設定します。このプロパティは、MAPI プロパティの >PR_IMPORTANCE に対応しています。値の取得および設定が可能です。 > >使用できる定数は、次に示す OlImportance クラスの定数のいずれかです。 >olImportanceHigh >olImportanceLow >olImportanceNormal > >expression.Importance > >expression 必ず指定します。対象となるオブジェクトへの参照を表すオブ >ジェクト式を指定します。 と、やっと目的のプロパティにたどり着いたみたいです。
Sub aaa()
Dim myOlApp As Outlook.Application
Dim myitem As MailItem
Set myOlApp = CreateObject("Outlook.Application")
Set myitem = myOlApp.CreateItem(olMailItem)
myitem.To = "test@ken3.org"
myitem.Body = "test"
myitem.Importance = olImportanceHigh
myitem.Display
End Sub |
みたいに、定数の候補が出て、コーディングもしやすいです。
Outlook2000,Outlook2002と環境を行ったりきたりするので、
参照設定をしてない場合は、
olImportanceHigh など、定数が使えません(エラーが発生します)
まぁ、そんな時は、OutlookのVBA編集画面で、
? olImportanceHigh
2
? olImportanceLow
0
? olImportanceNormal
1
なんてやって、定数を求めて、
objMAIL.Importance = 2 'olImportanceHigh=2
みたいに直値で書くか、
Const olImportanceHigh = 2 '重要度=高
と、自分でConst定義するか・・・
Excel VBAで、参照設定無しで重要度(高)のメールを作成するサンプル。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'メールアイテム作成後、重要度を高olImportanceHigh=2にする
objMAIL.Importance = 2 'olImportanceHigh=2
と、メールアイテムのオブジェクトに対して重要度を2(高)に設定してます。
Sub test送信メール作成()
Dim oApp As Object 'アプリケーションオブジェクト
Dim objMAIL As Object 'メールのオブジェクト
Dim strMOJI As String '本文
'アプリケーションオブジェクトの作成
Set oApp = CreateObject("Outlook.Application")
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
'メールアイテム作成後、重要度を高olImportanceHigh=2にする
objMAIL.Importance = 2 'olImportanceHigh=2
strMOJI = "こんにちは" & vbCrLf _
& "プログラマーの愚痴、教えまっせ?" & vbCrLf _
& "http://www.ken3.org/ よろしく(笑)"
objMAIL.To = "test@ken3.org" '宛先
objMAIL.Subject = "未承諾広告※(笑)" '件名
objMAIL.Body = strMOJI '本文の代入
objMAIL.Display '途中で編集したい時(メール表示してみた)
'おまけでOutlook表示
Dim myNameSpace As Object
Dim myFolder As Object
Set myNameSpace = oApp.GetNameSpace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダーを指定
myFolder.Display '表示
End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
|
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]