lucass3231
lucass3231

Reputation: 21

save last sent email from outlook after click a button in access

I am curious if it is possible to start macro from access that save last sent email from outlook to local folder? I have something like that at this moment but it saves all emails when sending. Please advise.

EDIT: now I past it into vb in access but got an error 'Method or data member not found' and highlighted first line.

Sub SaveLastSentItem()
    Dim oApp As Outlook.Application
    Dim myNameSpace As Outlook.Namespace
    Dim myFolder As Outlook.Folder
    Dim myNewFolder As Outlook.Folder
    Dim myItem As Outlook.MailItem
    Dim myCopiedItem As Outlook.MailItem
    Dim myItems As Object
    Dim savePath As String

    Set oApp = New Outlook.Application

    Set myNameSpace = oApp.GetNamespace("MAPI")

    Set myFolder = myNameSpace.GetDefaultFolder(olFolderSentMail)

    Set myItems = myFolder.Items
    myItems.Sort ("[SentOn]")


    Set myItem = myItems.GetLast

    savePath = "C:\Users\best buy\Downloads\stackoverfow\Individual Reports\"    '## Modify as needed
    savePath = savePath & myItem.Subject & Format(myItem.CreationTime, " yyyy-mm-dd-hhNNss")
    savePath = savePath & ".oft"


    myItem.SaveAs savePath, OlSaveAsType.olMsg

End Sub

Upvotes: 2

Views: 1363

Answers (1)

user6432984
user6432984

Reputation:

Yes you'll need sort the MailItems in the Sent folder by SentOn date. Then you can use MailItem.GetLast to set a reference to the last email sent.

enter image description here

Sub SaveLastSentItem()
    Dim oApp As Outlook.Application
    Dim myNameSpace As Outlook.NameSpace
    Dim myFolder As Outlook.Folder
    Dim myNewFolder As Outlook.Folder
    Dim myItem As Outlook.MailItem
    Dim myCopiedItem As Outlook.MailItem
    Dim myItems As Object
    Dim savePath As String

    Set oApp = New Outlook.Application

    Set myNameSpace = oApp.GetNamespace("MAPI")

    Set myFolder = myNameSpace.GetDefaultFolder(olFolderSentMail)

    Set myItems = myFolder.Items
    myItems.Sort ("[SentOn]")


    Set myItem = myItems.GetLast

    savePath = "C:\Users\best buy\Downloads\stackoverfow\Individual Reports\"    '## Modify as needed
    savePath = savePath & myItem.Subject & Format(myItem.CreationTime, " yyyy-mm-dd-hhNNss")
    savePath = savePath & ".oft"


    myItem.SaveAs savePath, OlSaveAsType.olMSG

End Sub

Upvotes: 1

Related Questions