开发者

Outlook VBA - Get Details Of Current Active (Or Open) Email

开发者 https://www.devze.com 2022-12-19 07:16 出处:网络
I am completely stuck as to how to retrieve details of an email which is either currently selected or open.In fact, I can\'t find any details on how to access an email.It seems you can traverse the en

I am completely stuck as to how to retrieve details of an email which is either currently selected or open. In fact, I can't find any details on how to access an email. It seems you can traverse the entire folder structure and get all emails, but that doesn't really help me.

I don't suppose I can get some 开发者_运维问答pointers?

And yes, I hate VBA as much as the next developer, but unfortunately about 0.1% of my work involves integration with Outlook.

Cheers.


To get the currently selected emails by looking at the Selection object of the Explorer.

Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection

Set myOlExp = Application.ActiveExplorer
Set myOlSel = myOlExp.Selection

The selection object can contain many items and also contain Items that are of other types than mail (IPM.Note) i.e calendar apps etc. So if you only want mail items you can take a look at the item MessageClass

As for the current email that is trickier as you can multuiple of these open if you just want the top most you can use the Application.ActiveInspector otherwise you should look at the Inspectors Collection of the Application object. You can then get the "item" from the CurrentItem property off the Inspector(remember these can be non mails as well)

Hope full that will get you going


I ended up here as I was looking for a way to use VBA to modify the email that is currently being composed. While the ActiveInspector solution above works if the new email is in a new window, it does not work if replying 'inline' (in the preview pane). For this, I wrote this function:

Private Function CurrentEmail() As MailItem

Dim thisMail As MailItem

If Application.ActiveInspector Is Nothing Then
    'editing in preview pane
    Set thisMail = Application.ActiveExplorer.ActiveInlineResponse
Else
    'editing in pop out window
    Set thisMail = Application.ActiveInspector.CurrentItem
End If

If thisMail Is Nothing Then Exit Function
If thisMail.Sent Then Exit Function  'ignore sent items

Set CurrentEmail = thisMail

End Function

0

精彩评论

暂无评论...
验证码 换一张
取 消