こんにちは、くのへ@MasazaneKunoheです。
前回の記事では、オブジェクト構造について整理しましたが、それは言わば上から下への流れの説明でした。
しかし、Parentプロパティを使うと、下から上を参照することが出来ます。
オブジェクト構造の復習
前回の解説では、OutlookはMAPIというNameSpaceを最上位にした次のような構成になっていることを解説しました。
MAPI
┗Folders
┗Item 1 ←メールアカウントのこと
┗Name ←メールアカウントアドレス
┗Folders
┗Item 1 ←ゴミ箱
┗Item 2 ←受信トレイ
┗Items ←メールアイテムが入っている場所
┗Item 1 ←1番目のメール
┗To ←宛先
┗Subject ←件名
┗Body ←本文
┗・・・ ←2番目以降のメール
┗Item 3 ←送信トレイ
┗Item 4 ←送信済みトレイ
┗・・・ ←その他のトレイやタスクフォルダなど
Parentプロパティを使うと
Parentプロパティを使うと、自分の上位のプロパティを参照することが出来ます。
ただし、すぐ上のItemsプロパティを参照するわけではなく、下の図の通り2つ上の受信トレイを参照します。
面白いことに「Items」にもParentプロパティがあるのですが、これは1つ上の受信トレイを指します。
同様に、さらに上位のプロパティにもParentプロパティは存在し、下図の通り類似挙動を示します。
このParentプロパティを使うと、Selectionメソッドなどで「メール」を出発点にした時でも、その上位プロパティを調べることが出来ます。
これにより、保存先のトレイ(:受信トレイとか送信トレイとか)を調べることなどが出来ます。
具体例は次章参照。関連記事はこちらを参照ください。
直接メールなどのアイテムを取得するコード
前章の内容を確かめるために、以下のコードを書いてみます。
Sub 選択アイテムをobjItemに代入するコード()
Dim objSelect As Outlook.Selection
Dim objItem As Object
Set objSelect = Outlook.Application.ActiveExplorer.Selection
Set objItem = objSelect.Item(1)
Stop
End Sub
そして、受信トレイの一番目のメールを選択してからこのコードを実行してみてください。
Stopでプログラムが停止しますが、この時のobjItemには↓この図のItem 1が代入された状態になります。
Stopでプログラムを停止させたまま、ローカルウィンドウでobjItemを開いてみましょう。
↓このとおり、メールアイテムのプロパティである「BCC」「Body」「CC」、、、と並び、「Class」もメールオブジェクトを表す「olMail」になっています。
これらはobjItemのプロパティ、すなわち最初の図で言うところの「Item 1」の下位のプロパティのみが見えている状態になっています。
この状態で、ローカルウィンドウの下の方に視点を移動させ、objItemのParentプロパティを開いてみましょう。
おぉ!!上位の「受信トレイ」が見えます。
ここは、↓この図のItem 2に相当する場所になっています。
Parentプロパティって、こういうことね。
無限ループも出来る(笑)
当然ながら上位のプロパティに戻ったということは、その中に「Items」も「Item 1」もあります。
このItem 1は元のobjItemと同じものです。
つまり、やっぱりItem 1にもParentプロパティがあり ⇒ これを開くと、ItemsとItem 1があり⇒、、、
も、もう一回遊べるド~~~ンw
無限ループしますw
でもこの仕組みを知っていたら当然と言えば当然の構造ですね!
今回もちょっと難しいですね~
Parentプロパティのメインの使いどころは、メールがどの保存トレイにあるのかを調べる時だと思います。
ではまた別の記事で~
🦅バサバサ~