【问题标题】:Pasting Multiple Excel Charts One Per Row with VBA in Outlook在 Outlook 中使用 VBA 每行粘贴多个 Excel 图表
【发布时间】:2022-01-06 17:05:53
【问题描述】:

我正在尝试将多个图表从 Excel 复制到 Outlook 中,每个图表都作为位图,并且每个图表都位于同一行且大小相同。下面的代码循环复制每个图表并将它们作为位图成功粘贴到 Outlook 中。但是,它们都出现在每个旁边,根据大小连续 1-3 个。我尝试添加 vbNewLine、vbCrLF 和 <br> 以及其他一些,但它们都删除了所有图表。关于如何将每个图表放在自己的行上以便它们垂直堆叠在电子邮件中并且大小相同的任何想法?这是代码。提前致谢:

Public Sub EmailCharts()
    Dim Sht As Excel.Worksheet
    Set Sht = ThisWorkbook.ActiveSheet

    Dim OutApp As Object
    Set OutApp = CreateObject("Outlook.Application")

    Dim outMail As Object
    Set outMail = OutApp.CreateItem(0)

    Dim vInspector As Object
    Set vInspector = outMail.GetInspector

    Dim wEditor As Object
    Set wEditor = vInspector.WordEditor

    Dim objChart As Excel.ChartObject
 
    With outMail
        .Display
        .to = "abc@xyz.com"
        .BCC = "abc@xyz.com"
        .Subject = "Subject"
            
            For Each objChart In Sht.ChartObjects
            objChart.CopyPicture (xlBitmap)
            .HTMLBody = wEditor.Range(0, 0).Paste
            Next
    End With

    Set outMail = Nothing
    Set OutApp = Nothing
End Sub

【问题讨论】:

    标签: excel vba outlook ms-word


    【解决方案1】:

    在您的代码中,您在处理 MailItem 正文时混合了不同的方法。

    .HTMLBody = wEditor.Range(0, 0).Paste
    

    Word 对象模型中的Range.Paste 方法不返回任何可分配给HTMLBody 属性的HTML 字符串。因此,您需要使用一个或另一个,但不能同时使用两个。我认为 Word 对象模型使用起来要简单得多(Paste 方法),您只需为每个图像选择不同的位置。

    Outlook 对象模型支持自定义邮件正文的三种主要方式:

    1. Body 属性返回或设置表示 Outlook 项目的明文正文的字符串。
    2. MailItem 类的HTMLBody 属性返回或设置表示指定项的 HTML 正文的字符串。设置HTMLBody 属性将始终立即更新Body 属性。例如:
         Sub CreateHTMLMail() 
           'Creates a new e-mail item and modifies its properties. 
           Dim objMail As Outlook.MailItem 
           'Create e-mail item 
           Set objMail = Application.CreateItem(olMailItem) 
           With objMail 
            'Set body format to HTML 
            .BodyFormat = olFormatHTML 
            .HTMLBody = "<HTML><BODY>Enter the message <a href="http://google.com">text</a> here. </BODY></HTML>" 
            .Display 
           End With 
         End Sub
    
    1. Word 对象模型可用于处理消息体。请参阅Chapter 17: Working with Item Bodies 了解更多信息。

    请注意,MailItem.BodyFormat 属性允许您以编程方式更改用于项目正文的编辑器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多