excel - 如何将格式化文本从 Word 文档复制到富文本格式电子邮件正文?

标签 excel vba outlook ms-word

此宏以富文本格式草拟电子邮件。 (在这种情况下,HTML 正文不是我的选择。)
我需要使用默认文本和放置在电子邮件中间的两个附件来填充电子邮件的正文。 (路径 1 和路径 2)。
我发现使用 RTF 格式化正文文本不如 HTML 直观。从动态 Word 文档中复制电子邮件正文似乎是一个不错的解决方案。
(我并没有编写大部分代码,只是为了这个目的而尝试改进它。)

Option Explicit
Function send_mail_rich_text(ByVal send_to As String, ByVal 
    mail_subject As String, ByVal mail_content As Range, ByVal 
    cc_list As String)

    Dim oOlApp As Object    ' Outlook.Application
    Dim oOlMItem As Object  ' Outlook.MailItem
    Dim oWdDoc As Object    ' Word.Document
    
    Dim Path1 As String
    Dim Path2 As String
    
    Path1 = "C:\Users\DegenTrader\Desktop\Wallet Allocations 42069xD.xlxs"
    Path2 = "C:\Users\DegenTrader\Desktop\Hash Rate Info.xlsx"
    
    Err.Clear

    Set oOlApp = CreateObject("Outlook.Application")
    Set oOlMItem = oOlApp.CreateItem(olMailItem)

    ' Range can be copied directly as given as Range via function call
    'mail_content.Copy

    ' On Error Resume Next   ' activate it after debugging
    With oOlMItem
        .To = send_to
        .Subject = mail_subject
        .BodyFormat = 3 ' 3=RichTextFormat

        'Set oWdDoc = .GetInspector.WordEditor

        ' by this you paste below your signature
        ' oWdDoc.Paragraphs(oWdDoc.Paragraphs.Count).Range.Paste

        .Display
    End With

    Application.CutCopyMode = False

    If Err.Number <> 0 Then
        send_mail_rich_text = "error"
    ElseIf oOlMItem.Sent = True Then
        send_mail_rich_text = "sent"
    Else
        send_mail_rich_text = "no error, but not sent"
    End If
End Function

Sub TestSendmailFunction()
    Debug.Print send_mail_rich_text("shiba.inu@DogeCoin.com", "HODL- To the Moon!", ActiveSheet.Range("B2:C3"), "Cheems@reddit.com")
End Sub

最佳答案

要添加附件,您可以使用 Attachments.AddAttachments 中创建新附件的方法收藏。例如:

Sub AddAttachment() 
 Dim myItem As Outlook.MailItem 
 Dim myAttachments As Outlook.Attachments 
 
 Set myItem = Application.CreateItem(olMailItem) 
 Set myAttachments = myItem.Attachments 
 myAttachments.Add "C:\Test.doc", _ 
 olByValue, 3, "Test" 
 myItem.Display 
End Sub
Position参数仅适用于使用富文本格式的电子邮件:它是附件应放置在邮件正文中的位置。 Position 参数的值为 1 指定附件应位于邮件正文的开头。大于电子邮件项目正文中字符数的值“n”指定附件应放在末尾。值 0 使附件隐藏。
要发送电子邮件,您需要替换 Display使用 Send 的方法一。

关于excel - 如何将格式化文本从 Word 文档复制到富文本格式电子邮件正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70975484/

相关文章:

c# - AddPicture 有替代品吗? (C#,Epplus)

类中的 VBA 类型?多个输出变量的替代品?

vba - 如何使用空白单元格作为引用来执行 sumif?

VBA 宏循环在特定列中显示值

vba - 通过 VBA 在 Outlook 的内部浏览器中打开网站

c# - Electron 可以用来创建 Outlook 插件吗?

excel - 计算同一工作簿中不同工作表中不同列中特定颜色文本的单元格

excel - 仅在 Excel 中为最后一列到最后一行和最后一行到最后一列的单元格着色

sql - Excel VBA - 如何从 SQL 查询中填充数组

c# - 将 Outlook htmlbody 从右向左对齐