Outlookで現在選択されているアイテムを知るには、
ActiveExplorer.Selection
から探るといいかも。
アイテムの数は
? Application.ActiveExplorer.Selection.Count1
で、選択されているアイテムの数がわかります。
(選択されている数、ctrl+クリックで複数選択可能なので2とか複数返ることがある)
アイテムの種類
次に選択されているのが、どの種類のアイテム(メール,仕事,予定,連絡先)を知りたかったので、1番目のアイテムのタイプを表示させてみます。
? typename(Application.ActiveExplorer.Selection.Item(1))
MailItem
など、.Item(1)をTypeName関数で探ると、型の名前が返ってきます。
あとは、目的(使用したいアイテム)の型を宣言して
Dim cITEM As ContactItem '連絡先
Dim tITEM As TaskITEM 'タスク、仕事
Dim mITEM As MailItem 'メール アイテム
Dim aITEM As AppointmentItem '予定、アポ アイテム
みたいに、型宣言すると、プロパティやメソッドが探りやすいです。
値を取り出したり、使用するときは、
Set oITEM = Application.ActiveExplorer.Selection.Item(1)
とすると、oITEM.XXXX で 使いやすいと思います。
探りかた、操作動画
いつもの、
途中で固まったり 右往左往・迷ったりしている酔っ払い動画です。
Outlook VBA 現在選択されているアイテムを探る テスト - YouTube
www.youtube.com
↑最後、キャプチャーソフトが途中で止まってしまいましたが、気にしないでください。
テストのコード
下記、テストのコードです。
いろいろと変更して、遊んでみてください。
'現在選択されているアイテムをテストで表示する Sub chkITEM_TEST() Dim cITEM As ContactItem '連絡先 Dim tITEM As TaskITEM 'タスク、仕事 Dim mITEM As MailItem 'メール アイテム Dim aITEM As AppointmentItem '予定、アポ アイテム Dim nSelectCNT As Integer '選択されている数、ctrl+クリックで複数選択可能なので Dim n As Integer 'ループのカウンター nSelectCNT = Application.ActiveExplorer.Selection.Count '選択された件数 '選択されているアイテムのプロパティの一部をテストで表示する Debug.Print "選択されている件数は " & Application.ActiveExplorer.Selection.Count & " 件です。" Debug.Print "TYPEは " & TypeName(Application.ActiveExplorer.Selection.Item(1)) Select Case TypeName(Application.ActiveExplorer.Selection.Item(1)) Case "MailItem" 'メール For n = 1 To nSelectCNT '配列が1からなので注意? Debug.Print n & "番目 item(n)" Set mITEM = Application.ActiveExplorer.Selection.Item(n) 'n番目のitemをセットする Debug.Print mITEM.Subject '件名 Debug.Print mITEM.To '宛先 Debug.Print mITEM.Body '本文 '↑他にも 値、プロパティがあるけど、テストで表示 Next n Case "TaskItem" 'タスク、仕事 For n = 1 To nSelectCNT '配列が1からなので注意? Debug.Print n & "番目 item(n)" Set tITEM = Application.ActiveExplorer.Selection.Item(n) 'n番目のitemをセットする Debug.Print "件名:" & tITEM.Subject '件名 Debug.Print "本文:" & tITEM.Body '本文 '↑他にも 値、プロパティがあるけど、テストで表示 Next n Case "AppointmentItem" '予定、アポ For n = 1 To nSelectCNT '配列が1からなので注意? Debug.Print n & "番目 item(n)" Set aITEM = Application.ActiveExplorer.Selection.Item(n) 'n番目のitemをセットする Debug.Print "件名" & aITEM.Subject '件名 Debug.Print "本文" & aITEM.Body '本文 '↑他にも 値、プロパティがあるけど、テストで表示 Next n Case "ContactItem" '連絡先 For n = 1 To nSelectCNT '配列が1からなので注意? Debug.Print n & "番目 item(n)" Set cITEM = Application.ActiveExplorer.Selection.Item(n) 'n番目のitemをセットする Debug.Print cITEM.Email1Address 'メールアドレス1 Debug.Print cITEM.YomiCompanyName Debug.Print cITEM.CompanyName Debug.Print cITEM.YomiLastName Debug.Print cITEM.LastName Debug.Print cITEM.YomiFirstName Debug.Print cITEM.FirstName '↑他にも 値、プロパティがあるけど、テストで表示 Next n Case Else Debug.Print "その他、メモなど?" End Select End Sub
終わりの挨拶
選択されたアイテムを取得できそうなので、
連絡先からデータをひっぱってきて、他のアイテム作成(CreateITEM)が可能になるかなぁ?
次は、ハマらないで完成するといいなぁ(笑)