One of the options for implementing the task is as follows:
- Analysis of recipients whose letters are to be saved in HTML format is produced using the built-in MS Outlook rules engine;
- Saving letters in HTML format is done using a macro.
In detail.
1. Create a macro code that saves letters in HTML format. Details in the comments:
Option Explicit ' ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° ' ΡΠ°ΠΉΠ»Ρ /ΠΏΠ°ΠΏΠΊΠΈ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ' Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠ»Ρ / ΠΏΠ°ΠΏΠΊΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅ Sub MailSaveToHTML(myItem As Outlook.MailItem) Dim sName As String ' ΠΈΠΌΡ ΠΏΠ°ΠΏΠΊΠΈ, ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° = ΡΠ΅ΠΌΠ΅ ΠΏΠΈΡΡΠΌΠ° Dim sSaveFolder As String ' ΠΏΠ°ΠΏΠΊΠ° Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΈΡΡΠΌΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ HTML Dim sFilesFolder As String ' Π΅ΡΠ»ΠΈ ΠΏΠΈΡΡΠΌΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠΎ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ <sName.files> Dim oAttchmnt As Outlook.Attachment sName = myItem.Subject sName = sReplacedSymbols(sName, "_") ' ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΠΈΠΌΠ΅Π½Π°Ρ
ΡΠ°ΠΉΠ»ΠΎΠ²/ΠΏΠ°ΠΏΠΎΠΊ sSaveFolder = CStr(Environ("USERPROFILE")) + "\Documents\" sFilesFolder = sSaveFolder + sName + ".files" ' ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠΎΠ²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ If TypeName(myItem) = "MailItem" Then ' Π΅ΡΠ»ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π² ΠΏΠΈΡΡΠΌΠΎ, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π° Π² ΠΏΠ°ΠΏΠΊΡ sFilesFolder Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ HTML myItem.SaveAs sSaveFolder + sName + ".htm", olHTML ' Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π²ΡΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΡ sFilesFolder ' Π΅ΡΠ»ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π² ΠΏΠΈΡΡΠΌΠΎ, ΡΠΎ ΠΏΠ΅ΡΠΎΠ²Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ image001.jpg (ΠΈ. Ρ. 002, 003 Π΅ΡΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ) ' ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ For Each oAttchmnt In myItem.Attachments oAttchmnt.SaveAsFile sFilesFolder + "\" + oAttchmnt.FileName 'MsgBox (oAttchmnt.FileName) Next Else 'Π²ΡΠ΅ ΠΏΡΠΎΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (Π·Π°Π΄Π°ΡΠΈ, Π²ΡΡΡΠ΅ΡΠΈ ΠΈ Ρ.ΠΏ. Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ) MsgBox ("Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠΎΠ²ΡΠΌ") End If End Sub ' ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
Π² ΠΈΠΌΠ΅Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²/ΠΏΠ°ΠΏΠΎΠΊ Π²Π·ΡΡ Ρ ' http://www.mrexcel.com/forum/general-excel-discussion-other-questions/714054-macro-save-selected-outlook-2010-email-folder-msg-file.html Function sReplacedSymbols(sStr As String, sSmbl As String) As String sReplacedSymbols = sStr sReplacedSymbols = Replace(sReplacedSymbols, "/", sSmbl) sReplacedSymbols = Replace(sReplacedSymbols, "\", sSmbl) sReplacedSymbols = Replace(sReplacedSymbols, ":", sSmbl) sReplacedSymbols = Replace(sReplacedSymbols, "?", sSmbl) sReplacedSymbols = Replace(sReplacedSymbols, Chr(34), sSmbl) sReplacedSymbols = Replace(sReplacedSymbols, "<", sSmbl) sReplacedSymbols = Replace(sReplacedSymbols, ">", sSmbl) sReplacedSymbols = Replace(sReplacedSymbols, "|", sSmbl) End Function
2.We create a rule that runs a macro on certain conditions (in our case, from certain recipients):
2.1.Main-Rules-Create rule ...

2.2.Creating-Rules.

2.3.Master Rules-Run the script. Select the MailSaveToHTML script from the list.

2.4. Rules Wizard - Completing Rules Setting

2.5.Rules and alerts

- Use options:
3.1.Activate the rule. At the time of receiving letters from the recipients specified in the Rule, a macro will be executed. When testing the receipt of letters from the yandex.ru mailbox with file attachments, even if their volumes are insignificant, no export occurs. Macro runs faster than files are loaded. As a solution - to set the delay execution of the macro.
3.2. For example, enforce the rule for accepted and unread letters. The macro works correctly. 