Save Selected Email Message as .msg File

Discussion in ' Outlook Articles' started by Diane Poremsky, Oct 19, 2016.

  1. Diane Poremsky

    Diane Poremsky

    Senior Member
  2. michaelr


    Is it possible to use a VBA msoFileDialogFolderPicker instead of Function BrowseForFolder? I like to use the address bar of the FileDialogFolderPicker window.
  3. Nik


    New Member
    Hello Diane,

    how to modify the 1. code of "Save Selected Email Message as .msg File" to save the incoming e-mails via the rule (in the rule assistant via executing a script)?

    The original code is with the line "For Each objItem In ActiveExplorer.Selection" which automatically prevents to select the correct e-mail. Witch line have I to mode to get the correct focus (= to process the e-mails that are filtered via the rule)?

  4. Diane Poremsky

    Diane Poremsky

    Senior Member
    Delete these lines plus the End If and Next that go with them:
    For Each objItem In ActiveExplorer.Selection
    If objItem.MessageClass = "IPM.Note" Then
    Set oMail = objItem

    Dim oMail As Outlook.MailItem
    Dim objItem As Object
    and put oMail As Outlook.MailItem in the () in the title:
    Public Sub SaveMessageAsMsg(oMail As Outlook.MailItem)

    That should be all you need to do to convert it to a run a script macro (but its possible i missed something else).
  5. Diane Poremsky

    Diane Poremsky

    Senior Member
    You can use the Excel or Word object model to access their open/save dialogs as Outlook VBA doesn't have its own open save dialog.

    This is the Excel method but Word would be similar. Open the picker and set the name and location -
    Set xlApp = CreateObject("Excel.application")
    xlApp.Visible = False
    strSaveAsFilename = xlApp.GetSaveAsFilename
    Set xlApp = Nothing

    use it in the macro like this:
  6. Nik


    New Member
    Thank Diane!
    My problem was that I didn't' delite the line "Dim oMail As Outlook.MailItem" also.
    Now it works!
  7. Nik


    New Member
    Hello Diane,

    I have here a VBA code but this is not mine I think I am not allow to publish it (also on the forum here).

    I tried to modify the code sometimes with the same logic like my question yesterday/today like for "Save Selected Email Message as .msg File" to be possible to process the e-mails via the rule assistant but it don't work.

    Would it be possible to show you this code and how without to publish it on the forum?

    I think I need only to delete two ... three lines like in your code "Save Selected Email Message as .msg File" but I can't find them (similar to my problem with question on the forum from yesterday/today).

  8. Diane Poremsky

    Diane Poremsky

    Senior Member
    save it a notepad file and upload it to a post. After i take a look at it, i can delete the attachment.
  9. Nik


    New Member
    Hello Diane!
    That's very kind of you!


    Attached Files:

  10. Diane Poremsky

    Diane Poremsky

    Senior Member
    i think this is the macro that does the work - Public Sub ExportEMailsToDriverViaRules(oMail As Outlook.MailItem)

    and it looks like these lines need to be deleted along with the next that goes with for each myitem.

    Set myExplorer = Application.ActiveExplorer
    Set myFolder = myExplorer.CurrentFolder
    If myFolder Is Nothing Then Error 5001
    If Not myFolder.DefaultItemType = olMailItem Then GoTo ExitScript

    'Stop if more than x emails selected
    If myExplorer.Selection.Count > EXM_OPT_MAX_NO Then Error 5002

    'No email selected at all?
    If myExplorer.Selection.Count = 0 Then Error 5003

    Set olSelection = myExplorer.Selection
    For Each myItem In olSelection

    replace the lines above with
    set myitem = oMail
    or replace each instance of myitem with omail.
  11. Nik


    New Member
    Hello Diane!

    it works fine ;-). You can delete the attached file.

    Do you know why the msgbox does not close automatically if the code is insert in VBA editor of outlook?

    Code (Text):
    Copy Source
    Public Sub MsgBoxTimer()
        Dim objShell

        Set objShell = CreateObject("WScript.Shell")
        objShell.PopUp "The e-mails have been exported", 2, "Information", vbInformation
        Set objShell = Nothing
    End Sub
    I would like only to be inform if the rules was processed on the background but without to press "OK" ore similar button.
    This code works but the the msgbox does not close automatically.

    Is this normal in VBA of Outlook or maybe I have an old Windows Script Host?

  12. Nik


    New Member
    Hello Diane!

    Now I have solution and it works fine also in Outlook :

    "Automatically Dismiss a Message Box"

    Code (Text):
    Copy Source
    Sub MessageBoxTimer()
        Dim AckTime As Integer, InfoBox As Object
        Set InfoBox = CreateObject("WScript.Shell")
        'Set the message box to close after 2 seconds
        AckTime = 2
        Select Case InfoBox.Popup("Click OK (this window closes automatically after 2 seconds).", _
        AckTime, "This is your Message Box", 0)
            Case 1, -1
                Exit Sub
        End Select
    End Sub
    Thank you ;-)

    Diane Poremsky likes this.

Share This Page