Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将格式化的Excel区域粘贴到Outlook邮件中_Excel_Vba_Outlook - Fatal编程技术网

将格式化的Excel区域粘贴到Outlook邮件中

将格式化的Excel区域粘贴到Outlook邮件中,excel,vba,outlook,Excel,Vba,Outlook,我想将一系列格式化的Excel单元格粘贴到Outlook邮件中 下面的代码(我从各种源代码中提取)运行时没有错误,并发送一条空消息 Sub SendMessage(SubjectText As String, Importance As OlImportance) Dim objOutlook As Outlook.Application Dim objOutlookMsg As Outlook.MailItem Dim objOutlookRecip As Outlook.Recipient

我想将一系列格式化的Excel单元格粘贴到Outlook邮件中

下面的代码(我从各种源代码中提取)运行时没有错误,并发送一条空消息

Sub SendMessage(SubjectText As String, Importance As OlImportance)
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment
Dim iAddr As Integer, Col As Integer, SendLink As Boolean
'Dim Doc As Word.Document, wdRn As Word.Range
Dim Doc As Object, wdRn As Object

' Create the Outlook session.
Set objOutlook = CreateObject("Outlook.Application")
' Create the message.
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

Set Doc = objOutlookMsg.GetInspector.WordEditor
'Set Doc = objOutlookMsg.ActiveInspector.WordEditor
Set wdRn = Doc.Range
wdRn.Paste

Set objOutlookRecip = objOutlookMsg.Recipients.Add("MyAddress@MyDomain.com")
objOutlookRecip.Type = 1
objOutlookMsg.Subject = SubjectText
objOutlookMsg.Importance = Importance

With objOutlookMsg
    For Each objOutlookRecip In .Recipients
        objOutlookRecip.Resolve
        ' Set the Subject, Body, and Importance of the message.
        '.Subject = "Coverage Requests"
        'objDrafts.GetFromClipboard
    Next
    .Send
End With
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End Sub

我认为在完成所有更改后,您需要调用您的邮件项目(objOutlookMsg)。

excel中有一个按钮可以执行此操作,“发送到邮件收件人”通常不在功能区上

也可以使用VBA中的邮件信封使用office内置的简单mapi


。。这是一篇很好的文章,介绍了您要做的事情

将.Display放在.Send之前

简单但快速的解决方法,你的问题是电子邮件在发送前没有刷新粘贴的内容,强迫它先显示给它时间


还要确保在此之前运行另一个宏,以便将范围复制到剪贴板中…

Steph,请不要交叉张贴;此问题将自动迁移。如果在堆栈溢出时注册帐户,并在用户配置文件中关联帐户,则在问题迁移后,您将保留该问题的所有权。是否确实将objOutlookMsg.BodyFormat初始化为“Outlook.OlBodyFormat.olFormatRichText”或“Outlook.OlBodyFormat.olFormatHTML”?在其他格式中,粘贴将不起作用。相关: