如何将选择的电子邮件从 RichText 转换为 HTML 格式? [英] How can I convert a selection of emails from RichText to HTML Format?

查看:33
本文介绍了如何将选择的电子邮件从 RichText 转换为 HTML 格式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

背景:我的工作地点的默认电子邮件格式为 RichText.许多人在他们的电子邮件中添加图片.带有图像的 RichText 电子邮件比带有图像的 HTML 电子邮件大得多.

Background: My work location has a default email format of RichText. Many people are adding images to their emails. RichText emails with images are much larger than HTML emails with images.

我可以手动打开、编辑、将格式更改为 HTML 并保存以大大减小电子邮件的大小.格式在转换过程中保持不变.

I can manually open, edit, changed format to HTML, and save to greatly reduce the size of the email. The formatting is maintained during conversion.

但是,当我使用 VBA 打开邮件项目,更改格式并保存时,电子邮件并未转换.

However, when I use VBA to open the mail item, change the format and save, the email is not converted.

如何使用 vba 将一组 Richtext 电子邮件更改为格式正确的 html 电子邮件,达到与使用功能区手动编辑和保存相同的结果?

How can I use vba to change a set of Richtext emails into properly formatted html emails, achieving the same results as manually editing and saving using the Ribbon?

下面是我的示例代码,当我运行代码时可以看到这一行:

Here is my sample code below, and I can see when I run the code that this line:

myMailItem.BodyFormat = olFormatHTML

与功能区的转换方式不同.

is not converting in the same way that the Ribbon is converting.

Public Sub myConvertHTML()

    Dim mySelectedItems As Selection
    Dim myMailItem As MailItem
    Dim myRichText As String
    Dim myHtmlText As String


    ' Set reference to the Selection.
    Set mySelectedItems = ActiveExplorer.Selection

    ' Loop through each item in the selection.
    For Each myMailItem In mySelectedItems

        'if the current format is RichText proceed
        If myMailItem.BodyFormat = olFormatRichText Then

            myMailItem.Display

            'this line does not convert the RichText to Html properly
            'it seems to convert the images into an attached file ATT#### that is an ole object
            'instead of converting the image and using it in html format
            'when using the Ribbon and changing the format to HTML,
            'the email is converted and formatting maintained
            myMailItem.BodyFormat = olFormatHTML

            myMailItem.Save
            myMailItem.Close olSave


        Else
            MsgBox "Already in RichText Format: " & myMailItem.Subject, vbInformation

        End If

    Next

    MsgBox "All Done. Email converted to HTML.", vbOKOnly, "Message"

    Set mySelectedItems = Nothing
    Set myMailItem = Nothing

End Sub

我尝试从 VBA 内部操作 Ribbon,但我一直无法弄清楚如何调用 Ribbon 元素

I tried manipulating the Ribbon from inside VBA, but I have not been able to figure out how to call the Ribbon element

(Format Text/Format/HTML).

感谢任何建议.

感谢 Niton,这是我的最终解决方案.

Thanks to Niton here is my working final solution.

Public Sub myConvertHTML002()
'takes selected list of items in Outlook and converts all mailItems that are RichText into HTML Format

    Dim mySelectedObjects As Selection
    Dim myObject As Object
    Dim myMailItem As MailItem

    Dim objItem As Object

    ' Set reference to the Selection.
    Set mySelectedObjects = ActiveExplorer.Selection

    ' Loop through each item in the selection.
    For Each myObject In mySelectedObjects

        If myObject.Class = olMail Then

            Set myMailItem = myObject

            'if the current format is RichText proceed
            If myMailItem.BodyFormat = olFormatRichText Then

                'have to display the email so we can use the command bars
                myMailItem.Display

                'special code because we can't change the format of the item from within the item
                'we have to use the ActiveInspector
                On Error Resume Next
                Set objItem = ActiveInspector.CurrentItem
                On Error GoTo 0

                If Not objItem Is Nothing Then
                    If objItem.Class = olMail Then
                        ActiveInspector.CommandBars.ExecuteMso ("EditMessage")
                        ActiveInspector.CommandBars.ExecuteMso ("MessageFormatHtml")
                    End If
                End If

                myMailItem.Close olSave

            Else

                'MsgBox "Already in RichText Format: " & myMailItem.Subject, vbInformation

            End If

        End If

    Next

    MsgBox "All Done. Email converted to HTML.", vbOKOnly, "Message"

    Set mySelectedItems = Nothing
    Set myMailItem = Nothing

End Sub

推荐答案

您可以使用 ExecuteMso 单击按钮.

You can click a button with ExecuteMso.

CommandBars.ExecuteMso 方法适用于内置按钮的控件......"

CommandBars.ExecuteMso Method "Works on controls that are built-in buttons..."

Sub ChangeToHTML()
Dim objItem As Object
Dim objMail As mailitem

On Error Resume Next
Set objItem = ActiveInspector.currentItem
On Error GoTo 0

If Not objItem Is Nothing Then
    If objItem.Class = olMail Then
        ActiveInspector.CommandBars.ExecuteMso ("MessageFormatHtml")
    End If
End If

End Sub

当您为快速访问工具栏或功能区添加内置按钮时,将鼠标悬停在所选内容上时,您可以看到 MessageFormatHtml(IdMso)作为最后一位文本.

You can see MessageFormatHtml, the IdMso, as the last bit of text when you hover over the selection when adding a built-in button for the Quick Access Toolbar or a ribbon.

这篇关于如何将选择的电子邮件从 RichText 转换为 HTML 格式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆